﻿@import url('variables.css'); @import url('table.css'); @layer reset,base,components,utilities; @layer reset{ *{ box-sizing: border-box; margin: 0; padding: 0; border: 0 solid; }}@layer base{html {
        scrollbar-color: var(--color-blue-400) var(--color-gray-700);
        scrollbar-width: thin;
        scrollbar-gutter: stable;
    }

    body {
        height: 100vh;
        height: 100dvh;
        background: var(--sa-bg-secondary);
        user-select: none;
        display: flex;
        flex-direction: column;
    }

    main {
        width: 100%;
        max-width: 1200px;
        margin: 0 auto;
        flex: 1;
        display: flex;
        flex-direction: column;
    }

    iframe {
        width: 100%;
        height: 100%;
        border-radius: var(--radius-lg);
    }

    ol, ul, li {
        list-style: none;
    }

    textarea {
        resize: vertical;
        min-height: calc(var(--spacing) * 64);
        scrollbar-color: var(--color-blue-400) var(--color-gray-700);
        scrollbar-width: thin;
        scrollbar-gutter: stable;
    }

    select option {
        background: var(--sa-bg-secondary);
    }

    dialog.enhanced-dialog {
        inset: 0;
        margin: 0;
        padding: 0;
        border: none;
        width: 100vw;
        height: 100vh;
        max-width: none;
        max-height: none;
        background-color: color-mix(in oklab, var(--color-black) 10%, transparent);
    }

        dialog.enhanced-dialog[open] {
            display: flex;
            align-items: center;
            justify-content: center;
        }

        dialog.enhanced-dialog::backdrop {
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
        }

    SysWeaver-ServerBlock {
        z-index: 1111111;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        display: block;
        background-color: rgba(var(--ThemeBackgroundRGB), 0.95);
        padding-top: 1em;
        padding-left: calc(max(0px, (100% - max(50%, 500px)) / 2));
        padding-right: calc(max(0px, (100% - max(50%, 500px)) / 2));
        text-align: center;
        backdrop-filter: blur(4px);
        cursor: not-allowed;
    }

    SysWeaver-ServerImage {
        display: block;
    }

    SysWeaver-ServerTitle {
        margin-top: 2em;
        display: block;
        font-size: 200%;
        font-weight: bold;
        color: var(--color-white);
    }

    SysWeaver-ServerText {
        margin-top: 1em;
        display: block;
        font-size: 150%;
        color: var(--color-white);
    }

    SysWeaver-ServerWaiting {
        margin-top: 5em;
        display: block;
    }

    SysWeaver-ServerTime {
        margin-top: 1em;
        display: block;
        font-weight: bold;
        color: var(--color-white);
    }
}@layer components{.enhanced-dialog-surface {
        padding: 0;
        width: auto;
        max-height: none;
        box-shadow: var(--dialog-shadow, 0 15px 50px rgba(0, 0, 0, 0.4));
        border: 1px solid var(--color-gray-800);
        border-radius: var(--radius-lg);
        backdrop-filter: blur(15px);
        -webkit-backdrop-filter: blur(15px);
        background: var(--sa-bg-primary);
        color: var(--color-white);
        overflow: hidden;
        display: flex;
        flex-direction: column;
        user-select: none;
    }

        .enhanced-dialog-surface .dialog-body {
            overflow: auto;
            text-wrap-style: pretty;
            padding: calc(var(--spacing) * 6) calc(var(--spacing) * 4);
        }

        .enhanced-dialog-surface.dialog-sm {
            width: min(320px, 90vw);
        }

        .enhanced-dialog-surface.dialog-md {
            width: min(640px, 90vw);
        }

        .enhanced-dialog-surface.dialog-lg {
            width: min(900px, 90vw);
        }

        .enhanced-dialog-surface > .navbar {
            flex-grow: 0;
        }

        .enhanced-dialog-surface::-webkit-scrollbar {
            width: 6px;
        }

        .enhanced-dialog-surface::-webkit-scrollbar-thumb {
            background: var(--accent-color);
            border-radius: 10px;
        }

        .enhanced-dialog-surface::-webkit-scrollbar-track {
            background: var(--dialog-scrollbar-track);
            border-radius: 10px;
        }

    .dialog-navbar {
        display: flex;
        align-items: center;
        justify-content: flex-start;
        padding: 0px calc(var(--spacing) * 2);
        border-bottom: 1px solid var(--color-gray-800);

        .dialog-navbar-item {
            display: flex;
            align-items: center;
            gap: calc(var(--spacing) * 2);
            color: var(--color-gray-400);
            padding: calc(var(--spacing) * 4);
        }

            .dialog-navbar-item:hover {
                color: var(--color-white);
                cursor: pointer;
                transition: background 150ms cubic-bezier(0.4, 0, 0.2, 1);
            }

            .dialog-navbar-item.active {
                color: var(--color-white);
            }
    }

    .dialog-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: calc(var(--spacing) * 6) calc(var(--spacing) * 4);
        border-bottom: 1px solid var(--color-gray-800);

        .close-dialog-btn {
            color: var(--color-gray-400);
            background: transparent;
        }

            .close-dialog-btn:hover {
                color: var(--text-white);
                cursor: pointer;
            }

            .close-dialog-btn:focus-visible {
                outline: none;
            }
    }

    .dialog-footer {
        display: flex;
        align-items: center;
        justify-content: flex-end;
        gap: calc(var(--spacing) * 2);
        border-top: 1px solid var(--color-gray-800);
        padding: calc(var(--spacing) * 6) calc(var(--spacing) * 4);
    }

    .dialog-body.loading {
        position: relative;
        min-height: 200px;
        pointer-events: none;
    }

        .dialog-body.loading::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: var(--dialog-backdrop-bg);
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
            z-index: 10;
            border-radius: 8px;
        }

        .dialog-body.loading::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 50%;
            width: 40px;
            height: 40px;
            margin: -20px 0 0 -20px;
            border: 3px solid rgba(255, 255, 255, 0.15);
            border-radius: 50%;
            border-top-color: #0077be;
            animation: spin 0.8s ease-in-out infinite;
            z-index: 11;
        }

    .form-field {
        display: flex;
        flex-direction: column;

        > label {
            margin-bottom: calc(var(--spacing) * 2);
        }

        > input,
        > select,
        > textarea,
        > * > input,
        > * > select,
        > * > textarea {
            outline: none;
            color: var(--color-gray-100);
            background-color: inherit;
            border: 1px solid var(--color-gray-700);
            border-radius: var(--radius-xl);
            padding: calc(var(--spacing) * 4);
            color-scheme: dark;
        }

            > input:focus,
            > select:focus,
            > textarea:focus,
            > input:focus-visible,
            > select:focus-visible,
            > textarea:focus-visible,
            > * > input:focus,
            > * > textarea:focus,
            > * > input:focus-visible,
            > * > textarea:focus-visible {
                border-color: var(--color-blue-500);
            }

            > input:user-invalid,
            > textarea:user-invalid,
            > * > input:user-invalid,
            > * > textarea:user-invalid {
                border-color: var(--color-red-500);
            }
    }

    .search-control {
        display: flex;
        padding: calc(var(--spacing) * 2.5);
        border: 1px solid var(--color-gray-700);
        border-radius: var(--radius-lg);

        .search-input {
            width: 100%;
            vertical-align: central;
            padding: 0 calc(var(--spacing) * 2);
            background: inherit;
            border: none;
            outline: none;
            color: var(--color-gray-200);
            font-size: var(--text-lg);
        }
    }

        .search-control:focus-within {
            outline: 2px solid var(--color-blue-500);
        }

    .article-img-upload {
        display: flex;
        flex-direction: column;
        gap: calc(var(--spacing) * 6);
    }

    .article-img-dropzone {
        position: relative;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: calc(var(--spacing) * 6);
        padding: calc(var(--spacing) * 6);
        min-height: 180px;
        background: inherit;
        border: 2px dotted var(--color-gray-700);
        border-radius: var(--radius-lg);
        cursor: pointer;
        text-align: center;
    }

        .article-img-dropzone:hover {
            border-color: var(--color-blue-500);
            background: rgba(255, 255, 255, 0.06);
        }

        .article-img-dropzone.Selecting {
            border-color: var(--color-blue-500);
            animation: dropzonePulse 1.5s ease-in-out infinite;
        }

        .article-img-dropzone.Dragging {
            opacity: 0.6;
        }

            .article-img-dropzone.Dragging::before {
                content: 'Drop Here';
                position: absolute;
                top: 0;
                left: 0;
                right: 0;
                bottom: 0;
                display: flex;
                align-items: center;
                justify-content: center;
                background: inherit;
                backdrop-filter: blur(4px);
                -webkit-backdrop-filter: blur(4px);
                border-radius: var(--radius-lg);
                text-transform: uppercase;
                color: var(--color-white);
                z-index: 5;
                animation: dropHereOverlay 0.3s ease-out;
            }

    @keyframes dropHereOverlay {
        from {
            opacity: 0;
            transform: scale(0.95);
        }

        to {
            opacity: 1;
            transform: scale(1);
        }
    }

    @keyframes dropzonePulse {
        0%, 100% {
            border-color: var(--color-blue-500);
        }

        50% {
            border-color: var(--color-gray-700);
        }
    }

    .article-img-dropzone p {
        color: var(--color-white);
    }

    .article-img-preview {
        display: none;
        border-radius: 12px;
        background: var(--card-bg);
        border: 1px solid var(--card-border);
        padding: 8px;
    }

    .article-image {
        width: 100%;
        height: 250px;
        aspect-ratio: 1;
        object-fit: contain;
    }

    .n-wrapper {
        position: fixed;
        bottom: 0;
        right: 0;
        z-index: 10;
        display: flex;
        user-select: none;
        min-width: calc(var(--spacing) * 96);
        max-width: calc(var(--spacing) * 128);
        justify-content: space-between;
        align-items: center;
        gap: calc(var(--spacing) * 12);
        padding: calc(var(--spacing) * 3);
        border-radius: var(--radius-lg);
        background: var(--color-white);
        color: var(--color-white);
        margin-right: calc(var(--spacing) * 12);
        margin-bottom: calc(var(--spacing) * 12);
        transition: transform 0.3s ease;
        animation: displayNotification 0.5 ease;

        &.success {
            background-color: color-mix(in oklab, var(--color-green-600) 60%, transparent);
        }

        &.error {
            background-color: color-mix(in oklab, var(--color-red-600) 60%, transparent);
        }

        > span:last-child {
            cursor: pointer;
        }
    }

    @keyframes displayNotification {
        from {
            transform: translateY(-100%);
        }

        to {
            transform: translateY(0);
        }
    }

    .navbar {
        border-bottom: 1px solid var(--color-gray-700);
    }

    .navbar-item {
        cursor: pointer;
        text-align: center;
        font-size: var(--text-base);
        line-height: var(--text-base--line-height);
        border-right: 1px solid var(--color-gray-700);
        padding: calc(var(--spacing) * 3) calc(var(--spacing) * 4);
    }

        .navbar-item:last-child {
            border-right: none;
        }

        .navbar-item.active {
            background: var(--color-gray-800);
            border-bottom: 2px solid var(--color-blue-500);
        }

        .navbar-item:hover {
            background: var(--color-gray-800);
        }

    .nav-btn {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: calc(var(--spacing) * 2);
        cursor: pointer;
        text-align: center;
        color: var(--color-white);
        font-weight: var(--font-weight-medium);
        overflow: hidden;

        .icon-newspaper {
            width: 18px;
            height: 18px;
            background: var(--color-white);
        }
    }

    .btn {
        display: flex;
        align-items: center;
        border: 1px solid var(--color-gray-700);
        border-radius: var(--radius-lg);
        gap: calc(var(--spacing) * 2);
        padding: calc(var(--spacing) * 2.5) calc(var(--spacing) * 4);
        color: var(--color-gray-900);
        cursor: pointer;
        transition: background 150ms cubic-bezier(0.4, 0, 0.2, 1);
    }

    .btn-primary {
        background: inherit;
        color: var(--color-gray-200);
        font-weight: var(--font-weight-medium);
    }

        .btn-primary:hover {
            background: var(--color-gray-800);
            border: 1px solid var(--color-gray-800);
        }

    .icon {
        width: 20px;
        height: 20px;
        background: var(--color-gray-400);
        mask-size: contain;
        mask-repeat: no-repeat;
        mask-position: center;

        &.icon-magnify {
            mask-image: url('../Hypnos/icons/magnifying-glass.svg');
        }

        &.icon-x-mark {
            mask-image: url('../Hypnos/icons/xmark.svg');
        }

        &.icon-circle-plus {
            mask-image: url('../Hypnos/icons/circle-plus.svg');
        }

        &.icon-newspaper {
            mask-image: url('../Hypnos/icons/newspaper.svg');
        }
    }

    .loading {
        position: relative !important;
        background: var(--color-sa-primary) !important;
        opacity: 1 !important;
    }

        .loading::after {
            content: '';
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 36px;
            height: 36px;
            border: 5px solid #FFF;
            border-bottom-color: transparent;
            border-radius: 50%;
            box-sizing: border-box;
            display: inline-block;
            animation: rotation 1s linear infinite;
        }

    @keyframes rotation {
        0% {
            transform: rotate(0deg);
        }

        100% {
            transform: rotate(360deg);
        }
    }
}@layer utilities{.grid {
        display: grid;
    }

    .grid-columns-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .grid-columns-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .grid-columns-6 {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }

    .grid-columns-8 {
        grid-template-columns: repeat(8, minmax(0, 1fr));
    }

    .column-span-1 {
        grid-column: span 1;
    }

    .column-span-2 {
        grid-column: span 2;
    }

    .column-span-3 {
        grid-column: span 3;
    }

    .column-span-4 {
        grid-column: span 4;
    }

    .column-span-5 {
        grid-column: span 5;
    }

    .column-span-6 {
        grid-column: span 6;
    }

    .column-span-7 {
        grid-column: span 7;
    }

    .column-span-8 {
        grid-column: span 8;
    }

    .row {
        display: flex;
        flex-direction: row;
    }

    .align-items-center {
        align-items: center;
    }

    .justify-content-end {
        justify-content: flex-end;
    }

    .justify-content-sb {
        justify-content: space-between;
    }

    .justify-content-c {
        justify-content: center;
    }

    .show {
        display: block !important;
    }

    .hidden {
        display: none !important;
    }

    .gap {
        gap: calc(var(--spacing) * var(--gap, 1));
    }

    .w-full {
        width: 100%;
    }

    .h-min-full {
        min-height: 100vh;
        min-height: 100dvh;
    }

    .min-w-0 {
        min-width: calc(var(--spacing) * 0);
    }

    .mb-10 {
        margin-bottom: calc(var(--spacing) * 2.5);
    }

    .mb-20 {
        margin-bottom: calc(var(--spacing) * 5);
    }

    .border {
        border: 1px solid var(--color-gray-700);
        border-radius: var(--radius-lg);
    }

    .seperator {
        border: 1px solid var(--color-gray-800);
    }
}