:root {
    --portal-red: #c93027;
    --portal-navy: #22374f;
    --portal-muted: #66788b;
    --portal-surface: #f3f6f8;
}

* {
    box-sizing: border-box;
}

html,
body {
    min-width: 320px;
    min-height: 100%;
    margin: 0;
    background:
        linear-gradient(rgba(255, 255, 255, .68), rgba(255, 255, 255, .68)),
        radial-gradient(circle at 90% 10%, #dce7ec 0, transparent 30%),
        var(--portal-surface);
    color: var(--portal-navy);
    font-family: "Trebuchet MS", "Segoe UI", sans-serif;
}

body {
    min-height: 100vh;
}

a,
.btn-link {
    color: var(--portal-red);
}

h1:focus {
    outline: none;
}

.portal-button {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    margin-top: 1rem;
    padding: .75rem 1rem;
    border-radius: 10px;
    background: var(--portal-red);
    color: #fff;
    font-weight: 700;
    text-decoration: none;
}

.not-found {
    max-width: 620px;
    margin: 12vh auto;
    padding: 3rem;
    border: 1px solid #dce3e9;
    border-radius: 24px;
    background: #fff;
    text-align: center;
    box-shadow: 0 24px 60px rgba(28, 44, 63, .1);
}

.not-found__code {
    color: var(--portal-red);
    font-size: .85rem;
    font-weight: 800;
    letter-spacing: .18em;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #178454;
}

.invalid {
    outline: 1px solid var(--portal-red);
}

.validation-message {
    color: var(--portal-red);
}

#blazor-error-ui {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    left: 1rem;
    z-index: 1000;
    display: none;
    max-width: 680px;
    margin: 0 auto;
    padding: .9rem 3rem .9rem 1rem;
    border-left: 4px solid var(--portal-red);
    border-radius: 8px;
    background: #fff4f2;
    box-shadow: 0 12px 36px rgba(28, 44, 63, .18);
}

#blazor-error-ui .dismiss {
    position: absolute;
    top: .75rem;
    right: 1rem;
    cursor: pointer;
}

.blazor-error-boundary {
    padding: 1rem;
    border-radius: 8px;
    background: #fff4f2;
    color: #7f1d1d;
}

.blazor-error-boundary::after {
    content: "Wystąpił błąd aplikacji.";
}

.loading-progress {
    position: relative;
    display: block;
    width: 7rem;
    height: 7rem;
    margin: 34vh auto 1rem;
}

.loading-progress circle {
    fill: none;
    stroke: #dce3e9;
    stroke-width: .55rem;
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
}

.loading-progress circle:last-child {
    stroke: var(--portal-red);
    stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * .8), 500%;
    transition: stroke-dasharray .05s ease-in-out;
}

.loading-progress-text {
    position: absolute;
    inset: calc(34vh + 2.85rem) 0 auto;
    color: var(--portal-navy);
    font-weight: 800;
    text-align: center;
}

.loading-progress-text::after {
    content: var(--blazor-load-percentage-text, "Ładowanie");
}
