@property --ang {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}

@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/erazv-brand/inter-cyrillic-ext.woff2') format('woff2');
    unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/erazv-brand/inter-cyrillic.woff2') format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('/erazv-brand/inter-latin.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    --bg: #05060b;
    --bg-soft: rgba(10, 12, 20, .72);
    --text: #e9edf7;
    --muted: #98a2b6;
    --text-soft: #b4bed1;
    --cyan: #22d3ee;
    --violet: #8b5cf6;
    --blue: #3b82f6;
    --grad: linear-gradient(120deg, var(--cyan), var(--violet));
    --border: rgba(255, 255, 255, .09);
    --radius: 18px;
}

* { box-sizing: border-box; }
html, body, body.login-ui {
    min-height: 100%;
    margin: 0;
    font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif !important;
    background: var(--bg) !important;
    color: var(--text) !important;
    line-height: 1.6;
    overflow-x: hidden;
}

#energy-canvas {
    position: fixed;
    inset: 0;
    z-index: 0;
    width: 100vw;
    height: 100vh;
    pointer-events: none;
    transition: opacity .8s ease;
}
#energy-canvas.is-paused {
    opacity: .35;
    animation: none !important;
}

#content, #other-connections, guac-login {
    position: relative;
    z-index: 1;
}

.login-ui {
    background: transparent !important;
}

.login-dialog {
    background: rgba(10, 12, 20, .76) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    box-shadow: 0 28px 90px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .05) !important;
    max-width: 430px !important;
    padding: 2.5rem !important;
    backdrop-filter: blur(18px);
}

.login-dialog .logo {
    background-image: url('/erazv-brand/er-logo.png') !important;
    background-position: left center !important;
    background-repeat: no-repeat !important;
    background-size: contain !important;
    height: 34px !important;
    margin: 0 0 .6rem !important;
}

.login-dialog .app-name {
    color: var(--text) !important;
    font-size: 1.05rem !important;
    font-weight: 700;
    letter-spacing: .04em;
    margin: 0 0 1.6rem !important;
    display: block;
}

.login-fields .field,
.login-dialog .field,
.form-field {
    margin-bottom: 1rem !important;
}


.login-dialog input,
.login-dialog select,
.login-dialog textarea,
.login-fields input,
.form-field input,
.form-field select,
.form-field textarea {
    display: block;
    width: 100%;
    min-height: 2.85rem;
    padding: .65rem .85rem !important;
    font-size: 1rem !important;
    font-family: inherit !important;
    line-height: 1.4 !important;
    color: var(--text) !important;
    caret-color: var(--cyan);
    background: rgba(255, 255, 255, .06) !important;
    border: 1px solid var(--border) !important;
    border-radius: 10px !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .03) !important;
    transition: border-color .2s ease, box-shadow .2s ease, background .2s ease !important;
}

.login-dialog input::placeholder,
.login-fields input::placeholder,
.form-field input::placeholder { color: rgba(152, 162, 182, .55) !important; }

.login-dialog input:hover,
.login-fields input:hover,
.form-field input:hover {
    background: rgba(255, 255, 255, .09) !important;
    border-color: rgba(255, 255, 255, .16) !important;
}

.login-dialog input:focus,
.login-dialog select:focus,
.login-dialog textarea:focus,
.login-fields input:focus,
.form-field input:focus,
.form-field select:focus,
.form-field textarea:focus {
    background: rgba(255, 255, 255, .1) !important;
    border-color: var(--cyan) !important;
    box-shadow: 0 0 0 3px rgba(34, 211, 238, .14), inset 0 1px 0 rgba(255, 255, 255, .05) !important;
    outline: none !important;
}

.login-dialog button[type='submit'],
.login-dialog .continue-login,
.login-dialog .button,
.form-field button,
button.button,
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    min-height: 2.85rem;
    padding: .65rem 1.2rem !important;
    margin-top: .4rem;
    font-family: inherit !important;
    font-size: 1rem !important;
    font-weight: 700 !important;
    letter-spacing: .01em;
    color: #04060d !important;
    background: var(--grad) !important;
    border: 0 !important;
    border-radius: 10px !important;
    box-shadow: 0 8px 30px rgba(139, 92, 246, .28) !important;
    cursor: pointer;
    transition: transform .18s ease, filter .18s ease, box-shadow .18s ease !important;
}
.login-dialog button[type='submit']:hover,
.login-dialog .continue-login:hover,
.login-dialog .button:hover,
.button:hover {
    filter: brightness(1.08) saturate(1.08) !important;
    transform: translateY(-1px);
    box-shadow: 0 10px 34px rgba(139, 92, 246, .34) !important;
}
.login-dialog button[type='submit']:active,
.login-dialog .continue-login:active,
.button:active {
    transform: translateY(0);
}

.login-error,
.login-dialog .error,
.form-field .error {
    color: #fb7185 !important;
    font-size: .85rem;
    background: rgba(251, 113, 133, .1);
    border: 1px solid rgba(251, 113, 133, .25);
    border-radius: 8px;
    padding: .55rem .7rem;
    margin-top: .6rem;
}

.header, .menu-title {
    background: rgba(10, 12, 20, .82) !important;
    border-bottom: 1px solid var(--border) !important;
    color: var(--text) !important;
    backdrop-filter: blur(14px);
}
.menu, .menu-body {
    background: rgba(10, 12, 20, .94) !important;
    box-shadow: 12px 0 38px rgba(0, 0, 0, .35) !important;
    backdrop-filter: blur(14px);
}

.client-tile, .client-panel-connection, .connection, .card,
.list-item, .settings-table, .page-list, .form {
    background: rgba(255, 255, 255, .045) !important;
    border: 1px solid var(--border) !important;
    border-radius: var(--radius) !important;
    color: var(--text) !important;
    transition: background .2s ease, border-color .2s ease, transform .2s ease !important;
}
.client-tile:hover, .client-panel-connection:hover, .connection:hover, .card:hover,
.list-item:hover, .settings-table tr:hover, .page-list li:hover {
    background: rgba(255, 255, 255, .07) !important;
    border-color: rgba(34, 211, 238, .42) !important;
    transform: translateY(-1px);
}

a { color: var(--cyan) !important; }
a:hover { color: #fff !important; }
:focus-visible { outline: 2px solid var(--cyan) !important; outline-offset: 3px; }

.ng-scope, .ng-binding, [ng-bind] { color: var(--text); }
.text-muted, .description, .caption, .hint, .form-field .description {
    color: var(--text-soft) !important;
}


@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
@media (max-width: 600px) {
    .login-dialog { margin: 1rem !important; padding: 1.6rem !important; }
}

/* Login form: labels become placeholders */
.login-fields .field-header,
.login-dialog .field-header {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}

/* Admin/settings forms: floating labels */
.form-field, .labeled-field { position: relative; }
.form-field .field-header,
.labeled-field .field-header,
.form-field label,
.labeled-field label {
    position: absolute;
    left: .85rem;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(152, 162, 182, .72) !important;
    font-size: 1rem !important;
    font-weight: 500;
    pointer-events: none;
    transition: top .18s ease, font-size .18s ease, color .18s ease, transform .18s ease;
    background: transparent;
    padding: 0 .25rem;
    z-index: 2;
}

.form-field input:focus ~ .field-header,
.form-field input:not(:placeholder-shown) ~ .field-header,
.form-field textarea:focus ~ .field-header,
.form-field textarea:not(:placeholder-shown) ~ .field-header,
.form-field select:focus ~ .field-header,
.form-field select:valid ~ .field-header,
.labeled-field input:focus ~ .field-header,
.labeled-field input:not(:placeholder-shown) ~ .field-header,
.labeled-field textarea:focus ~ .field-header,
.labeled-field textarea:not(:placeholder-shown) ~ .field-header,
.labeled-field select:focus ~ .field-header,
.labeled-field select:valid ~ .field-header,
.form-field input:focus ~ label,
.form-field input:not(:placeholder-shown) ~ label,
.form-field textarea:focus ~ label,
.form-field textarea:not(:placeholder-shown) ~ label,
.labeled-field input:focus ~ label,
.labeled-field input:not(:placeholder-shown) ~ label,
.labeled-field textarea:focus ~ label,
.labeled-field textarea:not(:placeholder-shown) ~ label {
    top: 0;
    transform: translateY(-50%);
    font-size: .72rem !important;
    color: var(--cyan) !important;
    background: rgba(10, 12, 20, .96);
}

.form-field .field-header.is-placeholder-source,
.labeled-field .field-header.is-placeholder-source,
.form-field label.is-placeholder-source,
.labeled-field label.is-placeholder-source { display: none !important; }

.login-dialog input,
.login-fields input { padding-top: .85rem !important; }

.login-dialog input::placeholder,
.login-fields input::placeholder {
    color: rgba(152, 162, 182, .62) !important;
    opacity: 1;
}
.login-dialog input:focus::placeholder,
.login-fields input:focus::placeholder { color: rgba(152, 162, 182, .35) !important; }

/* Admin and user menu visibility */
.header,
.header.breadcrumbs,
.view .header,
#content .header {
    background: rgba(10, 12, 20, .78) !important;
    border-bottom: 1px solid var(--border) !important;
    box-shadow: none !important;
    color: var(--text) !important;
    backdrop-filter: blur(14px);
}

.header h2,
.header .menu-title,
.menu-dropdown .menu-title,
.user-menu .menu-dropdown .menu-title {
    color: var(--text) !important;
    font-weight: 600;
}

.menu-dropdown,
.user-menu .menu-dropdown {
    background: rgba(255, 255, 255, .04) !important;
    border-left: 1px solid var(--border) !important;
}
.menu-dropdown:hover,
.menu-dropdown.open {
    background: rgba(255, 255, 255, .1) !important;
}

.menu-dropdown .menu-indicator {
    filter: invert(1);
    opacity: .8;
}

.menu-dropdown .menu-contents,
.user-menu .menu-dropdown .menu-contents,
.menu-body .menu-contents {
    background: rgba(10, 12, 20, .96) !important;
    border: 1px solid var(--border) !important;
    box-shadow: 0 18px 55px rgba(0, 0, 0, .35) !important;
    backdrop-filter: blur(14px);
}

.menu-dropdown .menu-contents li a,
.user-menu .menu-dropdown .menu-contents li a,
.action-list li a,
.page-list li a[href],
.section-tabs li a {
    color: var(--text) !important;
    background-color: transparent !important;
    filter: none;
}

.menu-dropdown .menu-contents li a:hover,
.user-menu .menu-dropdown .menu-contents li a:hover,
.action-list li a:hover,
.page-list li a[href]:hover,
.section-tabs li a:hover {
    background: rgba(34, 211, 238, .12) !important;
    color: var(--cyan) !important;
}

.menu-dropdown .menu-contents li a.current,
.page-list li a[href].current,
.section-tabs li a.current {
    color: var(--text) !important;
    background: rgba(255, 255, 255, .08) !important;
    opacity: 1 !important;
}

.user-menu .menu-dropdown .menu-contents li a {
    filter: brightness(0) invert(1);
    opacity: .92;
}
.user-menu .menu-dropdown .menu-contents li a:hover {
    filter: brightness(0) invert(1);
    opacity: 1;
}

.user-menu .menu-dropdown .menu-contents .profile {
    color: var(--text);
    border-bottom: 1px solid var(--border);
}
.user-menu .menu-dropdown .menu-contents .profile .full-name a {
    color: var(--text) !important;
    font-weight: 700;
}
.user-menu .menu-dropdown .menu-contents .profile .organizational-role,
.user-menu .menu-dropdown .menu-contents .profile .organization {
    color: var(--text-soft);
}

.page-list ul,
.section-tabs ul {
    background: rgba(255, 255, 255, .03) !important;
    border-bottom: 1px solid var(--border) !important;
}

.danger, .menu-dropdown .menu-contents li a.danger {
    color: #fb7185 !important;
    background: rgba(251, 113, 133, .1) !important;
}
.danger:hover, .menu-dropdown .menu-contents li a.danger:hover {
    background: rgba(251, 113, 133, .2) !important;
}

/* After authentication: hide canvas so RDP/client view is fully visible. */
body.is-authenticated #energy-canvas,
body.ready #energy-canvas,
body.ng-scope.ready #energy-canvas,
#content.ready ~ #energy-canvas,
.guac-client #energy-canvas,
.client #energy-canvas,
.client-view #energy-canvas {
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Ensure RDP client viewport sits above background. */
.guac-client,
.client,
.client-view,
.client-body,
.display,
.viewport {
    position: relative;
    z-index: 2 !important;
    background: #000 !important;
}

/* Admin forms remain on frosted glass background */
#content:not(.ready),
#content .settings,
#content .settings.section,
#content .settings-users,
#content .settings-connections,
.menu-body,
.menu-content {
    background: rgba(10, 12, 20, .72) !important;
    backdrop-filter: blur(18px);
}
