/* public/admin/admin-shell.css — štýly kostry administrácie (bočný panel,
   karty, tabuľky, modály, formuláre). Vyňaté z `index.html` bez jedinej
   zmeny obsahu; poradie načítania ostalo rovnaké, takže kaskáda platí tak
   ako predtým: za `admin-cinematic.css` a `admin-responsive.css`, pred
   `calendar.css`.

   Dôvod je ten istý ako pri `calendar.css`: monolit smie už len klesať
   (`npm run check:admin-monolit`). */
:root{--primary:#228B22;--primary-dark:#1a6b1a;--primary-light:#90EE90;--danger:#dc3545;--warning:#ffc107;--info:#17a2b8;--success:#28a745;--dark:#1a1a1a;--gray:#6c757d;--gray-light:#e9ecef;--light:#f8f9fa;--white:#fff;--shadow:0 2px 10px rgba(0,0,0,0.1);--radius:12px}
*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:1rem}body{font-family:'Inter',sans-serif;background:var(--light);min-height:100vh;display:flex;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
::selection{background:var(--primary);color:var(--white)}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.sidebar{width:280px;background:linear-gradient(180deg,var(--dark) 0%,#2d2d2d 100%);color:var(--white);padding:1.5rem;position:fixed;height:100vh;overflow-y:auto;z-index:100}
.sidebar-header{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid rgba(255,255,255,0.1)}
.sidebar-header img{height:50px;filter:brightness(0) invert(1)}.sidebar-header h2{font-size:1rem;font-weight:600}
.sidebar-header small{display:block;font-size:0.75rem;opacity:0.7;margin-top:0.25rem}
.nav-section{margin-bottom:1.5rem}.nav-section-title{font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:rgba(255,255,255,0.85);margin-bottom:0.75rem;padding-left:0.5rem}
.nav-item{display:flex;align-items:center;gap:0.75rem;padding:0.75rem 1rem;border-radius:var(--radius);cursor:pointer;transition:all 0.2s;margin-bottom:0.25rem;font-size:0.9rem}
.nav-item:hover{background:rgba(255,255,255,0.1)}.nav-item.active{background:var(--primary);font-weight:500}
.nav-item:focus-visible{outline:2px solid var(--gold,#d4b170);outline-offset:-2px;background:rgba(255,255,255,0.08)}
.nav-item .icon{width:20px;text-align:center;font-size:1rem}.nav-item .badge{margin-left:auto;background:var(--danger);padding:0.15rem 0.5rem;border-radius:10px;font-size:0.7rem;font-weight:600;animation:badgePulse 2s ease-in-out infinite}
@keyframes badgePulse{0%,100%{box-shadow:0 0 0 0 rgba(220,53,69,0.55)}50%{box-shadow:0 0 0 4px rgba(220,53,69,0)}}
@media (prefers-reduced-motion: reduce){.nav-item .badge{animation:none}}
.main{margin-left:280px;flex:1;padding:2rem;min-height:100vh}
.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}
.header h1{font-size:1.75rem;color:var(--dark)}
/* U-49: hlavička s piatimi tlačidlami pretiekla na 1521 px — akcie sa zalamujú a tlačidlo sa nelomí na dva riadky. */
.header-actions{display:flex;gap:0.75rem 1rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.header-actions .btn{white-space:nowrap}
.btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.6rem 1.25rem;border-radius:var(--radius);font-weight:500;cursor:pointer;transition:all 0.2s;border:none;font-family:inherit;font-size:0.9rem}
.btn:focus-visible{outline:2px solid var(--gold,#d4b170);outline-offset:2px}
.btn:disabled,.btn[disabled]{opacity:0.55;cursor:not-allowed;pointer-events:none}
a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--gold,#d4b170);outline-offset:1px}
.btn-primary{background:var(--primary);color:var(--white)}.btn-primary:hover{background:var(--primary-dark)}
.btn-outline{background:transparent;border:2px solid var(--primary);color:var(--primary)}.btn-outline:hover{background:var(--primary);color:var(--white)}
.btn-danger{background:var(--danger);color:var(--white)}.btn-danger:hover{background:#b52a37}
.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{background:#92400e;color:#fff}
.btn-sm{padding:0.4rem 0.75rem;font-size:0.8rem}
.btn[disabled]:not([aria-busy="true"]),.btn:disabled:not([aria-busy="true"]){pointer-events:none;opacity:0.55}
.btn[aria-busy="true"]{position:relative;color:transparent !important;pointer-events:none}
.btn[aria-busy="true"]::after{content:"";position:absolute;top:50%;left:50%;width:1em;height:1em;margin:-0.5em 0 0 -0.5em;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:btnSpin 0.6s linear infinite;color:initial}
@keyframes btnSpin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.btn[aria-busy="true"]::after{animation-duration:1.2s}}
.quick-filter-btn{background:var(--bg-light);border:1px solid var(--border);color:var(--text)}
.quick-filter-btn.active{background:var(--primary);color:white;border-color:var(--primary)}
.quick-filter-btn:hover:not(.active){background:var(--border)}
.quick-filter-btn.active[aria-pressed]{box-shadow:inset 0 1px 0 rgba(0,0,0,0.15)}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}
.stat-card{background:var(--white);padding:1.5rem;border-radius:var(--radius);box-shadow:var(--shadow);transition:transform 0.18s ease,box-shadow 0.18s ease;border:1px solid transparent}
.stat-card:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(34,139,34,0.15)}
.stat-card[role="button"]:hover,.stat-card[onclick]:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,0.12);cursor:pointer}
.stat-card .icon{width:50px;height:50px;border-radius:var(--radius);display:flex;align-items:center;justify-content:center;font-size:1.4rem;font-weight:700;margin-bottom:1rem;letter-spacing:-0.02em}
.stat-card .icon.green{background:rgba(34,139,34,0.1);color:var(--primary)}
.stat-card .icon.blue{background:rgba(23,162,184,0.1);color:var(--info)}
.stat-card .icon.orange{background:rgba(255,193,7,0.1);color:#e67e00}
.stat-card .icon.red{background:rgba(220,53,69,0.1);color:var(--danger)}
.stat-card .value{font-size:2rem;font-weight:700;color:var(--dark);font-variant-numeric:tabular-nums}.stat-card .label{color:var(--gray);font-size:0.85rem}
.table td{font-variant-numeric:tabular-nums}
.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1.5rem}
.card-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--gray-light);display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}
.card-header h3{font-size:1.1rem;font-weight:600;color:var(--dark)}.card-body{padding:1.5rem}
@media (max-width:640px){.card-header{padding:1rem;gap:0.5rem}.card-body{padding:1rem}}
.table{width:100%;border-collapse:collapse}.table th,.table td{padding:0.875rem 1rem;text-align:left;border-bottom:1px solid var(--gray-light)}
.table th{font-weight:600;color:var(--gray);font-size:0.8rem;text-transform:uppercase;letter-spacing:0.5px;background:var(--light)}
.table thead th{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--gray-light)}
.table tbody tr:nth-child(even){background:rgba(0,0,0,0.015)}
.table tbody tr:hover{background:var(--light)}.table tbody tr:last-child td{border-bottom:none}
.table a:not(.btn){color:var(--primary);text-decoration:none}.table a:not(.btn):hover{text-decoration:underline}
/* Mobile: card-body s tabuľkou má scrollbar; tabulka min-width zachová stĺpce čitateľné */
@media (max-width: 768px){.card-body{overflow-x:auto;-webkit-overflow-scrolling:touch}.card-body .table{min-width:640px}.table th,.table td{padding:0.65rem 0.75rem;font-size:0.85rem}}
.badge{display:inline-flex;padding:0.3rem 0.75rem;border-radius:20px;font-size:0.75rem;font-weight:500;line-height:1.2;white-space:nowrap}
.badge-success{background:rgba(40,167,69,0.1);color:var(--success)}
.badge-warning{background:rgba(255,193,7,0.2);color:#856404}
.badge-danger{background:rgba(220,53,69,0.1);color:var(--danger)}
.badge-info{background:rgba(23,162,184,0.1);color:var(--info)}
.badge-gray{background:var(--gray-light);color:var(--gray)}
.avatar{width:40px;height:40px;border-radius:50%;background:var(--primary);color:var(--white);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:0.9rem}
.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:1000;align-items:center;justify-content:center;padding:1rem;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}
.modal.active{display:flex;animation:modalFadeIn 0.18s ease-out}
@keyframes modalFadeIn{from{opacity:0}to{opacity:1}}
.modal-content{background:var(--white);border-radius:var(--radius);width:100%;max-width:700px;max-height:90vh;overflow-y:auto;overscroll-behavior:contain}
.modal.active .modal-content{animation:modalScaleIn 0.18s ease-out}
@keyframes modalScaleIn{from{transform:scale(0.96);opacity:0}to{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.modal.active,.modal.active .modal-content{animation:none}}
.modal-header{padding:1.25rem 1.5rem;border-bottom:1px solid var(--gray-light);display:flex;justify-content:space-between;align-items:center}
.modal-header h3{font-size:1.2rem}.modal-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:var(--gray);width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;transition:background 0.15s,color 0.15s;line-height:1}
.modal-close:hover{background:var(--gray-light);color:var(--dark)}
.modal-body{padding:1.5rem}.modal-footer{padding:1rem 1.5rem;border-top:1px solid var(--gray-light);display:flex;justify-content:flex-end;gap:0.75rem;flex-wrap:wrap}
@media (max-width:640px){.modal-body{padding:1rem}.modal-footer{padding:0.75rem 1rem;flex-direction:column-reverse}.modal-footer .btn{width:100%;justify-content:center}}
.icon-option{cursor:pointer;padding:0.25rem;border-radius:4px;transition:background 0.2s}.icon-option:hover{background:var(--gray-light)}
.form-row{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.form-group{margin-bottom:1rem}
@media (max-width: 640px){.form-row{grid-template-columns:1fr;gap:0.5rem}}
input[type="checkbox"],input[type="radio"]{width:18px;height:18px;cursor:pointer;accent-color:var(--primary);vertical-align:middle}
.form-group label{display:block;margin-bottom:0.5rem;font-weight:500;color:var(--dark);font-size:0.9rem}
.form-group label small{font-weight:400;color:var(--gray)}
.form-control{width:100%;padding:0.7rem 1rem;border:2px solid var(--gray-light);border-radius:var(--radius);font-family:inherit;font-size:0.9rem;transition:border 0.2s,box-shadow 0.2s}
.form-control:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(34,139,34,0.12)}select.form-control{cursor:pointer}textarea.form-control{resize:vertical;min-height:80px;line-height:1.5}
.form-control:disabled{background:var(--gray-light);opacity:0.7;cursor:not-allowed}
.form-control[aria-invalid="true"]{border-color:var(--danger)}
.form-control[aria-invalid="true"]:focus{box-shadow:0 0 0 3px rgba(220,53,69,0.15)}
.tabs{display:flex;gap:0;border-bottom:2px solid var(--gray-light);margin-bottom:1.5rem}
.tab{padding:0.875rem 1.5rem;cursor:pointer;color:var(--gray);font-weight:500;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all 0.2s;font-size:0.9rem;user-select:none}
.tab:hover{color:var(--primary)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.tab:focus-visible{outline:2px solid var(--primary);outline-offset:-2px;border-radius:4px}
.alert{padding:1rem 1.25rem;border-radius:var(--radius);margin-bottom:1rem;display:block}
/* USER-244: `.alert` bol `display:flex` — text s vloženým <strong> či odkazom sa tým rozpadol na úzke stĺpce (každý kúsok textu je samostatná položka flexu); na mobile boli nápovedy v „Arény a časy“ nečitateľné. */
.alert-warning{background:rgba(255,193,7,0.15);color:#856404;border-left:4px solid var(--warning)}
.alert-danger{background:rgba(220,53,69,0.1);color:var(--danger);border-left:4px solid var(--danger)}
.alert-info{background:rgba(23,162,184,0.1);color:var(--info);border-left:4px solid var(--info)}
.alert-success{background:rgba(40,167,69,0.1);color:var(--success);border-left:4px solid var(--success)}
.skip-link:focus{left:0 !important;outline:2px solid white;outline-offset:2px}
.toast{position:fixed;bottom:2rem;right:2rem;background:var(--dark);color:var(--white);padding:1rem 1.5rem;border-radius:var(--radius);transform:translateY(150%);opacity:0;transition:all 0.3s;z-index:9999;max-width:calc(100vw - 4rem);box-sizing:border-box}
@media (prefers-reduced-motion:reduce){.toast{transition:opacity 0.01s !important;transform:none}.toast.show{transform:none}}
.toast.show{transform:translateY(0);opacity:1}.toast.success{background:var(--success)}.toast.error{background:var(--danger)}.toast.warning{background:var(--warning,#e67e00);color:white}.toast.info{background:var(--info,#17a2b8);color:white}
[data-loading]{position:relative;color:transparent !important;background:linear-gradient(90deg,rgba(0,0,0,0.06) 25%,rgba(0,0,0,0.12) 50%,rgba(0,0,0,0.06) 75%);background-size:200% 100%;animation:skeletonShimmer 1.4s ease-in-out infinite;border-radius:4px;min-height:1em}
@keyframes skeletonShimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){[data-loading]{animation:none;background:rgba(0,0,0,0.08)}}
@media (max-width: 640px){.toast{left:1rem;right:1rem;bottom:1rem;text-align:center;max-width:none}}
/* Print štýly — pri Ctrl+P / window.print() skry sidebar, nav, toast, modals
   a renderuj len hlavný obsah na celú šírku stránky. */
@media print{
    body{background:white;color:black}
    #adminSidebar,.sidebar,#mobileMenu,.toast,.modal,.btn,button,.header-actions,.quick-actions,#dynamicNav,.search-box,.admin-hamburger,.admin-sidebar-overlay,.topbar{display:none !important}
    .main{margin-left:0 !important;padding:0 !important}
    .section{display:block !important;page-break-inside:avoid}
    .card{box-shadow:none !important;border:1px solid #ccc !important;break-inside:avoid}
    .table{font-size:11pt}.table th{background:#eee !important;color:black !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
    .table thead th{position:static}
    .table tbody tr:nth-child(even){background:transparent !important}
    .badge{border:1px solid #888;-webkit-print-color-adjust:exact;print-color-adjust:exact}
    a{color:black;text-decoration:none}
    [data-loading]{animation:none !important;background:transparent !important;color:inherit !important}
    /* Tlač JEDNEJ tabuľky (USER-22, etapa D; public/admin/table-tools.js).
       Web-wide Ctrl+P vytlačí celú aktívnu sekciu — to ostáva. Tlačidlo
       „Tlačiť“ nad zoznamom ale tlačí len ten zoznam, aj s hlavičkou:
       čo je to za zoznam, kedy vznikol a koľko má riadkov. */
    body.jkzm-tlac>*:not(#jkzmTlacovyList){display:none !important}
    body.jkzm-tlac #jkzmTlacovyList{display:block !important}
    #jkzmTlacovyList .jkzm-tlac-hlavicka h1{font-size:16pt;margin:0 0 .2rem}
    #jkzmTlacovyList .jkzm-tlac-hlavicka p{font-size:9pt;color:#444;margin:0 0 .8rem}
    #jkzmTlacovyList table{width:100%;border-collapse:collapse;font-size:10pt}
    #jkzmTlacovyList th,#jkzmTlacovyList td{border:1px solid #bbb;padding:3pt 5pt;text-align:left;vertical-align:top}
    #jkzmTlacovyList thead{display:table-header-group}
    #jkzmTlacovyList tr{break-inside:avoid}
    /* Tlač oznamu klubu (public/admin/oznamy-detail.js): A4, text v odsekoch. */
    #jkzmTlacovyList .oznam-tlac{font-size:11pt;line-height:1.5;color:#000}
    #jkzmTlacovyList .oznam-tlac h1{font-size:16pt;margin:.6rem 0 .6rem}
    #jkzmTlacovyList .oznam-tlac-hlavicka{border-bottom:1px solid #999;padding-bottom:.4rem;font-size:9.5pt}
    #jkzmTlacovyList .oznam-tlac-meta{margin-bottom:.8rem}
    #jkzmTlacovyList .oznam-tlac-meta th{width:30%;background:#f2f2f2;-webkit-print-color-adjust:exact;print-color-adjust:exact}
    #jkzmTlacovyList .oznam-znenie p{margin:0 0 .6rem;orphans:3;widows:3}
    #jkzmTlacovyList .oznam-poznamka{font-size:9pt;font-style:italic;color:#444}
    #jkzmTlacovyList .oznam-tlac-priloha{break-before:page}
    #jkzmTlacovyList .oznam-tlac-priloha h2{font-size:13pt}
    #jkzmTlacovyList .oznam-tlac-pata{font-size:8.5pt;color:#555;margin-top:1rem}
    @page{size:A4;margin:16mm}
}
/* Tlačový list na obrazovke nesvieti — existuje len po dobu tlače. */
#jkzmTlacovyList{display:none}
.jkzm-table-tools{display:flex;justify-content:flex-end;gap:.4rem;margin-bottom:.5rem;flex-wrap:wrap}
.section{display:none}.section.active{display:block}
.search-box{position:relative}.search-box input{padding-left:2.5rem;width:250px}
.search-box::before{content:'';position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);font-size:0.9rem}
.vet-timeline{position:relative;padding-left:2rem}.vet-timeline::before{content:'';position:absolute;left:0.5rem;top:0;bottom:0;width:2px;background:var(--gray-light)}
.vet-item{position:relative;margin-bottom:1.5rem;padding:1rem;background:var(--light);border-radius:var(--radius)}
.vet-item::before{content:'';position:absolute;left:-1.65rem;top:1rem;width:12px;height:12px;border-radius:50%;background:var(--primary);border:2px solid var(--white)}
.vet-item.overdue::before{background:var(--danger)}.vet-item.soon::before{background:var(--warning)}
.vet-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0.5rem}
.vet-item-title{font-weight:600;color:var(--dark)}.vet-item-date{font-size:0.85rem;color:var(--gray)}
.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}
.quick-action{background:var(--white);padding:1.25rem;border-radius:var(--radius);text-align:center;cursor:pointer;transition:all 0.2s;box-shadow:var(--shadow)}
.quick-action:hover{transform:translateY(-3px);box-shadow:0 5px 20px rgba(0,0,0,0.15)}
.quick-action .icon{font-size:2rem;margin-bottom:0.5rem}.quick-action span{font-size:0.85rem;color:var(--gray)}
.notifications-list{max-height:400px;overflow-y:auto}
.notification-item{display:flex;gap:1rem;padding:1rem;border-bottom:1px solid var(--gray-light);transition:background 0.2s}
.notification-item:hover{background:var(--light)}.notification-item:last-child{border-bottom:none}
.notification-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.notification-icon.warning{background:rgba(255,193,7,0.2)}.notification-icon.danger{background:rgba(220,53,69,0.1)}
.notification-icon.info{background:rgba(23,162,184,0.1)}
.notification-content{flex:1}.notification-title{font-weight:500;color:var(--dark);margin-bottom:0.25rem}
.notification-text{font-size:0.85rem;color:var(--gray)}.notification-time{font-size:0.75rem;color:var(--gray)}
.progress-bar{height:8px;background:var(--gray-light);border-radius:4px;overflow:hidden}
.progress-bar .fill{height:100%;border-radius:4px;transition:width 0.3s}
/* Login — split-screen: brandový panel + formulár (redesign v7.7.389) */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2.5rem 1.5rem;position:relative;overflow:hidden;isolation:isolate;
    background:
        radial-gradient(ellipse 55% 40% at 16% 14%,rgba(34,139,34,0.20),transparent 70%),
        radial-gradient(ellipse 45% 35% at 86% 88%,rgba(212,177,112,0.10),transparent 70%),
        linear-gradient(180deg,#0a0e1a 0%,#0f172a 100%);
    color:#e2e8f0}
.login-page::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:0.4;
    background-image:radial-gradient(rgba(255,255,255,0.035) 1px,transparent 1px);background-size:32px 32px}
.login-split{display:grid;grid-template-columns:1.05fr 0.95fr;width:100%;max-width:1080px;border:1px solid rgba(255,255,255,0.07);border-radius:22px;overflow:hidden;
    box-shadow:0 40px 90px -24px rgba(0,0,0,0.6),0 12px 32px -12px rgba(0,0,0,0.4)}
/* Brandový panel (ľavá strana) */
.login-brand{display:flex;flex-direction:column;justify-content:space-between;gap:2.25rem;padding:3rem 2.75rem;
    background:linear-gradient(155deg,rgba(34,139,34,0.18),rgba(15,23,42,0) 58%),linear-gradient(180deg,rgba(15,23,42,0.55),rgba(10,14,26,0.55));
    border-right:1px solid rgba(255,255,255,0.06)}
.login-brand-head{display:flex;flex-direction:column;gap:1.6rem}
.login-brand img{width:auto;max-height:52px;opacity:0.96}
.login-brand-claim h1{margin:0;font-family:'Fraunces','Georgia',serif;font-weight:400;font-size:2rem;line-height:1.12;letter-spacing:-0.02em;color:#f8fafc}
.login-brand-claim h1 span{color:#86efac}
.login-brand-claim p{margin:0.85rem 0 0;color:#94a3b8;font-size:0.95rem;line-height:1.6;font-weight:300;max-width:34ch}
/* Značka systému (USER-261): menšia, pod menom klubu — klub ostáva hlavný. */
.login-brand-claim p.login-system-znacka{margin-top:0.6rem;color:#cbd5e1;font-size:0.78rem;font-weight:500;letter-spacing:0.04em}
.login-features{display:flex;flex-direction:column;gap:1.15rem}
.login-feature{display:flex;align-items:flex-start;gap:0.85rem;text-align:left}
.login-feature-icon{flex-shrink:0;width:38px;height:38px;display:flex;align-items:center;justify-content:center;color:#86efac;background:rgba(134,239,172,0.09);border:1px solid rgba(134,239,172,0.22);border-radius:10px}
.login-feature-text{font-size:0.86rem;color:#cbd5e1;line-height:1.5;font-weight:300}
.login-feature-text strong{color:#f8fafc;display:block;margin-bottom:0.15rem;font-weight:500;font-size:0.92rem;letter-spacing:-0.005em}
.login-page-footer{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap;color:#64748b;font-size:0.76rem;letter-spacing:0.01em}
.login-page-footer span{display:flex;align-items:center;gap:0.55rem}
.login-page-footer span::before{content:'';width:4px;height:4px;border-radius:50%;background:#86efac;opacity:0.7}
/* Formulárový panel (pravá strana) */
.login-form-panel{display:flex;align-items:center;justify-content:center;padding:3rem 2.75rem;background:#fff}
.login-card{background:#fff;width:100%;max-width:380px;display:flex;flex-direction:column;align-items:stretch}
.login-card h2{text-align:left;margin:0 0 0.4rem;color:#0f172a;font-family:'Fraunces','Georgia',serif;font-size:1.7rem;font-weight:400;letter-spacing:-0.015em;line-height:1.15}
.login-tagline{text-align:left;color:#64748b;font-size:0.88rem;margin:0 0 1.85rem;line-height:1.55}
.login-card .form-group{margin-bottom:1rem}
.login-card .form-group label{font-size:0.74rem;font-weight:600;color:#475569;letter-spacing:0.04em;text-transform:uppercase;margin-bottom:0.4rem}
.login-card .form-control{padding:0.8rem 0.95rem;border:1px solid #e2e8f0;border-radius:9px;background:#fafbfc;font-size:0.95rem;transition:all 0.15s ease}
.login-card .form-control:hover{background:#fff;border-color:#cbd5e1}
.login-card .form-control:focus{outline:none;border-color:#228B22;background:#fff;box-shadow:0 0 0 3px rgba(34,139,34,0.10)}
.login-card .btn-primary{background:#15803d;color:#fff;border:0;font-weight:600;font-size:0.95rem;letter-spacing:0.005em;border-radius:9px;padding:0.9rem 1rem;margin-top:0.5rem;transition:all 0.18s ease;box-shadow:0 2px 8px rgba(21,128,61,0.22)}
.login-card .btn-primary:hover{background:#166534;transform:translateY(-1px);box-shadow:0 8px 20px rgba(21,128,61,0.30)}
.login-card .btn-primary:active{transform:translateY(0);box-shadow:0 2px 8px rgba(21,128,61,0.22)}
.login-forgot{text-align:center;margin-top:1.1rem;font-size:0.85rem}
.login-forgot a{color:#64748b;text-decoration:none;border-bottom:1px solid transparent;transition:border-color 0.15s ease}
.login-forgot a:hover{border-bottom-color:#86efac;color:#15803d}
/* Prehliadka systému bez prihlásenia (USER-251) — samostatná cesta pod formulárom. */
.login-demo{margin-top:1.25rem;padding-top:1.1rem;border-top:1px solid #e5e7eb}
.login-demo-btn{display:flex;align-items:center;justify-content:center;gap:.4rem;width:100%;min-height:44px;text-decoration:none}
.login-back{text-align:center;margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid rgba(15,23,42,0.08);font-size:0.82rem}
.login-back a{color:#64748b;text-decoration:none;display:inline-flex;align-items:center;gap:0.5rem;font-weight:500;transition:color 0.15s ease}
.login-back a:hover{color:#15803d}
.login-back svg{transition:transform 0.18s ease}
.login-back a:hover svg{transform:translateX(-3px)}
@media (max-width:860px){
    .login-page{padding:0}
    .login-split{grid-template-columns:1fr;max-width:480px;border-radius:18px;margin:1.5rem auto}
    .login-brand{padding:2.25rem 2rem;border-right:0;border-bottom:1px solid rgba(255,255,255,0.06);gap:1.5rem}
    .login-brand-claim h1{font-size:1.6rem}
    .login-features{display:none}
    .login-form-panel{padding:2.25rem 2rem}
}
@media (max-width:560px){
    .login-split{margin:0;min-height:100vh;border-radius:0;border:0}
    .login-card{max-width:none}
    .login-card h2{font-size:1.5rem}
}
@media(max-width:1024px){.sidebar{transform:translateX(-100%);transition:transform 0.3s}.sidebar.open{transform:translateX(0)}.main{margin-left:0}}
.fieldset{border:1px solid var(--gray-light);border-radius:var(--radius);padding:1rem 1.25rem 1.25rem;margin-bottom:1rem;background:rgba(255,255,255,0.5)}
.fieldset legend{padding:0 0.5rem;font-weight:600;color:var(--primary);font-size:0.78rem;text-transform:uppercase;letter-spacing:0.06em}

/* Mode Switcher */
.mode-switcher{display:flex;gap:0;background:rgba(255,255,255,0.1);border-radius:var(--radius);padding:0.25rem;margin-bottom:1rem}
.mode-btn{flex:1;padding:0.5rem 1rem;border:none;background:transparent;color:rgba(255,255,255,0.7);font-size:0.85rem;font-weight:500;cursor:pointer;border-radius:calc(var(--radius) - 4px);transition:all 0.2s;font-family:inherit}
.mode-btn:hover{color:var(--white)}
.mode-btn.active{background:var(--primary);color:var(--white)}

/* Nav Search */
.nav-search{position:relative;margin-bottom:1rem}
.nav-search input{width:100%;padding:0.6rem 0.75rem 0.6rem 2.25rem;border:none;border-radius:var(--radius);background:rgba(255,255,255,0.1);color:var(--white);font-size:0.85rem;font-family:inherit}
.nav-search input::placeholder{color:rgba(255,255,255,0.5)}
.nav-search input:focus{outline:none;background:rgba(255,255,255,0.15)}
.nav-search::before{content:'';position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);font-size:0.8rem;opacity:0.7}

/* Accordion Navigation */
.nav-section-accordion .nav-section-title{cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:0.5rem;border-radius:6px;transition:background 0.2s}
.nav-section-accordion .nav-section-title:hover{background:rgba(255,255,255,0.1)}
.nav-section-arrow{font-size:0.7rem;opacity:0.7;transition:transform 0.2s}
.nav-section-accordion.open .nav-section-arrow{transform:rotate(0deg)}
.nav-section-items{overflow:hidden;transition:all 0.2s}

/* Favorites Section */
.nav-section-favorites{background:rgba(34,139,34,0.15);border-radius:8px;padding:0.5rem;margin-bottom:1rem}
.nav-section-favorites .nav-section-title{color:var(--primary-light);font-weight:600}
.nav-section-favorites .nav-item{background:rgba(255,255,255,0.05)}

/* Nav Item with Star */
.nav-item{position:relative;padding-right:2rem !important}
.nav-item-label{flex:1}
.nav-favorite-star{position:absolute;right:0.5rem;top:50%;transform:translateY(-50%);cursor:pointer;opacity:0.3;font-size:0.9rem;transition:all 0.2s}
.nav-item:hover .nav-favorite-star{opacity:0.7}
.nav-favorite-star.active{opacity:1;color:gold}
.nav-favorite-star:hover{opacity:1;transform:translateY(-50%) scale(1.2)}
.horse-card{display:grid;grid-template-columns:100px 1fr;gap:1rem;padding:1rem;border:1px solid var(--gray-light);border-radius:var(--radius);margin-bottom:1rem}
.horse-card img{width:100px;height:100px;object-fit:cover;border-radius:var(--radius)}
.horse-card-info h4{margin-bottom:0.25rem}.horse-card-info p{font-size:0.85rem;color:var(--gray)}
.horse-card-badges{display:flex;gap:0.5rem;flex-wrap:wrap;margin-top:0.5rem}

/* Stránkovanie zoznamov (public/admin/strankovanie.js, USER-75/76). Ovládanie
   sa vkladá za tabuľku; bez štýlu sa text a tlačidlá lámali v predvolenom toku
   (I-36). Farby cez tokeny, platia v obidvoch témach. */
.strany-box{margin-top:0.6rem}
.strany{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0.5rem 1rem;font-size:0.85rem;color:var(--ink-2)}
.strany-ovladanie{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}
.strany-strana{white-space:nowrap}
.strany-pocet{white-space:nowrap}
.strany-volba,.strany-skok{display:inline-flex;align-items:center;gap:0.35rem;white-space:nowrap;font-size:0.85rem;color:var(--ink-2)}
.strany-volba select.form-control{width:auto;min-width:4.5rem;padding:0.25rem 0.4rem;font-size:0.85rem}
.strany-skok input.form-control{width:4.5rem;padding:0.25rem 0.4rem;font-size:0.85rem;text-align:center}

/* Oznamy klubu — zoznam a detail (public/admin/oznamy.js, oznamy-detail.js).
   Mobil ako prvý: údaje v detaile idú pod seba, na širšej obrazovke do mriežky. */
.oznam-riadok{cursor:pointer}
.oznam-riadok:hover td{background:rgba(130,100,24,.05)}
.oznam-riadok:focus-visible{outline:2px solid var(--gold-text,#826418);outline-offset:-2px}
.oznam-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem 1rem;margin:0 0 1rem}
.oznam-meta dt{font-size:.78rem;color:var(--ink-3)}
.oznam-meta dd{margin:.1rem 0 0;font-weight:600}
.oznam-detail h4{margin:1.2rem 0 .5rem}
.oznam-publikum{margin:0;padding-left:1.2rem}
.oznam-znenie{border:1px solid var(--border);border-radius:8px;padding:1rem;background:var(--surface,#fff);overflow-wrap:break-word}
.oznam-znenie p{margin:0 0 .8rem}
.oznam-znenie p:last-child{margin-bottom:0}
.oznam-kontakt,.oznam-podpis{margin-top:.8rem;padding-top:.6rem;border-top:1px dashed var(--border)}
.oznam-poznamka{font-size:.85rem;color:var(--ink-3);font-style:italic;margin:0 0 .5rem}
.oznam-tlmene{color:var(--ink-3)}
.oznam-mala{font-size:.82rem}
.oznam-cisla{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem}
.oznam-cisla>div{border:1px solid var(--border);border-radius:8px;padding:.6rem .8rem}
.oznam-cisla strong{display:block;font-size:1.3rem;font-variant-numeric:tabular-nums}
.oznam-cisla span{font-size:.8rem;color:var(--ink-3)}
.oznam-filtre{display:flex;gap:.4rem;flex-wrap:wrap;margin:.8rem 0}
.oznam-filtre .btn{min-height:44px}
.oznam-prijemcovia{list-style:none;margin:0;padding:0}
.oznam-prijemcovia li{border-bottom:1px solid var(--border);padding:.6rem 0;display:grid;gap:.2rem}
@media (min-width:720px){.oznam-prijemcovia li{grid-template-columns:2fr 1.6fr 1.6fr;column-gap:1.2rem;align-items:start}}
/* Akcie v päte okna: na mobile dve vedľa seba, nie štyri pod sebou — inak
   päta zaberie polovicu obrazovky a znenie oznamu nie je vidieť. */
.modal-footer.oznam-detail-akcie{display:flex !important;flex-direction:row !important;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}
.oznam-detail-akcie .btn{min-height:44px}
@media (max-width:640px){.modal-footer.oznam-detail-akcie .btn{flex:1 1 calc(50% - .5rem);width:auto !important;margin:0 !important;padding:.5rem .6rem;font-size:.9rem}}
/* Formulár oznamu: symboly, náhľad e-mailu a profilu, história verzií. */
.oznam-symboly{display:flex;gap:.35rem;flex-wrap:wrap;margin-bottom:.4rem}
.oznam-symboly .btn{min-height:36px;font-family:ui-monospace,monospace;font-size:.78rem}
.oznam-nahlad-znenia>summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}
.oznam-nahlad-obsah{border:1px solid var(--border);border-radius:8px;padding:1rem;background:var(--surface,#fff)}
/* E-mail má vlastné farby (biely podklad) — v tmavej téme ostáva, ako ho uvidí príjemca. */
.oznam-nahlad-email{background:#fff;color:#0f172a;border-radius:6px;padding:1rem;overflow-x:auto}
.oznam-verzie{list-style:none;margin:0;padding:0}
.oznam-verzie li{border-bottom:1px solid var(--border);padding:.4rem 0}
.oznam-verzie summary{cursor:pointer;min-height:44px;display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}
/* `hidden` musí skryť aj tlačidlo a upozornenie — `.btn` a `.alert` majú
   vlastné `display` a atribút by inak prebili („Zrušiť úpravu“ pri novom ozname). */
#oznamy [hidden], #web-settings [hidden]{display:none !important}
/* ── Dnes v klube (USER-244) — dnešné termíny navrchu Prehľadu ── */
.dnes-karta{margin-bottom:1.25rem}
.dnes-karta .card-header{display:flex;flex-wrap:wrap;gap:0.5rem;align-items:center;justify-content:space-between}
.dnes-karta h3 small{font-weight:500;color:var(--ink-3,#475569);font-size:0.8rem;margin-left:0.35rem}
.dnes-akcie{display:flex;gap:0.4rem;flex-wrap:wrap}
.dnes-prazdne{color:var(--ink-3,#475569);margin:0}
.dnes-skupina{padding:0.35rem 0 0.6rem;border-bottom:1px solid #e5e7eb}
.dnes-skupina:last-child{border-bottom:0}
.dnes-cas{font-size:0.92rem;color:var(--dark,#1e293b);margin:0.35rem 0}
.dnes-riadok{display:flex;flex-wrap:wrap;align-items:center;gap:0.2rem 0.6rem;width:100%;min-height:44px;text-align:left;background:#f7f8fb;border:1px solid #e5e7eb;border-radius:8px;padding:0.5rem 0.75rem;margin:0.3rem 0;font:inherit;color:inherit;cursor:pointer}
.dnes-riadok:hover{border-color:#94a3b8}
.dnes-riadok:focus-visible{outline:2px solid #15803d;outline-offset:2px}
.dnes-meno{font-weight:600}
.dnes-detail{flex-basis:100%;font-size:0.84rem;color:#475569}
.dnes-stav{font-size:0.75rem;font-weight:600;padding:0.1rem 0.5rem;border-radius:999px;background:#e5e7eb;color:#334155}
.dnes-stav-pending,.dnes-stav-new{background:#fef3c7;color:#78350f}
.dnes-stav-completed{background:#d1fae5;color:#065f46}
.dnes-stav-no_show{background:#fee2e2;color:#991b1b}
.dnes-zrusena .dnes-meno{text-decoration:line-through;color:#64748b}
/* Arény a časy: týždenný prehľad je to, s čím sa pracuje denne — ide hneď pod
   nadpis. Nastavenie priestorov, generátor a vyhradenie (robia sa zriedka)
   sú pod ním (USER-244; dovtedy bol prehľad na telefóne až na piatej obrazovke). */
#arenas.active{display:flex;flex-direction:column}
#arenas > .header{order:-2}
#arenas > .rozvrh-prehlad-karta{order:-1}
/* Týždeň na telefóne (USER-244, rozvrh.js): dnešok zvýraznený, dni, ktoré
   prebehli, za tlačidlom, pri slote „+ Jazdec“ a „⋯ Viac“. Na počítači sú
   všetky akcie vidieť ako doteraz (`display:contents`) a tlačidlá navyše nie. */
.rozvrh-den-dnes > .rozvrh-den-hlavicka{outline:2px solid #16a34a;outline-offset:-2px}
.rozvrh-viac{display:contents}
/* Meno jazdca na dlaždici: `--primary` (#15803d) má na zelenej #e8f5e9 iba
   4,45:1; #166534 má 6,35:1 a platí aj na žltej a ružovej dlaždici. */
.rozvrh-rezervacia-meno{color:#166534 !important}
.rozvrh-viac-btn,.rozvrh-minule-btn,.rozvrh-dnes-znacka{display:none}
/* Na počítači je stĺpec dňa úzky; značka by zalomila „+ Slot“ — dnešok nesie rámik. */
@media (max-width:640px){
  .rozvrh-minule-btn{display:block;width:100%;min-height:44px;margin-bottom:0.6rem}
  .rozvrh-dni:not(.ukaz-minule) > .rozvrh-den-minuly{display:none}
  .rozvrh-dlazdica .btn{min-height:44px;padding:0.35rem 0.8rem !important;font-size:0.85rem !important}
  .rozvrh-viac-btn,.rozvrh-dnes-znacka{display:inline-flex}
  .rozvrh-viac{display:none;flex-wrap:wrap;gap:0.35rem;flex-basis:100%}
  .rozvrh-dlazdica.otvorena .rozvrh-viac{display:flex}
}
/* Pätka okna so štyrmi a viac tlačidlami (USER-244): pod sebou zaberali na
   390 px takmer polovicu obrazovky (detail rezervácie: Uložiť, Zavrieť,
   História, Zrušiť, Zmazať) a formulár ostal v úzkom pruhu. Na telefóne sú
   v dvoch stĺpcoch, hlavné tlačidlo navrchu cez celú šírku. */
@media (max-width:640px){
  .modal-footer:not(.oznam-detail-akcie):has(> .btn:nth-of-type(4)){display:grid !important;grid-template-columns:1fr 1fr;gap:0.5rem !important}
  .modal-footer:not(.oznam-detail-akcie):has(> .btn:nth-of-type(4)) > .btn{width:auto !important;min-width:0;min-height:44px;margin:0 !important;padding:0.5rem 0.6rem}
  .modal-footer:not(.oznam-detail-akcie):has(> .btn:nth-of-type(4)) > :is(.btn-primary,.btn-success){grid-column:1/-1;order:-1}
  .modal-footer:not(.oznam-detail-akcie):has(> .btn:nth-of-type(4)) > span:empty{display:none}
  /* Zaškrtávacie pole v okne malo 13 px a lepilo sa na ďalší popisok
     („Uložiť do registra…Telefón“). Pole 22 px vľavo, text vedľa neho
     (nie flex — text so <span> by sa rozpadol na stĺpce), cieľ 44 px. */
  .modal label:has(> input[type="checkbox"]:first-child){position:relative;display:block;padding:0.55rem 0 0.55rem 2.1rem;min-height:44px;margin-bottom:0.25rem}
  .modal label > input[type="checkbox"]:first-child{position:absolute;left:0;top:0.6rem;width:22px;height:22px;margin:0}
}
/* Široká tabuľka nesmie roztiahnuť celú stránku (USER-244): `.main` je
   položka flexu s predvoleným `min-width: auto`, takže tabuľka jazdcov pri
   okne 1440 px roztiahla stránku na 1563 px a vodorovne sa rolovala celá
   administrácia aj s hlavičkou. Roluje sa iba karta s tabuľkou. */
.main{min-width:0}
/* Prepnutie sekcie mení hash (#horses) a prehliadač skočí na <section> — tá
   leží pod hornou lištou, takže stránka sa posunula o ~100 px a nadpis sekcie
   s tlačidlami („+ Nový“) zašiel pod lištu (USER-244). Veľký okraj skok
   zastaví na vrchu stránky. */
.main .section[id]{scroll-margin-top:100vh}
.card-body:has(> table){overflow-x:auto}
/* ── Narodeniny na hornej lište (USER-245) ── */
.narodeniny-obal{position:relative;display:inline-flex}
.narodeniny-btn{position:relative;font-size:1rem}
.narodeniny-pocet{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#475569;color:#fff;font-size:0.7rem;font-weight:700;line-height:18px;text-align:center}
.narodeniny-pocet.narodeniny-dnes{background:#b91c1c}
.narodeniny-pocet[hidden]{display:none}
.narodeniny-zoznam{position:absolute;right:0;top:calc(100% + 8px);z-index:300;width:min(320px,calc(100vw - 2rem));background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 10px 30px rgba(15,23,42,0.15);padding:0.85rem 1rem;color:#1e293b;text-align:left}
.narodeniny-zoznam[hidden]{display:none}
.narodeniny-zoznam h3{font-size:0.85rem;margin:0 0 0.5rem}
.narodeniny-zoznam ul{list-style:none;margin:0;padding:0}
.narodeniny-zoznam li{display:flex;flex-direction:column;padding:0.45rem 0;border-bottom:1px solid #f1f5f9}
.narodeniny-zoznam li:last-child{border-bottom:0}
.narodeniny-zoznam li span{font-size:0.82rem;color:#475569}
.narodeniny-zoznam li.dnes strong::after{content:" — dnes!";color:#b91c1c}
.narodeniny-zoznam p{margin:0.25rem 0;font-size:0.85rem;color:#475569}
.narodeniny-pozn{font-size:0.78rem !important}
@media (max-width:640px){.narodeniny-zoznam{position:fixed;left:1rem;right:1rem;top:4.5rem;width:auto}}

/* USER-262 — malá značka Cavalety pri mene systému (logo A). */
.cavaleta-znak { display: inline-block; width: 14px; height: 14px; vertical-align: -2px; margin-right: 0.3em; border-radius: 3px; }
