@font-face {
    font-family: "Montserrat";
    src: local("Montserrat Variable"), local("Montserrat"),
         url("/static/fonts/Montserrat-Variable.ttf") format("truetype");
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
}

:root {
    --scai-canvas: #f2f0ec;
    --scai-surface: #faf9f6;
    --scai-surface-raised: #fdfcf9;
    --scai-surface-muted: #ebe9e4;
    --scai-surface-quiet: #f6f4f0;
    --scai-ink: #292a2d;
    --scai-ink-strong: #1d1e20;
    --scai-muted: #6e706f;
    --scai-muted-strong: #555856;
    --scai-border: #d8d5cf;
    --scai-border-strong: #c5c1ba;
    --scai-accent: #34363a;
    --scai-accent-hover: #202225;
    --scai-accent-soft: #e3e2de;
    --scai-focus: rgba(52, 54, 58, 0.16);
    --scai-success: #426451;
    --scai-success-bg: #e8efe9;
    --scai-success-border: #c3d3c7;
    --scai-warning: #735d37;
    --scai-warning-bg: #f3eee3;
    --scai-warning-border: #ded1b8;
    --scai-danger: #88434a;
    --scai-danger-bg: #f4e9ea;
    --scai-danger-border: #ddc0c3;
    --scai-info: #465963;
    --scai-info-bg: #e8edef;
    --scai-info-border: #c8d1d4;
    --scai-radius-card: 0.9rem;
    --scai-radius-control: 0.55rem;
    --scai-shadow-card: 0 0.55rem 1.7rem rgba(45, 43, 39, 0.055);
    --scai-shadow-float: 0 0.9rem 2.4rem rgba(45, 43, 39, 0.1);
    color: var(--scai-ink);
    background: var(--scai-canvas);
    font-family: "Montserrat", Arial, Helvetica, sans-serif;
    font-weight: 400;
    font-synthesis: none;
}

* {
    box-sizing: border-box;
}

body {
    min-width: 320px;
    min-height: 100vh;
    margin: 0;
    color: var(--scai-ink);
    background: var(--scai-canvas);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

button,
input,
select,
textarea {
    font: inherit;
}

.pasek {
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 4.5rem;
    padding: 0.75rem max(1.25rem, calc((100vw - 72rem) / 2));
    border-bottom: 1px solid var(--scai-border);
    background: rgba(248, 246, 242, 0.97);
    box-shadow: 0 0.15rem 0.7rem rgba(45, 43, 39, 0.035);
    overflow: visible;
}

.marka {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    color: var(--scai-ink-strong);
    font-size: 1.05rem;
    font-weight: 650;
    text-decoration: none;
}

.marka-tekst {
    display: block;
    line-height: 1.05;
}

.marka strong {
    color: var(--scai-ink-strong);
    font-size: 1.02rem;
    letter-spacing: 0.08em;
}

.logo {
    display: inline-grid;
    width: 2.15rem;
    height: 2.15rem;
    place-items: center;
    border: 1px solid #202124;
    border-radius: 0.48rem;
    color: #f7f5f1;
    background: var(--scai-accent);
    box-shadow: 0 0.18rem 0.55rem rgba(45, 43, 39, 0.13);
    font-weight: 700;
}

.logo-duze {
    width: 3rem;
    height: 3rem;
    margin-bottom: 1.5rem;
    border-radius: 0.62rem;
    font-size: 1.3rem;
}

.nawigacja {
    display: flex;
    align-items: center;
    gap: 1.25rem;
}

.nawigacja a,
.link-przycisk {
    border: 0;
    padding: 0;
    color: var(--scai-muted-strong);
    background: transparent;
    font-weight: 550;
    text-decoration: none;
    cursor: pointer;
}

.menu-dane {
    position: relative;
    color: var(--scai-muted-strong);
    font-weight: 550;
}

.menu-dane summary {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    list-style: none;
    cursor: pointer;
    user-select: none;
}

.menu-dane summary::-webkit-details-marker { display: none; }
.menu-dane summary::after {
    content: "";
    width: 0.42rem;
    height: 0.42rem;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: translateY(-0.12rem) rotate(45deg);
    transition: transform 150ms ease;
}
.menu-dane[open] summary::after { transform: translateY(0.12rem) rotate(225deg); }
.menu-dane summary:hover,
.menu-dane summary:focus-visible { color: var(--scai-ink-strong); }

.menu-dane-lista {
    position: absolute;
    z-index: 50;
    top: calc(100% + 0.75rem);
    left: 50%;
    display: grid;
    width: max-content;
    min-width: 14rem;
    padding: 0.55rem;
    border: 1px solid var(--scai-border);
    border-radius: 0.7rem;
    background: var(--scai-surface-raised);
    box-shadow: var(--scai-shadow-float);
    transform: translateX(-50%);
}

.nawigacja .menu-dane-lista a {
    padding: 0.55rem 0.7rem;
    border-radius: 0.42rem;
    white-space: nowrap;
}
.nawigacja .menu-dane-lista a:hover,
.nawigacja .menu-dane-lista a:focus-visible { color: var(--scai-ink-strong); background: var(--scai-surface-muted); text-decoration: none; }

.nawigacja a:hover,
.nawigacja a:focus-visible,
.link-przycisk:hover,
.link-przycisk:focus-visible {
    color: var(--scai-ink-strong);
    text-decoration: none;
    background: var(--scai-surface-muted);
}

.nawigacja > a,
.nawigacja > .menu-dane > summary,
.nawigacja > form .link-przycisk {
    border-radius: 0.42rem;
    padding: 0.42rem 0.5rem;
}

.uklad {
    width: min(100% - 3rem, 74rem);
    margin-inline: auto;
    padding-block: clamp(2rem, 6vw, 4.5rem);
}

/* Plan jest narzędziem roboczym, a nie wąską kartą tekstową. Wypełnia prawie
   całe aktualne okno, więc zachowuje wygodną szerokość również po zmianie
   rozmiaru okna lub na dużym ekranie. */
.uklad-planu {
    width: calc(100% - clamp(1rem, 2vw, 2.5rem));
    max-width: none;
}

.uklad-logowania {
    display: grid;
    min-height: 100vh;
    place-items: center;
    padding-block: 2rem;
}

/* Każda niezależna część ekranu dostaje własny oddech; karty nie sklejają się. */
.uklad > * + * { margin-top: 1.5rem; }
.uklad > .naglowek-strony + * { margin-top: 0; }

.karta {
    border: 2px solid var(--scai-border);
    border-radius: var(--scai-radius-card);
    background: var(--scai-surface);
    box-shadow: var(--scai-shadow-card);
}

.karta-logowania {
    width: min(100%, 29rem);
    padding: clamp(1.75rem, 5vw, 3rem);
}

.naglowek-strony {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 2rem;
}

.nadtytul,
.etykieta {
    margin: 0 0 0.45rem;
    color: var(--scai-muted);
    font-size: 0.76rem;
    font-weight: 650;
    letter-spacing: 0.075em;
    text-transform: uppercase;
}

.znacznik {
    display: inline-flex;
    margin-bottom: 1rem;
    padding: 0.45rem 0.75rem;
    border-radius: 999px;
    border: 1px solid var(--scai-border);
    color: var(--scai-muted-strong);
    background: var(--scai-surface-muted);
    font-size: 0.75rem;
    font-weight: 650;
    letter-spacing: 0.08em;
}

h1,
h2,
p {
    overflow-wrap: break-word;
}

h1 {
    margin: 0;
    font-size: clamp(2.15rem, 6vw, 3.6rem);
    font-weight: 520;
    letter-spacing: -0.04em;
    line-height: 1.05;
}

h2 {
    margin: 0;
    font-size: 1.3rem;
    font-weight: 600;
    letter-spacing: -0.02em;
}

.opis {
    max-width: 43rem;
    margin: 0.8rem 0 0;
    color: var(--scai-muted);
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.6;
}

.tozsamosc {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--scai-border);
    border-radius: 0.7rem;
    background: var(--scai-surface-raised);
}

.tozsamosc span:last-child {
    display: grid;
    gap: 0.15rem;
}

.tozsamosc small,
td small {
    display: block;
    color: var(--scai-muted);
}

.avatar {
    display: grid;
    width: 2.5rem;
    height: 2.5rem;
    place-items: center;
    border-radius: 50%;
    color: var(--scai-ink-strong);
    background: var(--scai-surface-muted);
    font-weight: 850;
}

.siatka-statusu {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.15rem;
}

.status {
    padding: 1.5rem;
}

.status h2 {
    margin-bottom: 0.55rem;
}

.status > p:last-child,
.nastepny-etap p:last-child {
    margin: 0;
    color: var(--scai-muted);
    line-height: 1.55;
}

.ikona-statusu {
    display: grid;
    width: 2.4rem;
    height: 2.4rem;
    margin-bottom: 1.4rem;
    place-items: center;
    border-radius: 0.75rem;
    font-weight: 850;
}

.zielona {
    color: var(--scai-success);
    background: var(--scai-success-bg);
}

.niebieska {
    color: var(--scai-info);
    background: var(--scai-info-bg);
}

.fioletowa {
    color: var(--scai-muted-strong);
    background: var(--scai-surface-muted);
}

.nastepny-etap {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
    margin-top: 1.15rem;
    padding: 1.5rem;
}

.nastepny-etap h2 {
    margin-bottom: 0.45rem;
}

.formularz {
    display: grid;
    gap: 0.65rem;
    margin-top: 1.5rem;
}

.formularz label {
    margin-top: 0.45rem;
    color: var(--scai-ink);
    font-weight: 550;
}

.formularz input,
.formularz select,
.formularz textarea {
    width: 100%;
    min-height: 2.9rem;
    border: 1px solid var(--scai-border-strong);
    border-radius: var(--scai-radius-control);
    padding: 0.65rem 0.75rem;
    color: var(--scai-ink-strong);
    background: var(--scai-surface-raised);
}

.formularz input:focus,
.formularz select:focus,
.formularz textarea:focus {
    border-color: var(--scai-accent);
    outline: 3px solid var(--scai-focus);
}

.przycisk {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.75rem;
    border: 0;
    border: 1px solid var(--scai-accent);
    border-radius: var(--scai-radius-control);
    padding: 0.7rem 1rem;
    color: #f8f7f4;
    background: var(--scai-accent);
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
}

.przycisk:hover,
.przycisk:focus-visible {
    background: var(--scai-accent-hover);
}

.przycisk.drugorzedny {
    border-color: var(--scai-border);
    color: var(--scai-ink);
    background: var(--scai-surface-muted);
}

.przycisk.drugorzedny:hover {
    background: #dcdad5;
}

.szeroki {
    width: 100%;
    margin-top: 0.75rem;
}

.komunikat {
    margin-block: 1rem;
    border: 1px solid;
    border-radius: 0.8rem;
    padding: 0.9rem 1rem;
    line-height: 1.45;
}

.komunikat ul {
    margin-block: 0;
    padding-left: 1.25rem;
}

.blad {
    border-color: var(--scai-danger-border);
    color: var(--scai-danger);
    background: var(--scai-danger-bg);
}

.sukces {
    border-color: var(--scai-success-border);
    color: var(--scai-success);
    background: var(--scai-success-bg);
}

.ostrzezenie {
    border-color: var(--scai-warning-border);
    color: var(--scai-warning);
    background: var(--scai-warning-bg);
}

.panel-komunikatu {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.15rem;
}

.panel-komunikatu p {
    margin: 0.2rem 0 0;
}

.karta-formularza {
    max-width: 36rem;
    padding: clamp(1.25rem, 3vw, 1.75rem);
}
.szeroka-karta { max-width:48rem; }
.podsumowanie-danych { max-width:48rem; padding:clamp(1.25rem, 3vw, 1.75rem); }
.karta-stanu-bazy { padding:clamp(1.25rem, 3vw, 1.75rem); }
.podsumowanie-danych p { margin:.45rem 0; color:#526b88; }
.podsumowanie-danych ul { display:flex; flex-wrap:wrap; gap:.4rem .8rem; margin:.8rem 0 0; padding:0; list-style:none; }
.podsumowanie-danych li { padding:.28rem .52rem; border-radius:.5rem; background:rgba(225, 234, 248, .65); font-size:.86rem; }
.panel-diagnostyki { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:clamp(1.25rem, 3vw, 1.75rem); }
.panel-diagnostyki p { margin:.4rem 0; color:#526b88; }
.dziennik-logow { padding:clamp(1.25rem, 3vw, 1.75rem); }
.dziennik-logow pre { max-height:32rem; overflow:auto; margin:1rem 0 0; padding:1rem; border-radius:.65rem; color:#d9e6fb; background:#19273c; font-family:"Cascadia Mono", Consolas, monospace; font-size:.76rem; line-height:1.5; white-space:pre-wrap; overflow-wrap:anywhere; }

.podpowiedz {
    margin: 0;
    color: #6b778e;
    font-size: 0.87rem;
    line-height: 1.45;
}

.kolumny-administracji {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(18rem, 25rem);
    gap: 1.5rem;
    align-items: start;
}

.kolumny-importu {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.15rem;
    align-items: start;
}

.historia-importow,
.pokrycie {
    margin-top: 1.15rem;
}

.opis-karty {
    color: #63708a;
    line-height: 1.55;
}

.metryki {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.8rem;
    margin-bottom: 1.15rem;
}

.metryki.zwarte {
    grid-template-columns: repeat(3, 1fr);
    margin-block: 1.4rem;
}

.metryki.zwarte > div,
.metryka {
    display: grid;
    gap: 0.25rem;
}

.metryki.zwarte strong,
.metryka strong {
    font-size: 1.55rem;
}

.metryki.zwarte span,
.metryka span {
    color: #6b778e;
    font-size: 0.82rem;
}

.metryka {
    padding: 1.2rem;
}

.stan-importu {
    display: inline-flex;
    border-radius: 999px;
    padding: 0.3rem 0.6rem;
    color: #48546a;
    background: #edf0f4;
    font-size: 0.76rem;
    font-weight: 850;
    text-transform: uppercase;
}

.stan-importu.aktywny {
    color: #087d6c;
    background: #ddf7f1;
}

.stan-importu.podglad {
    color: #2445b8;
    background: #e8eeff;
}

.stan-importu.duzy {
    padding: 0.55rem 0.8rem;
}

.akcje-importu {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 1.15rem;
}

.przycisk.niebezpieczny {
    color: #8c2029;
    background: #fff1f1;
}

.przycisk.niebezpieczny:hover {
    background: #fbdede;
}

.pokrycie th,
.pokrycie td {
    white-space: nowrap;
}

.plan-filtry {
    display: grid;
    gap: 1.2rem;
    margin-bottom: 1.15rem;
    padding: 1.5rem;
}

.kontrolki-planu {
    display: grid;
    grid-template-columns: minmax(13rem, 1.5fr) repeat(2, minmax(11rem, 1fr)) auto;
    align-items: end;
    gap: 0.8rem;
}

.kontrolki-planu > div {
    display: grid;
    gap: 0.35rem;
}

.kontrolki-planu label {
    color: #43506a;
    font-size: 0.86rem;
    font-weight: 750;
}

.kontrolki-planu input,
.kontrolki-planu select {
    width: 100%;
    min-height: 2.75rem;
    border: 1px solid #cbd3df;
    border-radius: 0.65rem;
    padding: 0.6rem 0.7rem;
    color: #172033;
    background: #fff;
}

.kontrolki-planu input:focus,
.kontrolki-planu select:focus {
    border-color: #3157d6;
    outline: 3px solid rgba(49, 87, 214, 0.14);
}

.wynik-filtrow {
    margin: 0;
    color: #63708a;
    font-size: 0.9rem;
}

.plan-tydzien {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.8rem;
    align-items: start;
}

.dzien-planu {
    min-width: 0;
    overflow: hidden;
}

.naglowek-dnia {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 1rem;
    border-bottom: 1px solid #e6eaf0;
}

.naglowek-dnia h2 {
    font-size: 1rem;
}

.naglowek-dnia span {
    color: #6b778e;
    font-size: 0.75rem;
    white-space: nowrap;
}

.lekcje-planu {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}

.lekcja-planu {
    padding: 0.8rem;
    border-bottom: 1px solid #edf0f4;
}

.lekcja-planu:last-child {
    border-bottom: 0;
}

.meta-lekcji {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}

.meta-lekcji strong {
    display: grid;
    width: 1.5rem;
    height: 1.5rem;
    place-items: center;
    border-radius: 0.45rem;
    color: #2445b8;
    background: #e8eeff;
    font-size: 0.78rem;
}

.meta-lekcji span {
    color: #68758d;
    font-size: 0.76rem;
    font-variant-numeric: tabular-nums;
}

.wpisy-lekcji {
    display: grid;
    gap: 0.35rem;
}

.wpis-planu {
    display: grid;
    gap: 0.12rem;
    border-left: 3px solid #8fa9ff;
    padding: 0.35rem 0.45rem;
    color: #32415c;
    background: #f5f7ff;
    font-size: 0.8rem;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.wpis-planu strong {
    color: #2445b8;
    font-size: 0.74rem;
}

.wpis-planu form {
    margin-top: 0.1rem;
}

.edytuj-wpis {
    font-size: 0.74rem;
}

.dodaj-wpis {
    margin-left: auto;
    color: #2445b8;
    font-size: 0.74rem;
    font-weight: 750;
    text-decoration: none;
}

.dodaj-wpis:hover,
.dodaj-wpis:focus-visible {
    text-decoration: underline;
    text-underline-offset: 0.2rem;
}

.kolumny-edycji {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.15rem;
    align-items: start;
}

.akcja-pomocnicza {
    margin-top: 1rem;
}

.wartosc-zrodlowa {
    min-height: 4.2rem;
    margin: 1rem 0 0;
    padding: 0.85rem;
    border-radius: 0.7rem;
    color: #526079;
    background: #f3f5f8;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.historia-komorki {
    margin-top: 1.15rem;
}

.brak-wpisow,
.brak-wynikow {
    margin: 0;
    color: #7b879b;
    font-size: 0.8rem;
    font-style: italic;
}

.brak-wynikow.globalny {
    margin-top: 1rem;
    padding: 0.85rem 1rem;
    border-radius: 0.7rem;
    color: #734e03;
    background: #fff8df;
}

.tabela-karta {
    padding: clamp(1.25rem, 3vw, 1.75rem);
}

.tabela-przewijana {
    overflow-x: auto;
    margin-top: 1rem;
}

table {
    width: 100%;
    border-collapse: collapse;
}

th,
td {
    border-bottom: 1px solid #e6eaf0;
    padding: 0.85rem 0.7rem;
    text-align: left;
    vertical-align: middle;
}

th {
    color: #66738a;
    font-size: 0.7rem;
    font-weight: 550;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.dzialanie {
    text-align: right;
}

.haslo-jednorazowe {
    margin: 1.5rem 0;
    padding: clamp(1.2rem, 3vw, 1.7rem);
    border: 1px solid rgba(82, 125, 196, 0.3);
    border-radius: 1.1rem;
    background: rgba(230, 239, 255, 0.64);
    box-shadow: 0 1rem 2.5rem rgba(48, 75, 122, 0.1);
    backdrop-filter: blur(14px);
}

.haslo-jednorazowe h2 { margin-top: 0; }
.haslo-jednorazowe p:last-child { margin-bottom: 0; color: #40536e; }
.haslo-wartosc {
    margin: .85rem 0;
    padding: .75rem .9rem;
    overflow-wrap: anywhere;
    border: 1px dashed rgba(46, 83, 158, 0.38);
    border-radius: .65rem;
    color: #193f93;
    background: rgba(255, 255, 255, 0.62);
}
.haslo-wartosc code { font-family: "Cascadia Mono", Consolas, monospace; font-size: 1rem; font-weight: 650; }

.stan-konta {
    display: inline-flex;
    border-radius: 999px;
    padding: 0.3rem 0.55rem;
    font-size: 0.78rem;
    font-weight: 800;
}

.stan-konta.aktywny {
    color: #087d6c;
    background: #ddf7f1;
}

.stan-konta.wylaczony {
    color: #68758d;
    background: #edf0f4;
}

.tekst-wyciszony {
    color: #8a95a8;
}

.tylko-czytnik {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
}

.karta-bledu {
    max-width: 39rem;
    padding: 2rem;
}

.ikona-bledu {
    display: grid;
    width: 3rem;
    height: 3rem;
    margin-bottom: 1.5rem;
    place-items: center;
    border-radius: 50%;
    color: #8c2029;
    background: #fff1f1;
    font-size: 1.4rem;
    font-weight: 900;
}

code {
    border-radius: 0.3rem;
    padding: 0.1rem 0.3rem;
    background: #edf1f7;
}

.akcje-planu,
.akcje-wiersz {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.akcje-planu {
    margin: 1.25rem 0;
}

.akcje-planu h2,
.lista-konfliktow h2,
.instrukcja-tagow h2 {
    margin: 0.2rem 0 0.45rem;
}

.akcje-planu p,
.instrukcja-tagow p {
    margin-bottom: 0;
}

.akcje-wiersz {
    justify-content: flex-start;
    flex-wrap: wrap;
}

.akcje-wiersz form {
    margin: 0;
}

.lista-konfliktow,
.instrukcja-tagow {
    margin-top: 1.25rem;
}

.konflikt {
    margin-top: 1rem;
    padding: 1rem;
    border-left: 0.3rem solid #b54708;
    border-radius: 0.35rem;
    background: #fff7ed;
}

.konflikt header {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
}

.konflikt ul {
    margin: 0.75rem 0 0 1.1rem;
    padding: 0;
}

.lista-zastepstw {
    margin-top: 1.25rem;
    padding: clamp(1.15rem, 3vw, 1.7rem);
}

.zastepstwo {
    margin-top: 1rem;
    padding: 1rem;
    border-left: 0.3rem solid #526b88;
    border-radius: 0.35rem;
    background: #f7f9fc;
}

.zastepstwo header {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
}

.status-zastepstwa {
    border-radius: 999px;
    padding: 0.18rem 0.55rem;
    font-size: 0.8rem;
    font-weight: 800;
    text-transform: uppercase;
}

.status-zastepstwa.szkic { color: #8a4b00; background: #fff3d6; }
.status-zastepstwa.zatwierdzone { color: #14653b; background: #dcf7e8; }
.status-zastepstwa.odrzucone, .status-zastepstwa.niewazne { color: #8c2029; background: #fff1f1; }
.opis-maly { color: #526b88; font-size: 0.88rem; }

.grupa-klasy {
    margin: 0.45rem 0;
    border: 1px solid #dce5ef;
    border-radius: 0.35rem;
    background: #fff;
}

.grupa-klasy summary {
    cursor: pointer;
    padding: 0.6rem 0.75rem;
    color: #263b55;
}

.grupa-klasy .wpis-planu { margin: 0 0.65rem 0.5rem; }

.propozycja-ai { max-width: 52rem; }
.porownanie-ai { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 1rem 0; }
.porownanie-ai div { padding: 1rem; border-radius: 0.35rem; background: #f2f6fb; }
.porownanie-ai span { display: block; margin-bottom: 0.5rem; color: #526b88; font-weight: 800; }
.porownanie-ai code { display: block; white-space: pre-wrap; overflow-wrap: anywhere; }

@media (max-width: 52rem) {
    .siatka-statusu,
    .kolumny-administracji,
    .kolumny-importu,
    .kolumny-edycji {
        grid-template-columns: 1fr;
    }

    .metryki {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .kontrolki-planu {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .plan-tydzien {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .karta-formularza {
        max-width: none;
    }

    .akcje-planu {
        align-items: stretch;
        flex-direction: column;
    }
}

@media (max-width: 42rem) {
    .pasek,
    .naglowek-strony,
    .nastepny-etap,
    .panel-komunikatu {
        align-items: stretch;
        flex-direction: column;
    }

    .akcje-importu {
        align-items: stretch;
        flex-direction: column;
    }

    .akcje-importu form,
    .akcje-importu .przycisk {
        width: 100%;
    }

    .pasek {
        gap: 0.8rem;
    }

    .nawigacja {
        flex-wrap: wrap;
        gap: 0.85rem 1.1rem;
    }

    .menu-dane { width: 100%; }
    .menu-dane-lista {
        position: static;
        width: 100%;
        min-width: 0;
        margin-top: 0.55rem;
        transform: none;
        box-shadow: none;
    }

    .tozsamosc {
        align-self: stretch;
    }

    .kontrolki-planu,
    .plan-tydzien {
        grid-template-columns: 1fr;
    }

    .kontrolki-planu .przycisk {
        width: 100%;
    }

    .konflikt header {
        align-items: flex-start;
        flex-direction: column;
    }

    .zastepstwo header {
        align-items: flex-start;
        flex-direction: column;
    }

    .porownanie-ai { grid-template-columns: 1fr; }
    .lekcje-zgloszenia { grid-template-columns: 1fr; }
}

/* Unified document intake and evidence review. */
.naglowek-dokumentow { max-width: 62rem; }
.naglowek-dokumentow > p:last-child { max-width: 54rem; }
.dokument-upload-glowny {
    max-width: none;
    padding: clamp(1.25rem, 3vw, 2rem);
    border-color: var(--scai-border-strong);
}
.pole-pliku-dokumentu { display: grid; gap: .25rem; }
.pole-pliku-tytul { font-size: 1rem; font-weight: 700; color: var(--scai-text); }
.wybrany-plik { padding: .75rem .9rem; border: 2px solid var(--scai-border); border-radius: .55rem; background: var(--scai-surface-quiet); font-weight: 650; }
.przycisk-analizy { min-width: 14rem; justify-content: center; gap: .6rem; }
.spinner-inline { width: 1rem; height: 1rem; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: scai-spin .75s linear infinite; }
@keyframes scai-spin { to { transform: rotate(360deg); } }
.status-wysylania { margin: 0; }
.etapy-informacyjne { margin-top: 1rem; }
.dokumenty-sekcja-drugorzedna { margin-top: 1.5rem; background: var(--scai-surface-quiet); }
.etapy-dokumentu {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.65rem;
    margin: 0 0 1.25rem;
    padding: 0;
    list-style: none;
    counter-reset: dokument-etap;
}

.etapy-dokumentu li {
    counter-increment: dokument-etap;
    padding: 0.65rem 0.75rem;
    border: 2px solid var(--scai-border);
    border-radius: 0.55rem;
    background: var(--scai-surface-raised);
    color: var(--scai-muted);
    font-size: 0.82rem;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: .5rem;
    min-height: 3.35rem;
}

.etapy-dokumentu li::before {
    content: counter(dokument-etap);
    font-weight: 700;
    display: grid;
    place-items: center;
    width: 1.45rem;
    height: 1.45rem;
    border-radius: 50%;
    background: var(--scai-surface-quiet);
}
.etapy-dokumentu li small { color: var(--scai-muted); font-size: .7rem; text-transform: uppercase; letter-spacing: .04em; }
.etapy-dokumentu li.status-completed {
    color: var(--scai-text);
    border-color: var(--scai-border-strong);
    background: var(--scai-surface-quiet);
}
.etapy-dokumentu li.status-completed::before { content: "✓"; }
.etapy-dokumentu li.status-in_progress { color: var(--scai-text); border-color: var(--scai-ink); background: var(--scai-surface-raised); }
.etapy-dokumentu li.status-in_progress::before { content: ""; border: 2px solid var(--scai-muted); border-right-color: transparent; background: transparent; animation: scai-spin .75s linear infinite; }
.etapy-dokumentu li.status-warning { color: var(--scai-warning); border-color: var(--scai-warning-border); background: var(--scai-warning-bg); }
.etapy-dokumentu li.status-warning::before { content: "!"; background: transparent; border: 1px solid currentColor; }
.etapy-dokumentu li.status-failed { color: var(--scai-danger); border-color: var(--scai-danger-border); background: var(--scai-danger-bg); }
.etapy-dokumentu li.status-failed::before { content: "×"; background: transparent; border: 1px solid currentColor; }
.etapy-dokumentu li.aktualny { box-shadow: 0 0 0 2px color-mix(in srgb, var(--scai-ink) 16%, transparent); }

.panel-postepu { padding: clamp(1.25rem, 3vw, 2rem); }
.panel-postepu-naglowek { display: flex; align-items: start; justify-content: space-between; gap: 1rem; }
.panel-postepu-naglowek h2 { margin-bottom: .35rem; }
.procent-postepu { font-size: clamp(1.8rem, 5vw, 3rem); line-height: 1; font-weight: 500; }
.pasek-postepu { width: 100%; height: .65rem; overflow: hidden; margin: 1rem 0; border-radius: 999px; background: var(--scai-surface-quiet); border: 1px solid var(--scai-border); }
.pasek-postepu span { display: block; height: 100%; border-radius: inherit; background: var(--scai-ink); transition: width .28s ease; }
.panel-postepu.status-waiting_review .pasek-postepu span { background: var(--scai-warning); }
.panel-postepu.status-failed .pasek-postepu span { background: var(--scai-danger); }
.komunikat-postepu { margin-bottom: .35rem; font-size: 1.05rem; }
.blad-przetwarzania, .blokada-aktywacji { margin-top: 1rem; padding: 1rem; border: 1px solid var(--scai-danger-border); border-radius: .55rem; background: var(--scai-danger-bg); color: var(--scai-danger); }
.banner-review { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin-bottom: 1rem; padding: 1.15rem 1.25rem; border: 2px solid var(--scai-warning-border); border-radius: .7rem; background: var(--scai-warning-bg); }
.banner-review h2, .banner-review p { margin-bottom: .25rem; }
.liczniki-review { display: flex; flex-wrap: wrap; gap: .5rem; }
.liczniki-review span { padding: .45rem .65rem; border: 1px solid var(--scai-border); border-radius: 999px; background: var(--scai-surface-quiet); font-size: .8rem; }
.lista-review-otwarta { display: grid; gap: 1rem; margin-top: 1rem; }
.pytania-review { border-color: var(--scai-border-strong); }
.zadanie-review { align-items: start; padding: 1.15rem; border: 2px solid var(--scai-border); border-radius: .65rem; background: var(--scai-surface-raised); }
.zadanie-review-tresc { min-width: 0; flex: 1; }
.zadanie-review h3 { margin: .1rem 0 .8rem; font-size: 1.08rem; }
.fragment-zrodlowy, .rozumienie-scai { display: grid; gap: .25rem; margin: .65rem 0; padding: .7rem .8rem; border-left: 3px solid var(--scai-border-strong); background: var(--scai-surface-quiet); }
.fragment-zrodlowy strong { overflow-wrap: anywhere; }
.powod-review { color: var(--scai-muted-strong); }
.ostrzezenie-review { padding: .65rem .75rem; border-radius: .45rem; color: var(--scai-warning); background: var(--scai-warning-bg); }
.akcje-review { display: flex; flex-wrap: wrap; gap: .5rem; }
.review-techniczny { flex-basis: 100%; color: var(--scai-muted); }
.stan-pusty-review { padding: 1rem; border: 1px solid var(--scai-success-border); border-radius: .55rem; background: var(--scai-success-bg); color: var(--scai-success); }
.podglad-shadow-planu { margin-top: 1rem; }
.znacznik-shadow { display:inline-flex; align-items:center; padding:.35rem .65rem; border:1px solid var(--scai-border); border-radius:999px; color:var(--scai-muted); font-size:.75rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.rozwiazane-review { margin-top: 1rem; }
.zadanie-review.rozwiazane { margin-top: .7rem; opacity: .86; }
.szczegoly-techniczne { margin-top: 1rem; }

.odpowiedz-biblioteki {
    margin-top: 1rem;
    padding: 1rem;
    border: 2px solid var(--scai-border);
    border-radius: 0.55rem;
    background: var(--scai-surface-raised);
}

.blad-projekcji { color: var(--scai-danger); }

/* Unified document center */
.dokument-upload { max-width: 48rem; }
.formularz-stos { display: grid; gap: .75rem; }
.formularz-stos .przycisk { justify-self: start; }
.siatka-dokumentu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.siatka-dokumentu .karta { min-width: 0; }
.siatka-dokumentu code { overflow-wrap: anywhere; color: var(--scai-muted-strong); }
.zadanie-review { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 1rem; }
.formularz-review { display: grid; gap: .65rem; min-width: min(100%, 22rem); }
.formularz-review label, .kontekst-zrodla { display: grid; gap: .35rem; }
.kontekst-zrodla { margin-top: .65rem; color: var(--scai-muted); }
.kontekst-zrodla span { padding: .3rem .45rem; border-left: 2px solid var(--scai-border); font-size: .82rem; }
.kontekst-zrodla .zrodlo-glowne { border-left-color: var(--scai-ink); color: var(--scai-ink); font-weight: 600; }
.status { display: inline-flex; padding: .2rem .55rem; border: 1px solid var(--scai-border); border-radius: 999px; font-size: .78rem; }
.status-ready, .status-active, .status-knowledge_only { color: var(--scai-success); border-color: var(--scai-success-border); background: var(--scai-success-bg); }
.status-review_required, .status-needs_ai, .status-waiting_review { color: var(--scai-warning); border-color: var(--scai-warning-border); background: var(--scai-warning-bg); }
.status-processing { color: var(--scai-text); border-color: var(--scai-border-strong); background: var(--scai-surface-quiet); }
.status-failed, .status-blocked { color: var(--scai-danger); border-color: var(--scai-danger-border); background: var(--scai-danger-bg); }
.wymiary-relacji { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .6rem; margin: 1rem 0; }
.wymiary-relacji > div { display: grid; gap: .2rem; padding: .75rem; border: 1px solid var(--scai-border); border-radius: .55rem; background: var(--scai-surface-quiet); }
.wymiary-relacji small { overflow-wrap: anywhere; color: var(--scai-muted); }
@media (max-width: 48rem) {
    .siatka-dokumentu { grid-template-columns: 1fr; }
    .zadanie-review { align-items: stretch; flex-direction: column; }
    .etapy-dokumentu { grid-template-columns: 1fr; }
    .banner-review, .panel-postepu-naglowek { align-items: stretch; flex-direction: column; }
    .procent-postepu { font-size: 2rem; }
}

.lekcje-zgloszenia { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:.55rem; padding:0; list-style:none; }
.lekcje-zgloszenia li { padding:.65rem; border:1px solid #d9e1ee; border-radius:.6rem; background:#fff; }
.lekcje-zgloszenia strong, .lekcje-zgloszenia span { display:block; }
.lekcje-zgloszenia span { margin-top:.25rem; font-size:.9rem; }
.etykieta-klasy { display:inline-block; margin-top:.25rem; color:#1e4b91; font-weight:700; }
.porownanie-zmiany { display:block; margin-top:.55rem; padding:.6rem .7rem; border-radius:.7rem; }
.porownanie-zmiany small { display:block; margin-bottom:.2rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.porownanie-zmiany.bazowe { background:#eef2f7; color:#31415a; }
.porownanie-zmiany.tymczasowe { background:#eaf1ff; color:#123b84; }
.uwaga-kontroli { display:block; margin-top:.5rem; color:#8a4b00; font-weight:700; }
.informacje-szczegolne { margin:1rem 0; padding:.9rem 1rem; border:1px solid #e6b84f; border-left:4px solid #c47b00; border-radius:.75rem; background:#fff8e8; color:#563600; }
.informacje-szczegolne p { margin:.35rem 0; }
.informacje-szczegolne ul { margin:.4rem 0 0; padding-left:1.2rem; }
.historia-czatu { display:grid; gap:.6rem; max-height:28rem; overflow:auto; margin:1rem 0; padding:.25rem; }
.dymek-czatu { max-width:85%; padding:.7rem .85rem; border-radius:.8rem; }
.dymek-czatu p { margin:.25rem 0 0; white-space:pre-wrap; }
.dymek-czatu.uzytkownik { justify-self:end; background:#e9efff; }
.dymek-czatu.asystent { justify-self:start; background:#f3f6fa; }

@media (max-width: 42rem) {
    .lekcje-zgloszenia { grid-template-columns:1fr; }
    .dymek-czatu { max-width:95%; }
}

/* Czytelny arkusz planu i skrócona lista zastępstw. */
.jednorazowa-odpowiedz { margin:1rem 0; padding:.85rem 1rem; border-left:.3rem solid #3157d6; border-radius:.55rem; background:#f2f6ff; }
.jednorazowa-odpowiedz p { margin:.35rem 0; white-space:pre-wrap; }
.jednorazowa-odpowiedz small { display:block; margin-top:.35rem; }
.zrodla-odpowiedzi { color:#365070; }
.zrodla-odpowiedzi strong { color:#243b5a; }
.lista-zmian-kompaktowa { margin:.9rem 0; }
.lista-zmian-kompaktowa h3 { margin:0 0 .55rem; font-size:1rem; }
.wiersz-zmiany { display:grid; grid-template-columns:2rem minmax(0,1fr); gap:.7rem; padding:.65rem 0; border-top:1px solid #dfe6ef; }
.wiersz-zmiany:first-of-type { border-top:0; }
.numer-lekcji { display:grid; width:1.8rem; height:1.8rem; place-items:center; border-radius:50%; color:#2445b8; background:#e8eeff; font-weight:800; font-variant-numeric:tabular-nums; }
.wiersz-zmiany strong { display:block; color:#172a46; }
.wiersz-zmiany p { margin:.22rem 0 0; line-height:1.42; }
.wiersz-zmiany p span { color:#65728a; font-size:.82rem; font-weight:750; }
.oryginal-zgloszenia { margin-top:.6rem; padding:.65rem .75rem; border:1px solid #dce5ef; border-radius:.4rem; background:#fff; }
.oryginal-zgloszenia summary { cursor:pointer; color:#263b55; font-weight:700; }
.oryginal-zgloszenia p { margin:.55rem 0 .25rem; white-space:pre-wrap; }
.informacje-surowe { border-left:4px solid #64748b; }
.informacje-surowe ul { display:grid; gap:.65rem; margin:.75rem 0 0; padding-left:1.2rem; }
.informacje-surowe li { padding-left:.1rem; }
.informacje-surowe span { display:block; margin-top:.2rem; color:#334155; white-space:pre-wrap; }

.kontrolki-zoom { display:inline-flex; align-items:center; gap:.45rem; margin-top:.8rem; }
.kontrolki-zoom .przycisk { min-width:2.8rem; min-height:2.6rem; padding:.35rem .7rem; font-size:1.25rem; }
.kontrolki-zoom output { min-width:3.4rem; text-align:center; font-weight:800; font-variant-numeric:tabular-nums; }
.arkusz-planu-przewijany { overflow:auto; max-width:100%; margin-top:1rem; padding:.25rem; border:1px solid #dce5ef; border-radius:.75rem; background:#eef2f7; cursor:grab; touch-action:pan-x pan-y; }
.arkusz-planu-przewijany.jest-przeciagany { cursor:grabbing; user-select:none; }
.arkusz-planu-przewijany .komorka-planu { cursor:pointer; }
.arkusz-planu { --plan-zoom:1; width:max-content; min-width:100%; zoom:var(--plan-zoom); transform-origin:top left; }
.dzien-arkusza { margin:0 0 .85rem; overflow:hidden; border:1px solid #cfd9e7; border-radius:.55rem; background:#fff; }
.dzien-arkusza:last-child { margin-bottom:0; }
.dzien-arkusza h2 { margin:0; padding:.6rem .8rem; color:#172a46; background:#e7edf7; font-size:1rem; }
.dzien-arkusza table { width:max-content; min-width:100%; border-collapse:collapse; table-layout:fixed; }
.dzien-arkusza th, .dzien-arkusza td { min-width:7.5rem; height:3.05rem; padding:.2rem; border:1px solid #dbe3ee; vertical-align:top; }
.dzien-arkusza thead th { position:sticky; top:0; z-index:2; max-width:8rem; color:#31415a; background:#f7f9fc; font-size:.69rem; line-height:1.15; text-align:center; text-transform:none; letter-spacing:0; overflow-wrap:anywhere; }
.dzien-arkusza thead th small { display:block; margin-top:.15rem; color:#6b778e; font-weight:700; }
.dzien-arkusza .naroznik-arkusza { color:#526b88; background:#e7edf7; }
.dzien-arkusza .naglowek-klasy { color:#1b467e; background:#dfeaff; font-size:.78rem; font-weight:850; letter-spacing:.04em; }
.dzien-arkusza thead tr:first-child th { border-bottom:2px solid #8298b7; }
.dzien-arkusza .poczatek-klasy { border-left:2px solid #8298b7 !important; }
.dzien-arkusza .kolumna-czas { min-width:5.8rem; width:5.8rem; }
.dzien-arkusza .kolumna-lekcja { min-width:4rem; width:4rem; }
.dzien-arkusza .kolumna-dodaj { min-width:2.5rem; width:2.5rem; }
.dzien-arkusza .czas { min-width:5.8rem; padding-top:.75rem; color:#68758d; background:#f8fafc; font-size:.72rem; font-variant-numeric:tabular-nums; text-align:center; }
.dzien-arkusza .numer { min-width:4rem; padding-top:.6rem; color:#2445b8; background:#f8fafc; font-size:1rem; text-align:center; }
.dzien-arkusza td form { margin:0; }
.komorka-planu { display:block; width:100%; min-height:2.55rem; padding:.35rem .4rem; border:0; border-radius:.32rem; color:#152f65; background:#eaf1ff; font:inherit; font-size:.76rem; line-height:1.2; text-align:left; overflow-wrap:anywhere; cursor:pointer; }
.komorka-planu:hover, .komorka-planu:focus-visible { color:#fff; background:#3157d6; outline:3px solid rgba(49,87,214,.2); }
.komorka-planu small { display:block; margin-bottom:.1rem; color:#4266a6; font-size:.63rem; font-weight:800; letter-spacing:.03em; }
.komorka-planu:hover small, .komorka-planu:focus-visible small { color:#dce7ff; }
.wyjatek-wirtualnej-grupy { background:#fff0f1 !important; }
.znacznik-wyjatku { display:block; padding:.75rem .25rem; color:#a22d3d; font-size:.67rem; font-weight:800; text-align:center; }
.dodaj-komorke { min-width:2.5rem !important; width:2.5rem; padding-top:.55rem !important; text-align:center; }
.dodaj-komorke a { display:inline-grid; width:1.65rem; height:1.65rem; place-items:center; border-radius:50%; color:#2445b8; background:#e8eeff; font-weight:850; text-decoration:none; }
.dodaj-komorke a:hover, .dodaj-komorke a:focus-visible { color:#fff; background:#3157d6; outline:3px solid rgba(49,87,214,.2); }
.dzien-arkusza td[hidden], .dzien-arkusza th[hidden] { display:none; }
.dzien-arkusza tr.bez-wyniku { display:none; }
.edytor-kontekstowy { width:min(32rem, calc(100vw - 2rem)); padding:1.25rem; border:1px solid #c8d4e4; border-radius:1rem; box-shadow:0 1.5rem 4rem rgba(20,38,70,.25); }
.reset-hasla { display:inline; margin-top:.45rem; }
.reset-hasla .link-przycisk { color:#2445b8; font-size:.82rem; }
.edytor-macierzy table { min-width:70rem; table-layout:fixed; }
.edytor-macierzy { scroll-margin-top:1rem; }
.edytor-macierzy > .opis-karty { margin:.5rem 0 0; }
.rozmowa-zastepstw { display:flex; flex-direction:column; gap:.5rem; min-height:6rem; max-height:18rem; margin:.6rem 0; padding:.65rem; overflow:auto; border:1px solid #d9e3ef; border-radius:.6rem; background:rgba(247,250,254,.88); }
.rozmowa-zastepstw .dymek-czatu { margin:0; white-space:pre-line; }
.propozycje-asystenta-zastepstw { display:grid; gap:.35rem; margin:.75rem 0 0; padding:.7rem .8rem .7rem 2rem; border:1px solid #9ad3ad; border-radius:.6rem; color:#17623a; background:#effaf2; font-size:.84rem; }
.zasady-asystenta-zastepstw { margin-top:.75rem; padding-top:.65rem; border-top:1px solid #dce5ef; color:#53647b; font-size:.8rem; }
.zasady-asystenta-zastepstw summary { cursor:pointer; font-weight:700; }
.zasady-asystenta-zastepstw p { margin:.45rem 0 0; }
.przeglad-dnia { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)) minmax(15rem,2fr); gap:.55rem; align-items:stretch; margin:1rem 0; }
.przeglad-dnia > div { display:flex; flex-direction:column; justify-content:center; min-height:4.2rem; padding:.6rem .75rem; border:1px solid #d9e3ef; border-radius:.6rem; color:#53647b; background:#f7f9fc; font-size:.78rem; }
.przeglad-dnia strong { color:#1f4690; font-size:1.25rem; line-height:1.1; }
.wolni-wedlug-lekcji { flex-direction:row !important; flex-wrap:wrap; align-content:center; gap:.25rem .5rem; }
.wolni-wedlug-lekcji b { padding:.18rem .32rem; border-radius:.32rem; color:#17623a; background:#edf8f0; font-size:.72rem; }
.podsumowanie-wysylki { margin:.8rem 0 1rem; padding:.7rem .8rem; border:1px solid #dce5ef; border-radius:.6rem; background:#f7f9fc; }
.podsumowanie-wysylki ul { margin:.45rem 0 0; padding-left:1.15rem; }
.bez-ostrzezen { color:#17623a; }
.potwierdzenie-imienia { display:block; margin-top:.55rem; cursor:pointer; }
.kontrola-tozsamosci .komunikat p { margin:.4rem 0 0; }
.legenda-zastepstw { display:flex; flex-wrap:wrap; gap:.45rem 1.1rem; margin:1rem 0 .2rem; color:#526b88; font-size:.8rem; line-height:1.4; }
.legenda-zastepstw span { padding:.32rem .5rem; border-radius:.45rem; background:#f4f7fb; }
.legenda-zastepstw b { color:#2445b8; }
.notatka-dodatkowa { margin-top:1rem; padding:.75rem .9rem; border:1px solid #dce5ef; border-radius:.75rem; background:#fbfcfe; }
.notatka-dodatkowa summary { color:#263b55; cursor:pointer; }
.notatka-dodatkowa .formularz { margin-top:.75rem; }
.stan-wspolnego-szkicu { margin:.85rem 0 0; color:#63708a; font-size:.82rem; }
.wysylka-szkicu { align-items:center; justify-content:space-between; margin-top:1rem; padding-top:1rem; border-top:1px solid #dce5ef; }
.przycisk.jest-wysylane { gap:.5rem; opacity:.82; cursor:wait; }
.przycisk.jest-wysylane::before { content:""; width:.85rem; height:.85rem; border:2px solid rgba(255,255,255,.45); border-top-color:#fff; border-radius:50%; animation:obrot-wysylki .75s linear infinite; }
@keyframes obrot-wysylki { to { transform:rotate(360deg); } }
.edytor-macierzy th, .edytor-macierzy td { border:1px solid #dce5ef; vertical-align:top; }
.edytor-macierzy th { padding:.45rem; color:#24405e; background:#f4f7fb; text-align:left; }
.komorka-zastepstwa { min-width:8.2rem; padding:.2rem; background:#fff; }
.komorka-zastepstwa.ma-zmiane { background:#ecf7ef; }
.przycisk-komorka { display:block; width:100%; min-height:4.5rem; padding:.35rem; border:0; border-radius:.35rem; color:#1b365f; background:#edf3ff; font:inherit; text-align:left; cursor:pointer; }
.przycisk-komorka:hover, .przycisk-komorka:focus-visible { outline:3px solid rgba(49,87,214,.25); background:#dce8ff; }
.przycisk-komorka small { display:block; color:#61718b; font-size:.72rem; line-height:1.2; }
.przycisk-komorka .zajecia-wspolne { color:#244b86; font-weight:800; }
.przycisk-komorka .brak-zajec-wspolnych { color:#78869a; }
.przycisk-komorka .zajecia-indywidualne { margin-top:.28rem; padding-top:.28rem; border-top:1px solid #d7e0ec; color:#435a78; }
.przycisk-komorka .zajecia-indywidualne b { color:#2f4969; }
.przycisk-komorka .zajecia-indywidualne em { color:#17623a; font-style:normal; font-weight:800; }
.wybor-ucznia { margin:.65rem 0; padding:.65rem; border:1px solid #dce5ef; border-radius:.6rem; background:#f7f9fc; }
.wybor-ucznia select { width:100%; margin-top:.3rem; }
.wybor-ucznia .podpowiedz { margin:.4rem 0 0; }
.formularz fieldset { border:1px solid #d7e1ee; border-radius:.75rem; padding:.8rem 1rem; margin:0 0 .85rem; }
.formularz legend { padding:0 .35rem; color:#3e5878; font-weight:600; }
.wybor { display:inline-flex; align-items:center; gap:.35rem; margin:.25rem .8rem .25rem 0; color:#223750; }
.wybor input { width:auto; margin:0; }
.lista-uwag { margin:.3rem 0; padding-left:1.25rem; display:grid; gap:.45rem; }
.blad-tekstu { color:#9a3434; }
.przycisk-komorka strong { display:block; margin-top:.35rem; color:#17623a; font-size:.76rem; }
.lista-dostepnosci { display:grid; max-height:14rem; overflow:auto; gap:.35rem; padding:.4rem 0; }
.lista-dostepnosci button { padding:.45rem .55rem; border:1px solid #d3dcea; border-radius:.4rem; background:#fff; text-align:left; cursor:pointer; }
.lista-dostepnosci .nauczyciel-wolny { color:#0e6336; border-color:#8fd3a7; background:#effaf2; }
.lista-dostepnosci .nauczyciel-zwolniony { color:#0a5d63; border-color:#7fced0; background:#e8fbfb; }
.lista-dostepnosci .nauczyciel-zajety { color:#a32635; border-color:#efadb5; background:#fff2f3; }
.lista-dostepnosci .nauczyciel-nieobecny { color:#8f1f2c; border-color:#db8994; background:#ffe8eb; }
.lista-dostepnosci .nauczyciel-wspomaganie { color:#8a4a18; border-color:#e9b980; background:#fff0df; }
.lista-dostepnosci .nauczyciel-poza_szkola { color:#6b7380; background:#f5f6f8; }
.edytor-kontekstowy::backdrop { background:rgba(23,38,65,.35); }
.edytor-kontekstowy h2 { margin:.2rem 0 .5rem; font-size:1.2rem; }
.odwolanie-calej-klasy,.podglad-zwolnien { padding:.8rem; border:1px solid #e6c071; border-radius:.65rem; background:#fff8df; }
.odwolanie-calej-klasy p,.podglad-zwolnien p { margin:.35rem 0 .65rem; color:#69521e; }
.podglad-zwolnien { border-color:#86cbcf; background:#effcfc; }
.podglad-zwolnien ul { margin:.45rem 0 0; padding-left:1.2rem; }
.zwolnienie-potwierdzone { color:#0a5d63; }
.zwolnienie-mozliwe { color:#765d1d; }
.zamknij-dialog { display:flex; justify-content:flex-end; margin:0; }
.zamknij-dialog button { width:2rem; height:2rem; border:0; border-radius:50%; color:#526b88; background:#edf2f8; font-size:1.3rem; cursor:pointer; }
.okno-wiadomosci-kadry { width:min(48rem, calc(100vw - 2rem)); }
.tekst-dla-kadry { display:block; width:100%; min-height:20rem; margin:1rem 0; padding:.9rem 1rem; border:1px solid #c8d4e4; border-radius:.65rem; color:#172a46; background:#fbfcff; font:400 .94rem/1.55 Montserrat, sans-serif; resize:vertical; white-space:pre-wrap; }
.tekst-dla-kadry:focus { border-color:#3157d6; outline:3px solid rgba(49,87,214,.16); }

/* Wspólny asystent przebudowy jest obok arkusza na dużym ekranie, a nad nim
   na telefonie. Nie zasłania ani nie zmienia samej tabeli. */
.asystent-wariantu { width:auto; margin:1rem 0; padding:1rem; position:static; }
.asystent-wariantu h2 { margin:.2rem 0 .55rem; font-size:1.12rem; }
.asystent-wariantu .formularz { margin-top:.75rem; }
.rozmowa-wariantu { display:flex; max-height:22rem; min-height:9rem; overflow:auto; flex-direction:column; gap:.5rem; margin:.8rem 0; padding:.65rem; border:1px solid #d9e3ef; border-radius:.65rem; background:rgba(248,250,253,.85); }
.rozmowa-wariantu .dymek-czatu { margin:0; white-space:pre-wrap; }
.normy-wariantu { margin-top:.8rem; padding-top:.7rem; border-top:1px solid #dce5ef; color:#50617b; font-size:.8rem; }
.normy-wariantu summary { cursor:pointer; color:#243b5a; font-weight:700; }
.normy-wariantu ul { max-height:12rem; overflow:auto; margin:.55rem 0 0; padding-left:1.2rem; }
.norma-wariantu { padding:.55rem .65rem; border-left:3px solid #148057; border-radius:.35rem; color:#17623a; background:#effaf2; font-size:.82rem; }
.lista-operacji-wariantu { display:grid; gap:.6rem; margin:.8rem 0; padding-left:1.3rem; font-size:.85rem; }
.lista-operacji-wariantu small { display:block; margin-top:.15rem; color:#65728a; }
.porownanie-wariantu { margin:.9rem 0; padding:.8rem; border:1px solid #b9d4c9; border-radius:.7rem; background:rgba(241,255,248,.68); font-size:.86rem; }
.porownanie-wariantu > div { display:flex; flex-wrap:wrap; gap:.45rem; margin:.55rem 0; }
.porownanie-wariantu span { padding:.25rem .5rem; border-radius:999px; background:#fff; border:1px solid #d7e4dd; }
.porownanie-wariantu p { margin:.35rem 0; }
.wariantowa-komorka { color:#17623a; background:#e8f8ee; }
.arkusz-planu td.wariantowe-pole { background:#e8f8ee; box-shadow:inset 0 0 0 1px #84cda6; }
.wariantowa-komorka:disabled { opacity:1; cursor:default; }
.wariantowa-komorka:disabled:hover { color:#17623a; background:#e8f8ee; outline:0; }

@media (max-width:42rem) {
    .asystent-wariantu { margin:1rem 0; }
    .arkusz-planu-przewijany { margin-left:-.35rem; margin-right:-.35rem; border-radius:.45rem; }
    .kontrolki-zoom { width:100%; justify-content:flex-start; }
    .legenda-zastepstw { display:grid; gap:.35rem; }
    .wysylka-szkicu { align-items:stretch; flex-direction:column; }
    .wysylka-szkicu .przycisk { width:100%; }
    .okno-wiadomosci-kadry .akcje-wiersz { align-items:stretch; flex-direction:column; }
    .okno-wiadomosci-kadry .przycisk { width:100%; }
    .przeglad-dnia { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .wolni-wedlug-lekcji { grid-column:1 / -1; }
}
/* Keep facts and proposed moves readable as separate lines in the plan chat. */
.rozmowa-wariantu .dymek-czatu { white-space: pre-line; }
/* Independent activities share a slot without sharing one click target. */
/* The substitutions matrix uses independent small cards.  The permanent plan
   shares this class for multi-line lessons, therefore it gets its own vertical
   layout below instead of inheriting the matrix grid. */
[data-substitution-editor] .komorka-bloki { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,105px),1fr)); gap:6px; align-content:start; }
.arkusz-planu .komorka-bloki { display:flex; flex-direction:column; gap:3px; }
.blok-zajec { display:flex; flex-direction:column; gap:5px; width:100%; min-width:0; min-height:66px; padding:10px; border:1px solid #d9e3f6; border-radius:10px; background:#edf2ff; color:#163355; font:inherit; font-size:.82rem; text-align:left; overflow-wrap:anywhere; cursor:pointer; transition:transform .12s,box-shadow .12s; }
.blok-zajec:hover,.blok-zajec:focus-visible { transform:translateY(-2px); box-shadow:0 4px 12px #2448a225; outline:2px solid #758bde; }
.blok-ucznia { background:#f3efff; border-color:#ded4f4; }
.blok-zmieniony { background:#e9f7ef; border-color:#b4dbc4; }
.blok-odwolany { background:#fff0f0; border-color:#e7bbbb; }
.blok-odwolany > span { text-decoration:line-through; }
.blok-nieobecny { background:#fff0f1; border-color:#df8d97; }
.blok-nieobecny .status-nieobecnosci { color:#9f2534; }
.blok-zastepstwo .opis-zmiany,
.blok-zastepstwo .prowadzacy-zmiany { color:#2459c4; }
.blok-zajec.blok-nauczyciel-wybrany { border:2px solid #d95263 !important; background:#fff0f1 !important; box-shadow:inset 0 0 0 1px #ffe0e4; }
.formularz-faktury { padding:clamp(1.2rem,3vw,2rem); }
.formularz-faktury h2 { margin-bottom:1.2rem; }
.siatka-formularza-dwie { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem 1.25rem; }
.siatka-formularza-dwie > div { display:grid; gap:.4rem; }
.zalacznik-faktury { display:flex; align-items:flex-start; gap:.7rem; padding:1rem; border:1px solid #d7e1f0; border-radius:.8rem; background:#f1f5fc; }
.zwrot-faktury { display:flex; align-items:flex-start; gap:.7rem; padding:1rem; border:1px solid #b8cdf7; border-radius:.8rem; background:#edf4ff; }
.zwrot-faktury input { margin-top:.28rem; }
.zwrot-faktury span { display:grid; gap:.15rem; }
.zwrot-faktury small { color:#536c98; }
.zalacznik-faktury input { margin-top:.28rem; }
.zalacznik-faktury span { display:grid; gap:.15rem; }
.zalacznik-faktury small { color:#68758d; }
.filtr-faktur { padding:1rem 1.25rem; }
.filtr-faktur .formularz { margin:0; }
.tabela-faktur { padding:1.25rem; }
.naglowek-tabeli { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.suma-faktur { color:#2349c5; font-size:1.2rem; white-space:nowrap; }
.typ-dokumentu { display:inline-flex; padding:.25rem .5rem; border-radius:999px; color:#3157a8; background:#e9f0ff; font-size:.78rem; font-weight:600; white-space:nowrap; }
.kwota-faktury { color:#173d84; font-weight:650; white-space:nowrap; }
.ksef-stan { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:clamp(1rem, 2vw, 1.35rem); }
.ksef-stan > * { min-width:0; }
.ksef-stan .podpowiedz { overflow-wrap:anywhere; }
.status-ksef-dopasowana { color:#12663c; background:#e6f7ee; }
.status-ksef-weryfikacja { color:#8a5500; background:#fff3d8; }
.status-ksef-oczekuje { color:#4e5f78; background:#eef2f7; }
.ksef-kandydat { display:grid; gap:.25rem; margin:.65rem 0; padding:.7rem; min-width:18rem; border:1px solid #d7e1f0; border-radius:.6rem; background:#fff; }
.opis-zakupu-tabela { min-width:18rem; max-width:34rem; white-space:pre-wrap; }
.tabela-faktur tr.faktura-do-zwrotu > td { background:#eaf3ff; border-color:#c7dafa; }
.tabela-faktur tr.faktura-do-zwrotu:hover > td { background:#dfedff; }
.tabela-faktur tr.faktura-zwrocona > td { background:#f2faf5; }
.formularz-zwrotu { display:grid; gap:.45rem; min-width:12rem; margin:0; }
.formularz-zwrotu label { display:flex; align-items:flex-start; gap:.45rem; color:#19468f; font-weight:600; }
.formularz-zwrotu input { margin-top:.18rem; }
.formularz-zwrotu .link-przycisk { justify-self:start; font-size:.78rem; }
.status-zwrotu { white-space:nowrap; }
.plan-tylko-odczyt .komorka-planu:disabled { opacity:1; color:inherit; cursor:default; }
.akcje-komorki { display:flex; gap:.7rem; align-items:center; }
.akcje-komorki form { margin:0; }
.link-przycisk.niebezpieczny { color:#a12b3d; }
.historia-planu { display:grid; gap:1rem; margin-bottom:1rem; }
.historia-planu-naglowek { display:flex; align-items:flex-start; justify-content:space-between; gap:1.25rem; }
.historia-planu-naglowek h2 { margin:.15rem 0 .35rem; }
.historia-planu-naglowek form { margin:0; flex:0 0 auto; }
.wersje-planu-lista { display:grid; grid-template-columns:repeat(auto-fit,minmax(12rem,1fr)); gap:.65rem; }
.wersja-planu { display:grid; gap:.4rem; padding:.85rem; border:1px solid var(--scai-border); border-radius:.65rem; background:var(--scai-surface-quiet); }
.wersja-planu.aktualna { border-width:2px; background:var(--scai-surface-raised); }
.wersja-planu small { color:var(--scai-muted); }
.wersja-planu .akcje-wiersz { margin:0; font-size:.85rem; }
.historia-zmian { border-top:1px solid var(--scai-border); padding-top:.8rem; }
.historia-zmian-toolbar { margin:.7rem 0; }
.lista-zmian-planu { display:grid; gap:.6rem; margin:.75rem 0 0; padding:0; list-style:none; }
.zmiana-planu { display:grid; gap:.55rem; padding:.8rem; border:1px solid var(--scai-border); border-radius:.65rem; background:var(--scai-surface-quiet); }
.zmiana-planu.naprawiona { opacity:.72; }
.zmiana-planu-meta { display:flex; flex-wrap:wrap; align-items:center; gap:.55rem; }
.zmiana-planu-meta small { margin-left:auto; color:var(--scai-muted); }
.zmiana-planu p { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:.7rem; align-items:center; margin:0; }
.zmiana-planu p span { overflow-wrap:anywhere; }
.zmiana-planu form input { min-width:12rem; }
.historia-plan-banner { display:flex; flex-wrap:wrap; gap:.45rem; }
.metryka-historii { margin:0; }
@media (max-width:700px) { .siatka-formularza-dwie { grid-template-columns:1fr; } .naglowek-tabeli { align-items:flex-start; flex-direction:column; } }
@media (max-width:700px) { .historia-planu-naglowek { flex-direction:column; } .zmiana-planu p { grid-template-columns:1fr; } .zmiana-planu p b { transform:rotate(90deg); justify-self:start; } }
.nieobecni-nauczyciele { display:grid; gap:.85rem; margin:1rem 0; padding:1rem; border:1px solid #e5b6bd; border-radius:.85rem; background:#fff7f7; }
.nieobecni-nauczyciele h3 { margin:.15rem 0; }
.nieobecni-nauczyciele p { margin:.25rem 0; color:#6e4450; }
.lista-nieobecnych { display:flex; flex-wrap:wrap; gap:.55rem; margin:0; padding:0; list-style:none; }
.lista-nieobecnych li { display:flex; align-items:center; gap:.45rem; padding:.4rem .55rem; border-radius:.5rem; background:#ffe9eb; color:#782637; }
.lista-nieobecnych span { font-size:.82rem; }
.blok-dodaj { background:transparent; border:1px dashed #9cadcb; justify-content:center; min-height:48px; }
.komorka-zastepstwa { vertical-align:top; min-width:125px; padding:6px; }
.edytor-kontekstowy { max-height:90dvh; overflow-y:auto; }
.reczny-edytor { border-bottom:1px solid #d5dfed; padding-bottom:20px; margin-bottom:20px; }
.pusta-komorka-planu { opacity:.7; min-height:34px; border:1px dashed #b3c0db; }
.karta.edytor-macierzy { padding:clamp(12px,2vw,26px); }
.edytor-kontekstowy [data-substitution-form] > .akcje-wiersz { position:sticky; bottom:-1px; padding:12px 0 4px; background:rgba(255,255,255,.97); border-top:1px solid #e0e6ef; }
.edytor-kontekstowy [data-substitution-form] > .akcje-wiersz button { flex:1 1 100px; }

/* --------------------------------------------------------------------------
   SCAI — wspólny, matowy system wizualny

   Ta warstwa porządkuje starsze ekrany bez zmiany ich kontraktów HTML/JS.
   Kolor pozostaje zarezerwowany dla znaczeń: błędu, ostrzeżenia, powodzenia
   oraz wyróżnienia zastępstwa. Wszystkie zwykłe powierzchnie są monochromatyczne.
   -------------------------------------------------------------------------- */

::selection { color: var(--scai-ink-strong); background: #d8d5cf; }

a { color: #4a5055; }
a:hover,
a:focus-visible { color: var(--scai-ink-strong); }

:focus-visible { outline-color: var(--scai-accent); outline-offset: 2px; }

.karta-logowania {
    position: relative;
    overflow: hidden;
    background: var(--scai-surface-raised);
    box-shadow: 0 0.85rem 2.25rem rgba(45, 43, 39, 0.07);
}

.karta-logowania::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 0.2rem;
    background: var(--scai-accent);
}

.opis-karty,
.podpowiedz,
.wynik-filtrow,
.tekst-wyciszony,
.opis-maly,
.stan-wspolnego-szkicu,
.zasady-asystenta-zastepstw,
.normy-wariantu,
.lista-operacji-wariantu small,
.legenda-zastepstw,
.zalacznik-faktury small,
.zwrot-faktury small,
.podsumowanie-danych p,
.panel-diagnostyki p,
.metryki.zwarte span,
.metryka span,
.kontrolki-planu label,
.naglowek-dnia span,
.meta-lekcji span,
.brak-wpisow,
.brak-wynikow,
.tozsamosc small,
td small {
    color: var(--scai-muted);
}

.centrum { text-align: center; }

.podsumowanie-danych li,
.lekcje-zgloszenia li,
.metryka,
.status,
.nastepny-etap,
.plan-filtry,
.porownanie-ai div,
.podsumowanie-wysylki,
.przeglad-dnia > div,
.notatka-dodatkowa,
.wybor-ucznia,
.grupa-klasy,
.zastepstwo {
    border-color: var(--scai-border);
    background: var(--scai-surface-quiet);
}

.metryki.zwarte strong,
.metryka strong,
.przeglad-dnia strong,
.suma-faktur,
.kwota-faktury {
    color: var(--scai-ink-strong);
}

.stan-importu,
.stan-konta,
.status-zastepstwa,
.typ-dokumentu {
    border: 1px solid var(--scai-border);
    color: var(--scai-muted-strong);
    background: var(--scai-surface-muted);
    font-weight: 650;
}

.stan-importu.aktywny,
.stan-konta.aktywny,
.status-zastepstwa.zatwierdzone,
.status-ksef-dopasowana {
    border-color: var(--scai-success-border);
    color: var(--scai-success);
    background: var(--scai-success-bg);
}

.stan-importu.podglad,
.status-ksef-oczekuje {
    border-color: var(--scai-info-border);
    color: var(--scai-info);
    background: var(--scai-info-bg);
}

.status-zastepstwa.szkic,
.status-ksef-weryfikacja {
    border-color: var(--scai-warning-border);
    color: var(--scai-warning);
    background: var(--scai-warning-bg);
}

.status-zastepstwa.odrzucone,
.status-zastepstwa.niewazne,
.stan-konta.wylaczony {
    color: var(--scai-danger);
    background: var(--scai-danger-bg);
}

.kontrolki-planu input,
.kontrolki-planu select,
.tekst-dla-kadry,
.lista-dostepnosci button {
    border-color: var(--scai-border-strong);
    border-radius: var(--scai-radius-control);
    color: var(--scai-ink-strong);
    background: var(--scai-surface-raised);
}

.kontrolki-planu input:focus,
.kontrolki-planu select:focus,
.tekst-dla-kadry:focus {
    border-color: var(--scai-accent);
    outline: 3px solid var(--scai-focus);
}

.przycisk.niebezpieczny,
.link-przycisk.niebezpieczny {
    border-color: var(--scai-danger-border);
    color: var(--scai-danger);
    background: var(--scai-danger-bg);
}

.przycisk.niebezpieczny:hover,
.link-przycisk.niebezpieczny:hover {
    color: #6f3037;
    background: #ecdadd;
}

.tabela-przewijana {
    width: 100%;
    max-width: 100%;
    border: 1px solid var(--scai-border);
    border-radius: 0.65rem;
    background: var(--scai-surface-raised);
}

.tabela-karta,
.kolumny-administracji,
.kolumny-administracji > *,
.kolumny-importu,
.kolumny-importu > * {
    min-width: 0;
}

.tabela-karta { max-width: 100%; overflow: visible; }

/* Tabele administracyjne pozostają w granicach karty również przy długich danych. */
.tabela-uzytkownikow {
    min-width: 42rem;
    table-layout: fixed;
}

.tabela-uzytkownikow th:nth-child(1) { width: 25%; }
.tabela-uzytkownikow th:nth-child(2) { width: 27%; }
.tabela-uzytkownikow th:nth-child(3) { width: 14%; }
.tabela-uzytkownikow th:nth-child(4) { width: 14%; }
.tabela-uzytkownikow th:nth-child(5) { width: 20%; }
.tabela-uzytkownikow td { vertical-align: top; overflow-wrap: anywhere; }
.tabela-uzytkownikow td strong { overflow-wrap: anywhere; }
.tabela-uzytkownikow .dzialanie { text-align: left; }
.tabela-uzytkownikow details form { display: grid; gap: 0.5rem; margin-top: 0.65rem; }
.tabela-uzytkownikow details input { width: 100%; min-width: 0; }

.karta-synchronizacji-tabela { width: 100%; }
.tabela-grup-wirtualnych,
.tabela-patchy-librus {
    min-width: 54rem;
    table-layout: fixed;
}

.tabela-grup-wirtualnych th:nth-child(1) { width: 25%; }
.tabela-grup-wirtualnych th:nth-child(2) { width: 7%; }
.tabela-grup-wirtualnych th:nth-child(3) { width: 18%; }
.tabela-grup-wirtualnych th:nth-child(4) { width: 14%; }
.tabela-grup-wirtualnych th:nth-child(5) { width: 9%; }
.tabela-grup-wirtualnych th:nth-child(6) { width: 27%; }
.tabela-grup-wirtualnych td,
.tabela-patchy-librus td {
    vertical-align: top;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: normal;
}

table { color: var(--scai-ink); }

th,
td { border-color: var(--scai-border); }

th {
    color: var(--scai-muted-strong);
    background: var(--scai-surface-quiet);
    font-weight: 650;
}

tbody tr:hover > td { background: rgba(225, 222, 216, 0.3); }

code {
    color: var(--scai-ink-strong);
    background: var(--scai-surface-muted);
}

.dziennik-logow pre {
    border: 1px solid #3f4144;
    color: #e8e6e1;
    background: #292b2e;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
}

.haslo-jednorazowe {
    border-color: var(--scai-info-border);
    border-radius: var(--scai-radius-card);
    background: var(--scai-info-bg);
    box-shadow: var(--scai-shadow-card);
    backdrop-filter: none;
}

.haslo-jednorazowe p:last-child { color: var(--scai-info); }
.haslo-wartosc {
    border-color: var(--scai-border-strong);
    color: var(--scai-ink-strong);
    background: var(--scai-surface-raised);
}

.naglowek-dnia,
.lekcja-planu,
.wiersz-zmiany,
.wysylka-szkicu,
.reczny-edytor,
.normy-wariantu,
.zasady-asystenta-zastepstw {
    border-color: var(--scai-border);
}

.meta-lekcji strong,
.numer-lekcji,
.avatar,
.dodaj-komorke a {
    color: var(--scai-ink-strong);
    background: var(--scai-surface-muted);
}

.wpis-planu {
    border-left-color: #8b8d8c;
    color: var(--scai-ink);
    background: var(--scai-surface-quiet);
}

.wpis-planu strong,
.dodaj-wpis,
.reset-hasla .link-przycisk,
.etykieta-klasy {
    color: var(--scai-muted-strong);
}

.wartosc-zrodlowa,
.oryginal-zgloszenia,
.dymek-czatu.asystent,
.rozmowa-zastepstw,
.rozmowa-wariantu {
    border-color: var(--scai-border);
    color: var(--scai-ink);
    background: var(--scai-surface-quiet);
}

.dymek-czatu.uzytkownik,
.jednorazowa-odpowiedz {
    border-color: var(--scai-info-border);
    color: var(--scai-info);
    background: var(--scai-info-bg);
}

.jednorazowa-odpowiedz { border-left-color: var(--scai-info); }
.oryginal-zgloszenia summary,
.notatka-dodatkowa summary,
.normy-wariantu summary,
.grupa-klasy summary { color: var(--scai-ink); }

.konflikt,
.informacje-szczegolne,
.odwolanie-calej-klasy {
    border-color: var(--scai-warning-border);
    border-left-color: var(--scai-warning);
    color: var(--scai-warning);
    background: var(--scai-warning-bg);
}

.brak-wynikow.globalny,
.uwaga-kontroli {
    color: var(--scai-warning);
    background: var(--scai-warning-bg);
}

.arkusz-planu-przewijany {
    border-color: var(--scai-border);
    background: var(--scai-surface-muted);
}

.dzien-arkusza {
    border-color: var(--scai-border-strong);
    background: var(--scai-surface-raised);
}

.dzien-arkusza h2,
.dzien-arkusza .naroznik-arkusza,
.dzien-arkusza .naglowek-klasy {
    color: var(--scai-ink);
    background: var(--scai-surface-muted);
}

.dzien-arkusza th,
.dzien-arkusza td,
.dzien-arkusza thead tr:first-child th,
.dzien-arkusza .poczatek-klasy {
    border-color: var(--scai-border-strong) !important;
}

.dzien-arkusza thead th,
.dzien-arkusza .czas,
.dzien-arkusza .numer {
    color: var(--scai-muted-strong);
    background: var(--scai-surface-quiet);
}

.komorka-planu {
    color: var(--scai-ink);
    background: #ebe9e5;
}

.komorka-planu small { color: var(--scai-muted); }

.komorka-planu:hover,
.komorka-planu:focus-visible,
.dodaj-komorke a:hover,
.dodaj-komorke a:focus-visible {
    color: #f8f7f4;
    background: var(--scai-accent);
    outline-color: var(--scai-focus);
}

.komorka-planu:hover small,
.komorka-planu:focus-visible small { color: #dedcd6; }

.edytor-kontekstowy {
    border-color: var(--scai-border);
    border-radius: var(--scai-radius-card);
    color: var(--scai-ink);
    background: var(--scai-surface-raised);
    box-shadow: var(--scai-shadow-float);
}

.edytor-kontekstowy::backdrop { background: rgba(34, 34, 32, 0.38); }

.edytor-kontekstowy [data-substitution-form] > .akcje-wiersz {
    border-color: var(--scai-border);
    background: rgba(253, 252, 249, 0.98);
}

.edytor-macierzy th {
    color: var(--scai-muted-strong);
    background: var(--scai-surface-quiet);
}

.edytor-macierzy th,
.edytor-macierzy td,
.komorka-zastepstwa { border-color: var(--scai-border); }

.komorka-zastepstwa { background: var(--scai-surface-raised); }
.komorka-zastepstwa.ma-zmiane { background: var(--scai-success-bg); }

.przycisk-komorka {
    color: var(--scai-ink);
    background: var(--scai-surface-muted);
}

.przycisk-komorka:hover,
.przycisk-komorka:focus-visible {
    outline-color: var(--scai-focus);
    background: #dedcd6;
}

.przycisk-komorka small,
.przycisk-komorka .brak-zajec-wspolnych,
.przycisk-komorka .zajecia-indywidualne { color: var(--scai-muted); }
.przycisk-komorka .zajecia-wspolne,
.przycisk-komorka .zajecia-indywidualne b { color: var(--scai-ink); }
.przycisk-komorka .zajecia-indywidualne em,
.przycisk-komorka strong { color: var(--scai-success); }

.blok-zajec {
    border-color: var(--scai-border);
    border-radius: 0.55rem;
    color: var(--scai-ink);
    background: #ebe9e5;
    box-shadow: 0 1px 1px rgba(45, 43, 39, 0.025);
}

.blok-zajec:hover,
.blok-zajec:focus-visible {
    box-shadow: 0 0.25rem 0.7rem rgba(45, 43, 39, 0.09);
    outline-color: var(--scai-border-strong);
}

.blok-ucznia { border-color: #d3d2cf; background: #efeeeb; }
.blok-zmieniony { border-color: var(--scai-success-border); background: var(--scai-success-bg); }
.blok-odwolany { border-color: var(--scai-danger-border); background: var(--scai-danger-bg); }
.blok-nieobecny { border-color: #d18f96; background: var(--scai-danger-bg); }
.blok-nieobecny .status-nieobecnosci { color: var(--scai-danger); }

/* Zastępstwo nadal ma czytelny, lecz przygaszony akcent tekstowy. */
.blok-zastepstwo .opis-zmiany,
.blok-zastepstwo .prowadzacy-zmiany { color: #435f7a; }

.blok-zajec.blok-nauczyciel-wybrany {
    border-color: var(--scai-danger) !important;
    background: var(--scai-danger-bg) !important;
    box-shadow: inset 0 0 0 1px rgba(136, 67, 74, 0.08);
}

.blok-dodaj,
.pusta-komorka-planu {
    border-color: #aaa8a2;
    background: transparent;
}

.lista-dostepnosci .nauczyciel-wolny {
    border-color: var(--scai-success-border);
    color: var(--scai-success);
    background: var(--scai-success-bg);
}

.lista-dostepnosci .nauczyciel-zwolniony,
.podglad-zwolnien {
    border-color: var(--scai-info-border);
    color: var(--scai-info);
    background: var(--scai-info-bg);
}

.lista-dostepnosci .nauczyciel-zajety,
.lista-dostepnosci .nauczyciel-nieobecny,
.nieobecni-nauczyciele {
    border-color: var(--scai-danger-border);
    color: var(--scai-danger);
    background: var(--scai-danger-bg);
}

.lista-dostepnosci .nauczyciel-wspomaganie {
    border-color: var(--scai-warning-border);
    color: var(--scai-warning);
    background: var(--scai-warning-bg);
}

.lista-dostepnosci .nauczyciel-poza_szkola { color: var(--scai-muted); background: var(--scai-surface-quiet); }
.nieobecni-nauczyciele p { color: var(--scai-danger); }
.lista-nieobecnych li { color: var(--scai-danger); background: #eadadc; }

.zalacznik-faktury,
.zwrot-faktury,
.ksef-kandydat {
    border-color: var(--scai-border);
    border-radius: 0.65rem;
    background: var(--scai-surface-quiet);
}

.tabela-faktur tr.faktura-do-zwrotu > td { border-color: var(--scai-info-border); background: var(--scai-info-bg); }
.tabela-faktur tr.faktura-do-zwrotu:hover > td { background: #dfe7ea; }
.tabela-faktur tr.faktura-zwrocona > td { background: var(--scai-success-bg); }
.formularz-zwrotu label { color: var(--scai-info); }

.propozycje-asystenta-zastepstw,
.norma-wariantu,
.porownanie-wariantu,
.wariantowa-komorka,
.arkusz-planu td.wariantowe-pole {
    border-color: var(--scai-success-border);
    color: var(--scai-success);
    background: var(--scai-success-bg);
}

.porownanie-wariantu span { border-color: var(--scai-border); background: var(--scai-surface-raised); }
.arkusz-planu td.wariantowe-pole { box-shadow: inset 0 0 0 1px var(--scai-success-border); }
.wariantowa-komorka:disabled:hover { color: var(--scai-success); background: var(--scai-success-bg); }

@media (max-width: 70rem) {
    .kolumny-administracji { grid-template-columns: 1fr; }
}

@media (max-width: 64rem) {
    .pasek {
        align-items: stretch;
        flex-direction: column;
        gap: 0.75rem;
        padding-inline: 1rem;
    }

    .nawigacja {
        flex-wrap: wrap;
        justify-content: flex-start;
        gap: 0.25rem;
    }
}

@media (max-width: 42rem) {
    .ksef-stan {
        align-items: stretch;
        flex-direction: column;
    }

    .ksef-stan form,
    .ksef-stan .przycisk { width: 100%; }

    .edytor-kontekstowy [data-substitution-form] > .akcje-wiersz {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .edytor-kontekstowy [data-substitution-form] > .akcje-wiersz button {
        width: 100%;
    }

    .edytor-kontekstowy [data-substitution-form] > .akcje-wiersz button:last-child {
        grid-column: 1 / -1;
    }
}
.siatka-stanu{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1rem}.formularz-roli{display:flex;align-items:center;gap:.55rem}.formularz-roli select{min-width:9rem}
