:root{ --theme-primary:#635bff; --theme-primary-dark:#5147e8; --theme-secondary:#15b8a6; --theme-bg:#f6f8fc; --theme-glow-1:rgba(99,91,255,.09); --theme-glow-2:rgba(21,184,166,.08); --muted:#64748b; }
.app-shell{ min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; }
.app-shell > main{ flex:1; }
.app-footer{ width:calc(100% - 2 * clamp(1rem, 3vw, 2.5rem)); min-height:4.6rem; box-sizing:border-box; margin:auto auto 1rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.75rem 1rem; border:1px solid rgba(148,163,184,.24); border-radius:1.15rem; background:rgba(255,255,255,.78); box-shadow:0 .7rem 2.4rem rgba(44,62,100,.09); backdrop-filter:blur(22px) saturate(160%); color:var(--muted); font-size:.875rem; }
.app-footer-brand{ display:inline-flex; align-items:center; gap:.5rem; font-weight:650; }
.app-footer-brand img{ display:block; flex-shrink:0; }
.app-footer a{ color:inherit; text-decoration:none; text-underline-offset:3px; }
.app-footer a:hover, .app-footer a:focus-visible{ color:var(--theme-primary-dark); text-decoration:underline; }
.login-shell .app-footer{ width:100%; margin-bottom:0; }
@media (max-width: 1180px){ .app-footer{ width:calc(100% - 1.5rem); min-height:4.25rem; margin-bottom:.75rem; } }
@media (max-width: 520px){ .app-footer{ width:calc(100% - 1rem); padding:.65rem .75rem; border-radius:.9rem; } }
.cookie-notice{ position:fixed; z-index:500; right:1rem; bottom:1rem; left:1rem; width:min(680px, calc(100% - 2rem)); margin-left:auto; display:flex; align-items:center; gap:1rem; padding:1rem 1.2rem; border:1px solid #cbd5e1; border-radius:1rem; background:#fff; color:#172033; box-shadow:0 .75rem 2rem rgba(15, 23, 42, .18); }
.cookie-notice[hidden]{ display:none; }
.cookie-notice p{ margin:0; font-size:.875rem; line-height:1.6; }
.cookie-notice a{ text-decoration:underline; text-underline-offset:3px; }
.cookie-notice button{ flex-shrink:0; }
.cookie-notice button:focus-visible{ outline:2px solid var(--theme-primary-dark); outline-offset:3px; }
.privacy-page{ max-width:900px; margin:0 auto; }
.privacy-page li{ margin-bottom:.75rem; }
@media (max-width: 480px){ .cookie-notice{ flex-direction:column; align-items:stretch; padding:1rem; } }
html[data-theme="ocean"]{ --theme-primary:#087ea4; --theme-primary-dark:#066985; --theme-secondary:#22d3ee; --theme-bg:#f0f9ff; --theme-glow-1:rgba(8,126,164,.12); --theme-glow-2:rgba(34,211,238,.10); }
html[data-theme="forest"]{ --theme-primary:#217a55; --theme-primary-dark:#17623f; --theme-secondary:#84cc16; --theme-bg:#f4f8f3; --theme-glow-1:rgba(33,122,85,.11); --theme-glow-2:rgba(132,204,22,.09); }
html[data-theme="sunset"]{ --theme-primary:#e85d3f; --theme-primary-dark:#c8462d; --theme-secondary:#f6a33d; --theme-bg:#fff7ed; --theme-glow-1:rgba(232,93,63,.11); --theme-glow-2:rgba(246,163,61,.11); }
html[data-theme="graphite"]{ --theme-primary:#334155; --theme-primary-dark:#1e293b; --theme-secondary:#94a3b8; --theme-bg:#f8fafc; --theme-glow-1:rgba(51,65,85,.10); --theme-glow-2:rgba(148,163,184,.10); }

html, body{
    min-height:100%;
    font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color:#172033;
    background:radial-gradient(circle at 8% 8%, var(--theme-glow-1), transparent 28rem), radial-gradient(circle at 92% 18%, var(--theme-glow-2), transparent 30rem), var(--theme-bg);
}

a, .btn-link{
    color:#006bb7;
}

.btn-primary{
    color:#fff;
    background-color:#1b6ec2;
    border-color:#1861ac;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus{
  box-shadow:0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

.content{
    padding-top:1.1rem;
}

h1, h2, h3{ letter-spacing:-.035em; }
h1{ font-weight:760; }

.card{
    border:1px solid rgba(148, 163, 184, .2);
    border-radius:1rem;
    box-shadow:0 .5rem 1.8rem rgba(31, 43, 74, .055);
    overflow:hidden;
}

.card-header{ background:rgba(248, 250, 252, .8); border-color:#eef2f7; }
.nav-tabs{ border-bottom-color:#e2e8f0; }
.nav-tabs .nav-link{ color:#64748b; border:0; border-bottom:2px solid transparent; }
.nav-tabs .nav-link.active{ color:var(--theme-primary-dark); background:transparent; border-bottom-color:var(--theme-primary); font-weight:700; }
.nav-pills .nav-link.active{
    color:var(--theme-primary-dark);
    background:color-mix(in srgb, var(--theme-primary) 12%, white);
    box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--theme-primary) 22%, transparent);
    font-weight:700;
}
.btn{ border-radius:.7rem; font-weight:650; }
.btn-primary{ background:linear-gradient(135deg, var(--theme-primary), var(--theme-primary-dark)); border-color:transparent; }

h1:focus{
    outline:none;
}

.valid.modified:not([type=checkbox]){
    outline:1px solid #26b050;
}

.invalid{
    outline:1px solid #e50000;
}

.validation-message{
    color:#e50000;
}

.blazor-error-boundary{
    background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding:1rem 1rem 1rem 3.7rem;
    color:white;
}

    .blazor-error-boundary::after{
        content:"An error has occurred."
    }

.darker-border-checkbox.form-check-input{
    border-color:#929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder{
    color:var(--bs-secondary-color);
    text-align:end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder{
    text-align:start;
}

.login-shell{ min-height:100vh; display:flex; flex-direction:column; padding:1rem clamp(1rem, 3vw, 2.5rem) 2rem; }
.login-sidebar{ min-height:4.4rem; padding:.65rem .85rem; color:#172033; background:rgba(255,255,255,.78); border:1px solid rgba(148,163,184,.24); border-radius:1.15rem; box-shadow:0 .7rem 2.4rem rgba(44,62,100,.09); backdrop-filter:blur(22px); display:flex; align-items:center; justify-content:space-between; }
.login-brand-row{ display:flex; align-items:center; gap:1rem; }
.login-brand-mark{ display:grid; place-items:center; width:2.65rem; height:2.65rem; color:white; font-size:1.02rem; font-weight:800; letter-spacing:.025em; border-radius:.85rem; background:linear-gradient(135deg, var(--theme-primary), var(--theme-secondary)); box-shadow:0 .5rem 1.25rem var(--theme-glow-1); }
.login-brand{ display:flex; align-items:center; gap:.38rem; color:#111827; text-decoration:none; }
.login-brand-name{ font-size:1.05rem; font-weight:750; letter-spacing:-.025em; }
.login-brand-name small{ display:block; color:var(--muted); font-size:.53rem; font-weight:750; letter-spacing:.13em; line-height:1; text-transform:uppercase; }
.login-brand-status{ width:.43rem; height:.43rem; flex:none; border-radius:50%; background:#23c483; box-shadow:0 0 0 .22rem rgba(35,196,131,.14); transform:translateY(.08rem); }
.login-flags{ display:flex; gap:0.35rem; font-size:0.72rem; font-weight:400; }
.login-flags a{ color:#94a3b8; text-decoration:none; border-radius:.45rem; padding:.38rem .43rem; }
.login-flags a.active{ color:#172033; font-weight:800; background:white; box-shadow:0 .15rem .45rem rgba(15,23,42,.12); }
.login-flags a:hover{ opacity:1; }
.login-sidebar-copy{ display:none; }
.login-content{ flex:1; display:grid; place-items:center; padding:clamp(2rem, 7vw, 6rem) 1rem; }
.login-card{ width:min(100%, 480px); padding:clamp(1.8rem, 5vw, 3.2rem); background:rgba(255,255,255,.84); border:1px solid rgba(148,163,184,.22); border-radius:1.35rem; box-shadow:0 1.5rem 4rem rgba(31,43,74,.12); backdrop-filter:blur(18px); }

@media (max-width: 700px){
    .login-sidebar{ min-height:4rem; padding:.6rem .75rem; }
    .login-content{ padding:1.25rem; }
}
:root{ --ui-section-gap:1.5rem; --ui-card-padding:clamp(1.25rem, 2.5vw, 2rem); }
:is(.content, .login-card, .account-card){ min-width:0; }
:is(.content, .login-card, .account-card) .form-label{ margin-bottom:.6rem; line-height:1.5; }
:is(.content, .login-card, .account-card) :is(.form-control, .form-select){
    min-height:2.85rem;
    padding:.65rem .85rem;
    border-radius:.6rem;
}
:is(.content, .login-card, .account-card) .form-select{ padding-right:2.5rem; }
:is(.content, .login-card, .account-card) textarea.form-control{ min-height:6.5rem; }
:is(.content, .login-card, .account-card) :is(select[multiple], select[size]:not([size="1"])){ min-height:7rem; }
:is(.content, .login-card, .account-card) .btn{ min-height:2.75rem; padding:.6rem 1rem; line-height:1.5; }
.content .btn-sm{ min-height:2.5rem; padding:.5rem .85rem; }
.content .row{ --bs-gutter-x:1.5rem; --bs-gutter-y:1.5rem; }
.content .card-body{ padding:var(--ui-card-padding); }
.content .card-header{ padding:1rem 1.25rem; }
.content .table > :not(caption) > * > *{ padding:.9rem 1rem; vertical-align:middle; }
.content fieldset{ min-width:0; }
.content .form-check{ min-height:2.25rem; padding-left:1.75rem; }
.content .form-check-input{ width:1.1rem; height:1.1rem; margin-left:-1.75rem; }
.content .form-check-label{ line-height:1.65; }
.content .validation-message, .content .form-text{ margin-top:.5rem; }
.content .alert{ padding:1rem 1.25rem; line-height:1.65; overflow-wrap:anywhere; }
.content .nav-tabs, .content .nav-pills, .content .nav-underline{ gap:.5rem; }
.content .nav-link{ padding:.75rem 1rem; }
.content :is(.quote-actions, .quote-toolbar) :is(button,.btn){ white-space:normal; }
.login-card form > .mb-3{ margin-bottom:1.5rem !important; }
.login-card form > .mb-4{ margin-bottom:1.75rem !important; }
:is(.login-card,.account-card) .validation-summary-valid{ display:none; }
.account-shell{ min-height:100dvh; display:grid; place-items:center; padding:2rem 1rem; }
.account-card{ width:min(100%, 40rem); padding:clamp(1.5rem, 4vw, 2.5rem); background:rgba(255,255,255,.9); border:1px solid #dbe3ed; border-radius:1.25rem; box-shadow:0 1rem 3rem rgba(31,43,74,.09); }
.account-card h1{ margin-bottom:1.75rem; font-size:clamp(1.6rem, 4vw, 2rem); }
.account-card form{ display:grid; gap:1.5rem; }
.account-card p{ line-height:1.65; overflow-wrap:anywhere; }
.account-card form > p{ margin:0; }
.account-card .form-check{ display:flex; align-items:flex-start; gap:.75rem; padding:0; }
.account-card .form-check-input{ flex:none; margin:.25rem 0 0; width:1.1rem; height:1.1rem; }
.account-card .form-check label{ line-height:1.65; }
.account-card code{ overflow-wrap:anywhere; }
.account-card ul{ display:grid; gap:.75rem; padding-left:1.25rem; margin-block:1.5rem; }
html, body{ max-width:100%; }
img, svg, video, canvas{ max-width:100%; height:auto; }
.table-responsive{ -webkit-overflow-scrolling:touch; }

@media (max-width: 860px){
    h1{ font-size:clamp(1.75rem, 8vw, 2.35rem); }
    h2{ font-size:clamp(1.3rem, 6vw, 1.75rem); }
    .nav-tabs, .nav-pills, .nav-underline{
        flex-wrap:nowrap;
        max-width:100%;
        padding-bottom:.25rem;
        overflow-x:auto;
        overflow-y:hidden;
        scrollbar-width:thin;
        -webkit-overflow-scrolling:touch;
    }
    .nav-tabs .nav-link, .nav-pills .nav-link, .nav-underline .nav-link{ white-space:nowrap; }
    .card-body{ padding:clamp(1rem, 4vw, 1.5rem); }
    .modal-dialog{ margin:.75rem; }
    .modal-content{ max-height:calc(100dvh - 1.5rem); overflow-y:auto; }
    .d-flex.justify-content-between{ flex-wrap:wrap; gap:.75rem; }
}

@media (max-width: 576px){
    body{ font-size:.94rem; }
    .container, .container-fluid{ padding-inline:.75rem; }
    .btn{ min-height:2.65rem; }
    .btn-group, .btn-group-vertical{ display:flex; flex-wrap:wrap; width:100%; }
    .btn-group > .btn{ flex:1 1 auto; }
    .form-control, .form-select{ min-height:2.75rem; font-size:16px; }
    textarea.form-control{ min-height:7rem; }
    .input-group{ align-items:stretch; }
    .input-group > .form-control, .input-group > .form-select{ min-width:0; }
    .alert{ padding:.8rem; }
    .login-shell{ padding:.65rem; }
    .login-sidebar{ border-radius:.9rem; }
    .login-brand-status{ display:none; }
    .login-flags{ gap:.05rem; }
    .login-card{ padding:1.4rem; border-radius:1rem; }
}
@media print{ body:has(.manhours-report) .app-header, body:has(.manhours-report) .app-footer, body:has(.manhours-report) .dock-title, body:has(.manhours-report) .dock-menubar, body:has(.manhours-report) .cookie-notice, body:has(.manhours-report) #blazor-error-ui{ display:none !important; } body:has(.manhours-report) .app-main, body:has(.manhours-report) .content{ padding:0 !important; } }
