@font-face { font-family: Manrope; src: url('/fonts/manrope-latin.woff2') format('woff2'); font-weight: 200 800; font-display: swap; }
:root {
    --brand-purple: #5f378d; --brand-violet: #7629d6; --brand-cyan: #49c0e3; --brand-yellow: #fdc609;
    --ink: #251936; --muted: #71677e; --surface: #fff; --canvas: #f6f4fa; --line: #e6dfed;
    --bs-primary: #5f378d; --bs-primary-rgb: 95,55,141; --bs-body-font-family: Manrope,'Segoe UI',Arial,sans-serif;
    --bs-body-color: var(--ink); --bs-body-bg: var(--canvas); --bs-border-color: var(--line);
    --bs-link-color: var(--brand-purple); --bs-link-hover-color: #472369; --bs-secondary-color: var(--muted);
}
* { box-sizing: border-box; }
html { min-width: 320px; scroll-padding-top: 6rem; }
body { margin: 0; font-family: var(--bs-body-font-family); background: var(--canvas); color: var(--ink); line-height: 1.6; -webkit-font-smoothing: antialiased; }
::selection { background: #e7d8fa; color: #32164f; }
a { color: var(--brand-purple); text-underline-offset: .2em; }
button,input,select,textarea { font: inherit; }
button,a,input,select,textarea { -webkit-tap-highlight-color: transparent; }
button,a { touch-action: manipulation; }
img { max-width: 100%; }
h1,h2,h3,h4,h5,h6 { color: inherit; font-weight: 800; line-height: 1.22; letter-spacing: -.035em; overflow-wrap: anywhere; }
h1 { font-size: clamp(1.9rem,3.4vw,2.8rem); }
h2 { font-size: clamp(1.4rem,2.4vw,2rem); }
h3 { font-size: 1.35rem; } h4 { font-size: 1.2rem; } h5 { font-size: 1.05rem; }
h1:focus { outline: none; }
p { margin-top: 0; }
:focus-visible { outline: 3px solid #8b51c8; outline-offset: 4px; }
.text-muted,.text-secondary { color: var(--muted) !important; }
.text-primary { color: var(--brand-purple) !important; }
.text-info { color: #156b82 !important; } .text-warning { color: #8a5e00 !important; }
.bg-primary { background-color: var(--brand-purple) !important; }
.bg-secondary { background-color: #65596f !important; }
.bg-info { background-color: #dff5fb !important; color: #185b70 !important; }
.bg-light { background-color: #f8f6fb !important; }
.border-primary { border-color: var(--brand-purple) !important; }
.btn { --bs-btn-padding-x: 1.1rem; --bs-btn-padding-y: .65rem; --bs-btn-font-weight: 700; --bs-btn-border-radius: 1.15rem; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .45rem; line-height: 1.35; transition: background-color .15s,border-color .15s,box-shadow .15s; }
.btn-primary,.btn-dark {
    --bs-btn-color: #fff; --bs-btn-bg: var(--brand-purple); --bs-btn-border-color: var(--brand-purple);
    --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #4c2776; --bs-btn-hover-border-color: #4c2776;
    --bs-btn-active-color: #fff; --bs-btn-active-bg: #422068; --bs-btn-active-border-color: #422068;
    --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #8a739f; --bs-btn-disabled-border-color: #8a739f;
}
.btn-outline-primary,.btn-outline-dark {
    --bs-btn-color: var(--brand-purple); --bs-btn-border-color: #bda7d1;
    --bs-btn-hover-color: var(--brand-purple); --bs-btn-hover-bg: #eee6f6; --bs-btn-hover-border-color: var(--brand-purple);
    --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--brand-purple); --bs-btn-active-border-color: var(--brand-purple);
    --bs-btn-disabled-color: var(--brand-purple); --bs-btn-disabled-border-color: #bda7d1;
}
.btn-secondary,.btn-light {
    --bs-btn-color: #4f405e; --bs-btn-bg: #eee9f3; --bs-btn-border-color: #eee9f3;
    --bs-btn-hover-color: var(--ink); --bs-btn-hover-bg: #e2d8ec; --bs-btn-hover-border-color: #d4c5e1;
    --bs-btn-active-color: var(--ink); --bs-btn-active-bg: #d9cee4; --bs-btn-active-border-color: #d9cee4;
}
.btn-success { --bs-btn-bg: #227653; --bs-btn-border-color: #227653; --bs-btn-hover-bg: #195a40; --bs-btn-hover-border-color: #195a40; }
.btn-danger { --bs-btn-bg: #ae334a; --bs-btn-border-color: #ae334a; --bs-btn-hover-bg: #8c2237; --bs-btn-hover-border-color: #8c2237; }
.btn-sm { --bs-btn-padding-x: .8rem; --bs-btn-padding-y: .5rem; --bs-btn-font-size: .82rem; --bs-btn-border-radius: 1rem; }
.btn-lg { --bs-btn-padding-x: 1.35rem; --bs-btn-padding-y: .85rem; --bs-btn-font-size: 1rem; --bs-btn-border-radius: 1.25rem; min-height: 50px; }
.btn:focus-visible { box-shadow: 0 0 0 4px #dcc8ee; }
.btn:disabled { opacity: .55; } .btn-link { text-decoration: none; }
.form-label { font-weight: 700; font-size: .875rem; color: #44354f; }
.form-control,.form-select { min-height: 46px; border: 1px solid #d6cbdf; border-radius: 1rem; background-color: #fff; color: var(--ink); padding: .65rem .85rem; font-size: 1rem; }
.form-control::placeholder { color: #8b8095; } .form-select { padding-right: 2.4rem; }
.form-control:focus,.form-select:focus { border-color: #8f62b7; box-shadow: 0 0 0 3px #eadff5; }
.form-control:disabled,.form-select:disabled { background-color: #f0edf4; }
.form-check-input { border-color: #a797b5; cursor: pointer; }
.form-check-input:checked { background-color: var(--brand-purple); border-color: var(--brand-purple); }
.form-check-input:focus { border-color: #8f62b7; box-shadow: 0 0 0 3px #eadff5; }
.form-check-label { cursor: pointer; } .form-range { accent-color: var(--brand-purple); }
.form-range::-webkit-slider-thumb { background-color: var(--brand-purple); }
.form-range::-moz-range-thumb { background-color: var(--brand-purple); }
.form-text { color: var(--muted); font-size: .8rem; }
.valid.modified:not([type=checkbox]) { border-color: #448367; } .invalid { border-color: #ad2b47; }
.validation-message,.validation-errors { color: #a12540; } .validation-errors { padding-left: 1.2rem; }
.card,.surface-card { background: var(--surface); border: 1px solid var(--line); border-radius: 1.5rem; box-shadow: 0 4px 22px #30184f05; }
.card-header { padding: 1.05rem 1.35rem; background: #faf8fc; border-bottom: 1px solid var(--line); }
.card-header:first-child { border-radius: 1.1rem 1.1rem 0 0; } .card-body { padding: 1.4rem; }
.card-footer { padding: 1rem 1.35rem; border-color: var(--line); background: #faf8fc; }
.card-footer:last-child { border-radius: 0 0 1.1rem 1.1rem; }
.badge { font-weight: 700; letter-spacing: 0; padding: .5rem .7rem; border-radius: 0.75rem; }
.alert { border-radius: 1.25rem; font-size: .9rem; border-width: 1px; }
.alert-info { color: #285e70; background: #edf8fb; border-color: #cae9f1; }
.alert-success { color: #245b45; background: #eff8f3; border-color: #cde6d7; }
.alert-warning { color: #71521c; background: #fff9e7; border-color: #f1e2ac; }
.alert-danger { color: #93243b; background: #fff1f3; border-color: #f2ccd4; }
.table { --bs-table-bg: #fff; --bs-table-color: var(--ink); --bs-table-border-color: var(--line); --bs-table-hover-bg: #f8f4fc; --bs-table-striped-bg: #faf8fc; margin-bottom: 0; }
.table > :not(caption) > * > * { padding: .85rem 1rem; }
.table th { font-size: .83rem; font-weight: 800; }
.table-light { --bs-table-bg: #f5f0fa; --bs-table-color: #49345e; }
.table-secondary { --bs-table-bg: #f1eef4; --bs-table-color: #776b80; }
.table-responsive { border-radius: 0 0 1rem 1rem; overscroll-behavior-x: contain; }
.eyebrow { display: block; margin: 0 0 .7rem; color: var(--brand-purple); font-size: .7rem; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.page-heading { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.8rem; }
.page-heading h1 { margin: 0 0 .6rem; }
.page-intro { color: var(--muted); max-width: 64ch; margin: 0; font-size: .95rem; }
.section-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: center; flex-wrap: wrap; }
.action-row { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; }
.status-pill { display: inline-flex; align-items: center; gap: .4rem; border-radius: 2rem; padding: .35rem .7rem; color: var(--brand-purple); background: #eee5f7; font-size: .75rem; font-weight: 800; }
.empty-state { padding: clamp(2rem,7vw,5rem) 1.5rem; text-align: center; background: white; border: 1px dashed #d8cbe5; border-radius: 1.5rem; }
.empty-state p { color: var(--muted); } .spinner-border { --bs-spinner-border-width: .16em; }
.blazor-error-boundary { background: #fff0f3; color: #96253e; border: 1px solid #e5b9c3; border-radius: 1.15rem; padding: 1.2rem; }
.blazor-error-boundary::after { content: 'Stránku se nepodařilo načíst. Obnovte ji a zkuste to znovu.'; }
@media (max-width:600px) { .page-heading { margin-bottom: 1.4rem; } .card-body,.card-header { padding: 1rem; } .table > :not(caption) > * > * { padding: .7rem; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; } }

/* Custom Blazor Reconnect UI */
#components-reconnect-modal {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    z-index: 99999;
    background: linear-gradient(115deg, #4c286f, var(--brand-purple), var(--brand-violet));
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.3s ease;
}
#components-reconnect-modal.components-reconnect-show,
#components-reconnect-modal.components-reconnect-failed,
#components-reconnect-modal.components-reconnect-rejected {
    opacity: 1;
    pointer-events: auto;
}
.reconnect-inner {
    text-align: center;
    padding: 2rem;
}
.reconnect-logo {
    width: 280px;
    height: auto;
    margin-bottom: 2rem;
    animation: pulse-flip 4s infinite cubic-bezier(0.4, 0, 0.2, 1);
    transform-style: preserve-3d;
}
@keyframes pulse-flip {
    0% { transform: perspective(800px) rotateY(0deg) scale(1); }
    40% { transform: perspective(800px) rotateY(180deg) scale(1.05); }
    50% { transform: perspective(800px) rotateY(180deg) scale(1.05); }
    90% { transform: perspective(800px) rotateY(360deg) scale(1); }
    100% { transform: perspective(800px) rotateY(360deg) scale(1); }
}
.reconnect-text {
    font-size: 1.25rem;
    font-weight: 750;
    margin-bottom: 1.5rem;
    color: #e6d3fb;
}
.reconnect-reload {
    display: none;
    background: white;
    color: var(--brand-purple);
    border: none;
}
.reconnect-reload:hover {
    background: #f0e9f7;
    color: #4c286f;
}
#components-reconnect-modal.components-reconnect-failed .reconnect-reload,
#components-reconnect-modal.components-reconnect-rejected .reconnect-reload {
    display: inline-flex;
}
#components-reconnect-modal.components-reconnect-failed .reconnect-text::before {
    content: 'Spojení přerušeno. ';
}

.material-symbols-outlined {
    font-family: 'Material Symbols Outlined';
    font-weight: normal;
    font-style: normal;
    font-size: 1.15em;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
    vertical-align: -0.15em;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
}
