:root{
  --ink:#1a1a2e; --ink-soft:#5a5a7a; --line:#e6e2f2; --paper:#f7f5fb;
  --red:#ef4b4b; --red-d:#c73131; --purple:#7a4db8; --green:#2f9e44; --amber:#e0a526;
  --radius:12px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--paper);line-height:1.55;font-size:15px;-webkit-font-smoothing:antialiased;}
a{color:inherit;}
img{max-width:100%;display:block;}
input,button,textarea{font-family:inherit;font-size:15px;}

/* Brand */
.brand{font-weight:900;font-size:20px;letter-spacing:-.4px;color:#fff;display:flex;align-items:baseline;gap:7px;}
.brand b{color:#ffd23f;}
.brand span{font-weight:600;font-size:12px;letter-spacing:1px;text-transform:uppercase;opacity:.6;}
.brand-lg{color:var(--ink);font-size:24px;justify-content:center;margin-bottom:6px;}
.brand-lg b{color:var(--red);}
.brand-lg span{color:var(--ink-soft);}

/* Layout */
.layout{display:flex;min-height:100vh;}
.sidebar{width:248px;flex:0 0 248px;background:#1a1a2e;color:#c8c4dc;display:flex;flex-direction:column;padding:22px 16px;position:sticky;top:0;height:100vh;}
.sidebar .brand{padding:0 8px 18px;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:14px;}
.menu{display:flex;flex-direction:column;gap:3px;flex:1;}
.menu-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;text-decoration:none;color:#c8c4dc;font-weight:600;transition:background .15s,color .15s;}
.menu-link:hover{background:rgba(255,255,255,.07);color:#fff;}
.menu-link.is-active{background:var(--red);color:#fff;}
.menu-link .ic{font-size:16px;}
.menu-group{margin-top:6px;}
.menu-group-label{display:flex;align-items:center;gap:10px;padding:10px 12px 4px;font-weight:700;font-size:12.5px;letter-spacing:.5px;text-transform:uppercase;opacity:.55;}
.menu-link.sub{margin-left:18px;font-weight:500;padding:8px 12px;}
.logout{margin-top:14px;padding-top:14px;border-top:1px solid rgba(255,255,255,.1);}
.logout button{width:100%;background:transparent;border:1px solid rgba(255,255,255,.2);color:#c8c4dc;padding:9px;border-radius:10px;cursor:pointer;transition:.15s;}
.logout button:hover{background:rgba(255,255,255,.08);color:#fff;}

/* Content */
.content{flex:1;padding:32px 40px;max-width:1100px;}
.page-head{margin-bottom:22px;}
.page-head h1{font-size:1.7rem;font-weight:800;letter-spacing:-.5px;}
.muted{color:var(--ink-soft);margin-top:4px;}

/* Alerts */
.alert{padding:11px 16px;border-radius:10px;margin-bottom:18px;font-weight:600;}
.alert.ok{background:#e7f6ec;color:#1b6e35;border:1px solid #b6e0c4;}
.alert.err{background:#fdeaea;color:#a52121;border:1px solid #f3c4c4;}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 20px;border-radius:10px;font-weight:700;border:none;cursor:pointer;text-decoration:none;transition:.15s;background:#ece8f6;color:var(--ink);}
.btn:hover{background:#e0daf0;}
.btn-primary{background:var(--red);color:#fff;}
.btn-primary:hover{background:var(--red-d);}
.btn-sm{padding:7px 12px;font-size:13px;border-radius:8px;}

/* Empty state */
.empty-state{text-align:center;color:var(--ink-soft);padding:60px 20px;background:#fff;border:1px dashed var(--line);border-radius:var(--radius);}
.empty-emoji{font-size:40px;margin-bottom:10px;}

/* Login */
.login-body{display:grid;place-items:center;min-height:100vh;background:#1a1a2e;}
.login-card{background:#fff;border-radius:18px;padding:34px 30px;width:min(92vw,360px);display:flex;flex-direction:column;gap:14px;box-shadow:0 24px 60px rgba(0,0,0,.4);}
.login-card label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13.5px;color:var(--ink-soft);}
.login-card input{padding:11px 13px;border:2px solid var(--line);border-radius:10px;}
.login-card input:focus{outline:none;border-color:var(--purple);}
.login-card .btn{margin-top:6px;}

/* Uploader */
.uploader{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px;}
.file{position:relative;overflow:hidden;display:inline-flex;align-self:flex-start;}
.file input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}
.file span{display:inline-block;padding:10px 18px;border:2px dashed var(--purple);border-radius:10px;color:var(--purple);font-weight:700;cursor:pointer;}
.file:hover span{background:#f3eefb;}
.uploader .hint{color:var(--ink-soft);font-size:13px;}
.count-line{color:var(--ink-soft);margin-bottom:16px;}

/* Progress bar nahrávania */
.upbar{margin:-2px 0 18px;}
.upbar-track{height:14px;background:#ece8f6;border:1px solid var(--line);border-radius:999px;overflow:hidden;}
.upbar-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--purple),var(--red));transition:width .2s ease;}
.upbar-meta{display:flex;justify-content:space-between;align-items:center;margin-top:7px;font-size:13px;font-weight:700;color:var(--ink-soft);}
.upbar-meta .upbar-pct{color:var(--purple);}
.upbar.is-done .upbar-fill{background:var(--green);}
.upbar.is-error .upbar-fill{background:var(--red);}
.upbar.is-error .upbar-label{color:var(--red);}

/* Photo grid */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;}
.photo-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;}
.photo-card.is-off{opacity:.6;}
.thumb{position:relative;aspect-ratio:4/3;background:#eee;}
.thumb img{width:100%;height:100%;object-fit:cover;}
.thumb.video-thumb video{width:100%;height:100%;object-fit:cover;background:#000;}
.thumb.video-thumb{background:#000;}
.play-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:46px;height:46px;border-radius:50%;background:rgba(239,75,75,.92);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;padding-left:3px;box-shadow:0 4px 14px rgba(0,0,0,.35);pointer-events:none;}
.badge-off{position:absolute;top:8px;left:8px;background:rgba(26,26,46,.8);color:#fff;font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px;}
.alt-form{display:flex;gap:6px;padding:10px;}
.alt-form input{flex:1;min-width:0;padding:7px 10px;border:1px solid var(--line);border-radius:8px;}
.alt-form input:focus{outline:none;border-color:var(--purple);}
.card-actions{display:flex;gap:6px;padding:0 10px 10px;}
.card-actions form{flex:0 0 auto;}
.ic-btn{width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;font-size:15px;transition:.15s;}
.ic-btn:hover:not(:disabled){background:var(--paper);border-color:var(--purple);}
.ic-btn:disabled{opacity:.35;cursor:default;}
.ic-btn.danger:hover{background:#fdeaea;border-color:var(--red);}

/* Oznamy — zoznam */
.news-list{display:flex;flex-direction:column;gap:10px;}
.news-row{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;}
.news-thumb{width:84px;height:60px;flex:0 0 auto;border-radius:8px;overflow:hidden;background:#eee;display:grid;place-items:center;}
.news-thumb img{width:100%;height:100%;object-fit:cover;}
.news-thumb .no-img{font-size:11px;color:var(--ink-soft);}
.news-info{flex:1;min-width:0;}
.news-row-title{font-weight:700;}
.news-row-meta{display:flex;gap:8px;align-items:center;margin-top:4px;font-size:13px;color:var(--ink-soft);}
.chip{background:#ece8f6;color:var(--purple);border-radius:999px;padding:2px 9px;font-weight:700;font-size:12px;}
.chip.off{background:#fdeaea;color:var(--red);}
.chip-admin{background:#fdeaea;color:var(--red);}
.chip-spravca{background:#e7f6ec;color:var(--green);}
.news-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;}

/* Súbory — prehľad médií + použitia */
.files-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.fs-stat{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:13px;color:var(--ink-soft);}
.fs-stat b{color:var(--ink);font-size:15px;}
.fs-stat.is-warn{background:#fdeaea;border-color:#f3c4c4;}
.fs-stat.is-warn b{color:var(--red-d);}
.files-list .news-row{align-items:flex-start;}
.file-dir{font-family:monospace;font-size:12px;background:#f3eefb;color:var(--purple);border-radius:6px;padding:1px 7px;}
.file-usages{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.file-usages .chip{background:#e7f6ec;color:var(--green);}
.file-usages .chip.off{background:#fdeaea;color:var(--red);}

/* Dokumenty — formát badge + kategórie */
.doc-badge{width:54px;height:54px;flex:0 0 auto;border-radius:10px;background:var(--red);color:#fff;display:grid;place-items:center;font-weight:800;font-size:12px;letter-spacing:.5px;}
.doc-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px;}
.cat-add{display:flex;gap:8px;}
.cat-add input{padding:9px 12px;border:2px solid var(--line);border-radius:9px;min-width:240px;}
.doc-cat{margin-bottom:22px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff;}
.doc-cat-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:#f3eefb;padding:12px 16px;border-bottom:1px solid var(--line);}
.doc-cat .news-row{border:none;border-radius:0;border-bottom:1px solid var(--line);background:#fff;}
.doc-cat .news-row:last-child{border-bottom:none;}
.cat-rename{display:flex;gap:8px;align-items:center;}
.cat-rename input{padding:8px 11px;border:2px solid var(--line);border-radius:8px;font-weight:700;min-width:200px;}
.doc-cat-title{font-weight:800;}
.fld select{font-family:inherit;font-size:15px;padding:10px 12px;border:2px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);}
.fld select:focus{outline:none;border-color:var(--purple);}

/* Povinné zverejňovanie — filter + typové badge */
.disc-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.disc-filter select{font-family:inherit;font-size:14px;padding:9px 12px;border:2px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);}
.disc-filter input{padding:9px 12px;border:2px solid var(--line);border-radius:9px;min-width:240px;font-family:inherit;}
.disc-filter select:focus,.disc-filter input:focus{outline:none;border-color:var(--purple);}
.disc-badge{font-size:11px;line-height:1.1;text-align:center;letter-spacing:0;padding:4px;}
.disc-badge.disc-contract{background:var(--purple);}
.disc-badge.disc-invoice{background:var(--red);}
.disc-badge.disc-order{background:var(--green);}

/* Náš tím — náhľady v zozname */
.person-thumb{width:54px;height:54px;flex:0 0 auto;border-radius:50%;overflow:hidden;background:#ece8f6;display:grid;place-items:center;}
.person-thumb img{width:100%;height:100%;object-fit:cover;}
.person-thumb .ini{font-weight:800;color:var(--purple);font-size:15px;}
.board-dot{width:24px;height:24px;border-radius:50%;flex:0 0 auto;border:2px solid rgba(0,0,0,.08);}
.board-dot.dot-1{background:#ef4b4b;}.board-dot.dot-2{background:#3aa0e0;}.board-dot.dot-3{background:#5fb55f;}
.board-dot.dot-4{background:#9b6cd6;}.board-dot.dot-5{background:#ff9f1c;}.board-dot.dot-6{background:#ffd23f;}

/* Stránkovanie v admine */
.admin-pager{display:flex;justify-content:center;gap:6px;margin-top:22px;flex-wrap:wrap;}
.admin-pager .page-btn{min-width:36px;height:36px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink-mid);font-weight:700;text-decoration:none;transition:.15s;}
.admin-pager .page-btn:hover{border-color:var(--purple);color:var(--purple);}
.admin-pager .page-btn.is-active{background:var(--purple);color:#fff;border-color:var(--purple);}
.admin-pager .page-btn.is-disabled{opacity:.4;pointer-events:none;}

/* Oznamy — formulár */
.news-form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;max-width:680px;display:flex;flex-direction:column;gap:16px;}
.news-form.wide{max-width:1000px;}
.form-col-main,.form-col-side{display:flex;flex-direction:column;gap:16px;min-width:0;}
@media(min-width:760px){
  .news-form.wide{display:grid;grid-template-columns:1.25fr 1fr;gap:18px 28px;align-items:start;}
  .news-form.wide .upbar,.news-form.wide .form-buttons{grid-column:1 / -1;}
  .news-form.wide .form-col-main{height:100%;}
  .news-form.wide .fld-grow{flex:1;}
  .news-form.wide .fld-grow textarea{flex:1;min-height:220px;}
}
.side-gallery{display:flex;flex-direction:column;}
.side-thumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.side-thumb{position:relative;aspect-ratio:1;border-radius:9px;overflow:hidden;border:1px solid var(--line);}
.side-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.side-thumb-del{position:absolute;top:4px;right:4px;width:22px;height:22px;border:none;border-radius:50%;background:rgba(20,16,40,.62);color:#fff;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s;}
.side-thumb-del:hover{background:var(--red);}
.side-thumb-del:disabled{opacity:.5;cursor:default;}
.fld{display:flex;flex-direction:column;gap:6px;font-weight:700;font-size:14px;color:var(--ink-mid);}
.fld input[type=text],.fld input[type=date],.fld input[type=email],.fld .pw-wrap input,.fld textarea{font-family:inherit;font-size:15px;padding:10px 12px;border:2px solid var(--line);border-radius:9px;color:var(--ink);font-weight:400;}
.fld input:focus,.fld textarea:focus{outline:none;border-color:var(--purple);}
.fld textarea{resize:vertical;}
.fld .hint{font-weight:400;font-size:12.5px;color:var(--ink-soft);}

/* Heslo s tlačidlom oka (zobraziť/skryť) */
.pw-wrap{position:relative;display:block;width:100%;}
.pw-wrap input{width:100%;box-sizing:border-box;padding-right:46px !important;}
.pw-eye{position:absolute;top:50%;right:7px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--ink-soft);padding:5px;line-height:0;border-radius:7px;}
.pw-eye:hover{color:var(--purple);background:rgba(0,0,0,.04);}
.pw-eye .eye-off{display:none;}
.pw-eye.is-on .eye-on{display:none;}
.pw-eye.is-on .eye-off{display:inline;}
.login-card .pw-wrap input{width:100%;box-sizing:border-box;padding-right:46px !important;}
.login-link{text-align:center;font-size:13.5px;color:var(--ink-soft);text-decoration:none;margin-top:2px;}
.login-link:hover{color:var(--purple);text-decoration:underline;}

/* Blok „obnova hesla cez e-mail" v users-form */
.reset-send{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;max-width:680px;margin-top:18px;}
.reset-send h3{margin:0 0 6px;font-size:16px;}
.reset-send p{margin:0 0 12px;}
.cover-preview img{max-width:200px;border-radius:9px;border:1px solid var(--line);margin-bottom:6px;display:block;}
.form-buttons{display:flex;gap:10px;}

/* Nastavenia — efekt karty */
.setting-block{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;max-width:680px;}
.setting-title{font-size:1.05rem;font-weight:800;margin-bottom:14px;}
.effect-grid{display:flex;flex-direction:column;gap:10px;margin-bottom:20px;}
.effect-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:2px solid var(--line);border-radius:11px;cursor:pointer;transition:border-color .15s,background .15s;}
.effect-card:hover{border-color:var(--purple);background:var(--paper);}
.effect-card.is-selected{border-color:var(--purple);background:#f3eefb;box-shadow:inset 0 0 0 1px var(--purple);}
.effect-card input{accent-color:var(--purple);width:18px;height:18px;flex:0 0 auto;}
.effect-emoji{font-size:26px;flex:0 0 auto;}
.effect-text{display:flex;flex-direction:column;}
.effect-label{font-weight:700;}
.effect-desc{font-size:13px;color:var(--ink-soft);}

/* Späť na web — vždy v sidebare */
.back-to-site{margin-bottom:10px;background:rgba(255,255,255,.06);font-weight:700;justify-content:flex-start;}
.back-to-site:hover{background:rgba(255,255,255,.13);color:#fff;}

/* Mobilný topbar + off-canvas drawer (skryté na desktope) */
.admin-topbar{display:none;}
.admin-drawer-close{display:none;}
.admin-backdrop{position:fixed;inset:0;z-index:65;background:rgba(10,8,24,.5);opacity:0;transition:opacity .28s ease;}
.admin-backdrop.open{opacity:1;}

@media(max-width:860px){
  .admin-topbar{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:60;background:#1a1a2e;padding:11px 16px;}
  .admin-topbar .brand{padding:0;border:none;margin:0;}
  .admin-burger{display:flex;align-items:center;gap:9px;background:transparent;border:none;color:#fff;cursor:pointer;font:inherit;padding:6px 2px;}
  .admin-burger-text{font-weight:800;letter-spacing:1px;font-size:14px;}
  .admin-burger-icon{display:inline-flex;flex-direction:column;gap:4px;width:24px;}
  .admin-burger-icon span{height:3px;border-radius:2px;background:#fff;transition:.2s;}

  .layout{flex-direction:column;}
  .content{padding:20px 16px;max-width:none;}

  .sidebar{position:fixed;top:0;right:0;bottom:0;left:auto;height:100vh;width:84vw;max-width:330px;flex:none;z-index:70;transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;box-shadow:-8px 0 26px rgba(0,0,0,.4);}
  .sidebar.open{transform:translateX(0);}
  .sidebar .brand{display:flex;align-items:center;}
  .admin-drawer-close{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;width:32px;height:32px;border:none;background:transparent;color:#c8c4dc;font-size:28px;line-height:1;cursor:pointer;}
  .menu-link{padding:12px 12px;}

  /* People zoznamy (Zamestnanci, Rada školy): akcie pod meno+popis */
  .people-list .news-row{flex-wrap:wrap;align-items:flex-start;}
  .people-list .news-actions{flex:0 0 100%;width:100%;margin-top:10px;flex-wrap:wrap;justify-content:flex-start;}
  .people-list .news-actions .ic-btn,
  .people-list .news-actions .btn.btn-sm{min-height:40px;min-width:40px;display:inline-flex;align-items:center;justify-content:center;}

  /* Povinné zverejňovanie — kartový layout na mobile (čitateľný) */
  .disc-list{gap:12px;}
  .disc-list .news-row{flex-wrap:wrap;align-items:flex-start;gap:10px 12px;padding:14px;}
  .disc-list .disc-badge{width:auto;height:auto;min-height:0;flex:0 0 auto;border-radius:999px;padding:5px 12px;font-size:12px;line-height:1.2;}
  .disc-list .news-info{flex:1 1 0;min-width:0;}
  .disc-list .news-row-title{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word;line-height:1.35;}
  .disc-list .news-row-meta{flex-wrap:wrap;row-gap:6px;margin-top:8px;}
  .disc-list .news-row-meta .chip{white-space:normal;word-break:break-word;}
  .disc-list .news-actions{flex:0 0 100%;width:100%;margin-top:4px;padding-top:12px;border-top:1px solid var(--line);flex-wrap:wrap;justify-content:flex-start;gap:8px;}
  .disc-list .news-actions form{display:inline-flex;}
  .disc-list .news-actions .ic-btn,
  .disc-list .news-actions .btn.btn-sm{min-height:42px;min-width:42px;display:inline-flex;align-items:center;justify-content:center;font-size:15px;}
  .disc-list .news-actions .btn.btn-sm{padding-left:16px;padding-right:16px;}

  /* Filter na mobile — inputy na plnú šírku, do stĺpca */
  .disc-filter{flex-direction:column;align-items:stretch;width:100%;}
  .disc-filter select,
  .disc-filter input{width:100%;min-width:0;box-sizing:border-box;}
  .disc-filter .btn{width:100%;}
}
