.dashboard-shell {
    width: 100%;
    min-height: 100vh;
    height: auto;
    max-height: none;
    padding: 0.65rem 0.85rem calc(4.75rem + env(safe-area-inset-bottom));
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    position: relative;
    box-sizing: border-box;
    overflow: visible;
}

.dashboard-shell--empty {
    align-items: center;
    justify-content: center;
    padding: 2rem;
    background:
        radial-gradient(circle at top, color-mix(in srgb, var(--primary-color) 18%, transparent) 0, transparent 42%),
        linear-gradient(180deg, color-mix(in srgb, var(--bg-primary) 94%, var(--primary-color) 6%), var(--bg-primary));
}

.dashboard-empty-card {
    display: grid;
    gap: 1rem;
    justify-items: center;
    width: min(100%, 44rem);
    padding: 2.4rem 1.9rem 2.2rem;
    border-radius: 30px;
    background: color-mix(in srgb, var(--card-bg) 92%, transparent);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.08);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.dashboard-empty-logo {
    width: auto;
    height: auto;
    display: grid;
    place-items: center;
    background: transparent;
    margin-bottom: 0.1rem;
}

.dashboard-empty-logo img,
.dashboard-empty-logo svg {
    width: 5.85rem;
    height: 5.85rem;
    object-fit: contain;
}

.dashboard-empty-message {
    max-width: 42rem;
    margin: 0;
    padding: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text-main);
    text-align: center;
    font-size: clamp(1.1rem, 2vw, 1.45rem);
    line-height: 1.55;
    order: 2;
}

.dashboard-empty-message p {
    margin: 0;
}

.dashboard-empty-message h1 {
    margin: 0 0 0.65rem;
    color: var(--text-main);
    font-size: clamp(1.7rem, 4vw, 2.4rem);
    line-height: 1.15;
}

.dashboard-empty-message--etu1 {
    max-width: 38rem;
    font-size: clamp(1rem, 1.5vw, 1.15rem);
    line-height: 1.45;
}

.dashboard-empty-message--etu1 h1 {
    margin-bottom: 0.55rem;
    font-size: clamp(1.55rem, 3vw, 2rem);
}

.dashboard-empty-message--etu1 p + p {
    margin-top: 0.65rem;
}

.dashboard-empty-note {
    margin-top: 0.9rem !important;
    color: var(--text-muted);
    font-size: 0.9em;
}

.dashboard-empty-actions {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.65rem;
    width: 100%;
    max-width: 18rem;
    order: 3;
}

.dashboard-empty-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0.9rem 1.25rem;
    border-radius: 999px;
    border: 1px solid transparent;
    text-decoration: none;
    font-weight: 700;
    cursor: pointer;
    transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}

.dashboard-empty-action:hover {
    transform: translateY(-1px);
}

.dashboard-empty-action--primary {
    background: var(--primary-color);
    color: var(--text-on-accent);
    box-shadow: 0 10px 24px color-mix(in srgb, var(--primary-color) 26%, transparent);
}

.dashboard-empty-action--primary:hover {
    background: color-mix(in srgb, var(--primary-color) 88%, black 12%);
}

.dashboard-empty-action--secondary {
    background: color-mix(in srgb, var(--card-bg) 88%, transparent);
    color: var(--text-main);
    border-color: var(--border-soft);
}

.dashboard-empty-action--secondary:hover {
    background: color-mix(in srgb, var(--primary-color) 10%, var(--card-bg));
    border-color: color-mix(in srgb, var(--primary-color) 35%, var(--border-soft));
}

.dashboard-empty-login-link {
    color: var(--text-muted);
    font-size: 0.9rem;
    text-decoration: none;
}

.dashboard-empty-login-link:hover {
    color: var(--primary-color);
    text-decoration: underline;
}

/* Override global main width so dashboard takes all available space */
body.layout-with-sidebar main:has(.dashboard-shell) {
    width: calc(100% - var(--sidebar-width));
    min-height: 100vh;
    margin-left: var(--sidebar-width);
    margin-right: 0;
    align-items: stretch;
    justify-content: flex-start;
    overflow: visible;
}

.dashboard-pages-toolbar {
    position: fixed;
    left: 50%;
    bottom: calc(1rem + env(safe-area-inset-bottom));
    transform: translateX(-50%);
    z-index: 1200;
    width: fit-content;
    max-width: calc(100vw - 1.25rem);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    min-height: 2.35rem;
    padding: 0.45rem 0.7rem;
    border: 1px solid color-mix(in srgb, var(--border-soft) 78%, transparent);
    border-radius: 999px;
    background: color-mix(in srgb, var(--card-bg) 92%, transparent);
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.14);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
}

.dashboard-pages-nav-btn {
    appearance: none;
    border: 1px solid var(--border-soft);
    background: color-mix(in srgb, var(--card-bg) 88%, transparent);
    color: var(--text-main);
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 999px;
    display: grid;
    place-items: center;
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    transition: background 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}

.dashboard-pages-nav-btn:hover:not(:disabled) {
    background: color-mix(in srgb, var(--primary-color) 14%, var(--card-bg));
    border-color: color-mix(in srgb, var(--primary-color) 45%, var(--border-soft));
}

.dashboard-pages-nav-btn:disabled {
    opacity: 0.35;
    cursor: default;
}

.dashboard-pages-meta {
    flex: 0 1 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dashboard-pages-label {
    display: none;
}

.dashboard-pages-dots {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    overflow-x: auto;
    padding-bottom: 0.1rem;
}

.dashboard-pages-dot {
    appearance: none;
    border: 1px solid transparent;
    padding: 0;
    width: 0.7rem;
    height: 0.7rem;
    flex: 0 0 auto;
    border-radius: 999px;
    background: color-mix(in srgb, var(--border-hard) 70%, transparent);
    cursor: pointer;
    transition: transform 0.2s ease, background 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}

.dashboard-pages-dot[draggable="true"] {
    cursor: grab;
}

.dashboard-pages-dot.is-dragging {
    opacity: 0.4;
}

.dashboard-pages-dot.is-drop-target {
    border-color: var(--primary-color);
    transform: scale(1.15);
}

.dashboard-pages-dot.is-active {
    background: var(--primary-color);
    transform: scale(1.18);
}

.dashboard-pages-dot--add {
    width: 1.3rem;
    height: 1.3rem;
    border: 1px dashed color-mix(in srgb, var(--primary-color) 52%, var(--border-soft));
    background: color-mix(in srgb, var(--primary-color) 8%, transparent);
    color: var(--primary-color);
    display: grid;
    place-items: center;
    font-size: 1rem;
    line-height: 1;
    font-weight: 800;
    transform: none;
}

.dashboard-page-viewport {
    order: 1;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    border-radius: 18px;
    overflow: visible;
    position: relative;
    overscroll-behavior: contain;
}

.dashboard-drag-ghost {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100500;
    pointer-events: none;
    transform-origin: top left;
    transition: transform 0.18s ease, opacity 0.18s ease;
}

.dashboard-drag-ghost .dash-widget {
    height: 100%;
}

.dashboard-drag-ghost.is-nav-hover {
    opacity: 0.96;
}

.dashboard-page-viewport.is-slide-next {
    animation: dashboard-page-slide-next 0.26s cubic-bezier(0.2, 0, 0.1, 1);
}

.dashboard-page-viewport.is-slide-prev {
    animation: dashboard-page-slide-prev 0.26s cubic-bezier(0.2, 0, 0.1, 1);
}

@keyframes dashboard-page-slide-next {
    0% {
        opacity: 0.65;
        transform: translateX(22px);
    }
    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes dashboard-page-slide-prev {
    0% {
        opacity: 0.65;
        transform: translateX(-22px);
    }
    100% {
        opacity: 1;
        transform: translateX(0);
    }
}

.dashboard-header {
    display: none;
}

.dashboard-page-viewport .grid-stack {
    flex: 1 1 auto;
    width: 100%;
    padding: 0.45rem 0.2rem 1.2rem;
}

/* GridStack positions widgets absolutely only after its script initializes. */
.dashboard-page-viewport .grid-stack:not([class*="gs-id-"]) {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    height: auto;
}

.dashboard-page-viewport .grid-stack:not([class*="gs-id-"]) > .grid-stack-item {
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: auto;
    min-height: 11rem;
}

.dashboard-page-viewport .grid-stack:not([class*="gs-id-"]) > .grid-stack-item > .grid-stack-item-content {
    position: relative;
    inset: auto;
    width: 100%;
    height: auto;
    min-height: 11rem;
}

.grid-stack-item-content {
    overflow: auto;
    min-height: 0;
    padding: 0.75rem; /* Restoration of the airy gap surrounding each card */
}

.grid-stack-item.is-inter-page-preview .dash-widget {
    transform: scale(0.34);
    transform-origin: top left;
    opacity: 0.18;
    transition: transform 0.18s ease, opacity 0.18s ease;
}

[hidden] {
    display: none !important;
}

.dash-widget {
    position: relative;
    border-radius: 20px;
    border: 1px solid transparent;
    background: transparent;
    box-shadow: none;
    display: flex;
    flex-direction: column;
    min-height: 0;
    color: var(--text-main);
    transition: box-shadow 0.3s ease, border-color 0.3s ease;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

/* Panel variant gets the default card styling */
.dash-widget--panel {
    background: var(--card-bg);
    border: 1px solid var(--border-soft);
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}


.dash-widget:hover {
    box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
    border-color: color-mix(in srgb, var(--primary-color) 30%, var(--border-soft));
}

.dash-widget::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    pointer-events: none;
    border: 1px solid transparent;
    transition: border-color 0.3s ease;
}

.dash-widget--search {
    background: transparent;
    border: none;
    box-shadow: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

.dash-widget--search:hover {
    box-shadow: none;
}

.dash-widget--search .dash-widget__header {
    display: none;
}

.dashboard-shell.is-editing .dash-widget--search .dash-widget__header {
    display: flex;
}

.dash-widget--search .dash-widget__body {
    padding: 0;
    overflow: visible;
}

.grid-stack-item-content.dash-widget--search {
    overflow: visible;
}

.grid-stack-item.is-search-suggestions-open {
    z-index: 80;
}

.grid-stack-item.is-search-suggestions-open > .grid-stack-item-content {
    overflow: visible;
}

.dash-widget.dash-widget--link,
.dash-widget.dash-widget--search,
.dash-widget.dash-widget--clock,
.dash-widget.dash-widget--greeting {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.dash-widget--link:hover {
    box-shadow: none !important;
}



.dash-widget--link .dash-widget__header {
    display: none !important;
}

.dashboard-shell.is-editing .dash-widget--link .dash-widget__header {
    display: flex !important;
    background: var(--header-background);
    border-radius: 12px 12px 0 0;
    margin-bottom: 0.5rem;
}

.dash-widget--link .dash-widget__body {
    padding: 0;
}

.dash-widget--clock, .dash-widget--greeting {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

.dash-widget--greeting .dash-widget__body {
    padding: 0 !important;
}

.dash-widget--clock .dash-widget__header,
.dash-widget--greeting .dash-widget__header {
    display: none !important;
}

/* Show headers in edit mode so they can be moved */
.dashboard-shell.is-editing .dash-widget--clock .dash-widget__header,
.dashboard-shell.is-editing .dash-widget--greeting .dash-widget__header {
    display: flex !important;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 12px 12px 0 0;
}

.dash-widget__header {
    display: none; /* Hidden by default */
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    border-bottom: 1px solid var(--border-soft);
    background: color-mix(in srgb, var(--bg-primary) 40%, var(--card-bg));
    cursor: move;
    user-select: none;
}

.dashboard-shell.is-editing .dash-widget__header {
    display: flex;
}

.dashboard-shell.is-editing .dash-widget {
    outline: 2px dashed var(--primary-color);
    outline-offset: -2px;
    background: color-mix(in srgb, var(--card-bg) 95%, var(--primary-color) 5%) !important;
    border-color: var(--primary-color) !important;
    box-shadow: 0 0 20px color-mix(in srgb, var(--primary-color) 20%, transparent) !important;
    backdrop-filter: blur(4px) !important;
}

.dashboard-shell.is-editing .dash-widget.dash-widget--clock,
.dashboard-shell.is-editing .dash-widget.dash-widget--greeting,
.dashboard-shell.is-editing .dash-widget.dash-widget--search,
.dashboard-shell.is-editing .dash-widget.dash-widget--link {
    background: transparent !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
}


.dash-widget__title-wrap {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.dash-widget__icon {
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 0.45rem;
    display: grid;
    place-items: center;
    background: color-mix(in srgb, var(--primary-color) 18%, transparent);
    overflow: hidden;
}

.dash-widget__icon img {
    width: 1.1rem;
    height: 1.1rem;
    object-fit: contain;
}

.dash-widget__icon svg {
    width: 1.1rem;
    height: 1.1rem;
    color: var(--primary-color);
}

.dash-widget__title {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dash-widget__actions {
    display: flex;
    align-items: center;
    gap: 0.3rem;
}

.dash-widget__action {
    appearance: none;
    border: 1px solid var(--border-soft);
    background: var(--card-bg);
    color: var(--text-main);
    min-width: 1.8rem;
    height: 1.8rem;
    display: grid;
    place-items: center;
    border-radius: 0.5rem;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.dash-widget__action svg {
    width: 0.95rem;
    height: 0.95rem;
}

.dash-widget__action:hover {
    background: color-mix(in srgb, var(--primary-color) 16%, var(--card-bg) 84%);
    border-color: color-mix(in srgb, var(--primary-color) 48%, transparent);
}

.dash-widget__action.is-pinned,
.dash-widget__action[aria-pressed="true"] {
    color: var(--primary-color);
    border-color: color-mix(in srgb, var(--primary-color) 44%, var(--border-soft));
    background: color-mix(in srgb, var(--primary-color) 10%, var(--card-bg));
}

.dash-widget__action.danger:hover {
    color: #fff;
    border-color: #d33;
    background: #d33;
}

.dash-widget__body {
    padding: 0; /* Components now control their own padding via .dash-components */
    min-height: 0;
    flex: 1;
    overflow: auto;
    position: relative;
    overscroll-behavior: contain;
}


/**
 * Base skeleton for dashboard components.
 * Harmonizes layout, spacing, and core appearance.
 */
.dash-components {
    height: auto;
    min-height: 0;
    max-height: none;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 1.25rem 1.15rem;
    background: transparent !important; /* Forces transparency of the component host */
    border-radius: inherit;
    color: var(--text-main);
    position: relative;
    overflow: visible;
    box-sizing: border-box;
    transition: opacity 0.4s ease, transform 0.4s ease;
}


/* Skeleton Loading System */
.dash-widget.is-loading .dash-widget__body > *:not(.dash-widget-skeleton) {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.dash-widget-skeleton {
    position: absolute;
    inset: 0;
    padding: 1.25rem 1.15rem;
    display: flex;
    flex-direction: column;
    gap: 0.8rem;
    z-index: 5;
    background: var(--card-bg);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.25s ease-out;
    pointer-events: none;
}

.dash-widget.is-loading .dash-widget-skeleton {
    opacity: 1;
    visibility: visible;
}

/* No background for transparent widgets (like mobile app links) */
.dash-widget--link .dash-widget-skeleton,
.dash-widget--search .dash-widget-skeleton,
.dash-widget--clock .dash-widget-skeleton,
.dash-widget--greeting .dash-widget-skeleton {
    background: transparent;
}


.skeleton-shimmer {
    background: color-mix(in srgb, var(--text-main) 6%, transparent);
    position: relative;
    overflow: hidden;
    border-radius: 6px;
}

.skeleton-shimmer::after {
    content: "";
    position: absolute;
    inset: 0;
    transform: translateX(-100%);
    background: linear-gradient(
        90deg,
        transparent,
        color-mix(in srgb, var(--text-main) 8%, transparent),
        transparent
    );
    animation: skeleton-shimmer 1.5s infinite;
}

@keyframes skeleton-shimmer {
    100% { transform: translateX(100%); }
}

.skeleton-title { height: 1.2rem; width: 60%; margin-bottom: 0.4rem; }
.skeleton-line { height: 0.8rem; width: 90%; }
.skeleton-line-sm { height: 0.8rem; width: 40%; }
.skeleton-circle { width: 3.5rem; height: 3.5rem; border-radius: 50%; }
.skeleton-rect { flex: 1; width: 100%; border-radius: 12px; }

.dash-widget--link.is-loading .dash-widget-skeleton {
    align-items: center;
    justify-content: center;
    padding: 0;
    gap: 0.65rem;
}

.skeleton-square {
    width: min(80px, 60%);
    aspect-ratio: 1 / 1;
    height: auto;
    border-radius: 18px;
    flex-shrink: 0;
}

.skeleton-name {
    height: 0.95rem;
    width: min(92px, 72%);
    border-radius: 999px;
}



.dashboard-context-menu {
    position: fixed;
    z-index: 10000;
    background: color-mix(in srgb, var(--card-bg) 95%, white);
    border: 1px solid var(--border-hard);
    border-radius: 14px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
    padding: 0.5rem;
    min-width: 240px;
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
    animation: dashboard-context-fade-in 0.15s cubic-bezier(0, 0, 0.2, 1);
}

[data-theme="dark"] .dashboard-context-menu {
    background: color-mix(in srgb, var(--card-bg) 95%, black);
}

@keyframes dashboard-context-fade-in {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.dashboard-context-group {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.dashboard-context-separator {
    height: 1px;
    background: var(--border-soft);
    margin: 0.4rem 0.5rem;
}

.dashboard-context-menu-item {
    width: 100%;
    border: none;
    background: transparent;
    color: var(--text-main);
    text-align: left;
    padding: 0.65rem 0.8rem;
    border-radius: 10px;
    font-family: inherit;
    font-size: 0.9rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    cursor: pointer;
    transition: background 0.2s ease, transform 0.1s ease;
}

.dashboard-context-menu-item .icon {
    font-size: 1.1rem;
    width: 1.2rem;
    display: flex;
    justify-content: center;
    opacity: 0.7;
}

.dashboard-context-menu-item:hover {
    background: color-mix(in srgb, var(--primary-color) 12%, var(--card-bg));
    transform: translateX(2px);
}

.dashboard-context-menu-item.danger {
    color: #ef4444;
}

.dashboard-context-menu-item.danger:hover {
    background: color-mix(in srgb, #ef4444 10%, var(--card-bg));
}

.dashboard-modal {
    --app-modal-z-index: 11000;
    --app-modal-backdrop: rgba(10, 14, 23, 0.48);
    display: none;
}

.dashboard-modal.is-open {
    display: block;
}

.dashboard-modal-backdrop {
    pointer-events: auto;
}

.dashboard-modal-dialog {
    --app-modal-width: 720px;
    --app-modal-max-height: min(88vh, 760px);
    --app-modal-radius: 16px;
    --app-modal-border: var(--border-hard);
    --app-modal-surface: color-mix(in srgb, var(--card-bg) 95%, var(--bg-primary) 5%);
    overflow: auto;
    padding: 1rem;
}

.dashboard-modal-dialog-sm {
    --app-modal-width: 420px;
}

.dashboard-modal-dialog h3 {
    margin: 0 0 0.9rem;
    font-size: 1.2rem;
    letter-spacing: -0.015em;
}

.dashboard-modal-close {
    font-size: 1.4rem;
    --app-modal-close-bg: transparent;
    --app-modal-close-color: var(--text-muted);
}

.dashboard-modal-close:hover {
    background: color-mix(in srgb, var(--primary-color) 16%, transparent);
    color: var(--text-main);
}

.dashboard-components-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(152px, 1fr));
    gap: 0.6rem;
    margin-top: 0.75rem;
}

.dashboard-components-search {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0 0.8rem;
    min-height: 2.7rem;
    border: 1px solid var(--border-soft);
    border-radius: 12px;
    color: var(--text-muted);
    background: color-mix(in srgb, var(--card-bg) 88%, var(--bg-primary) 12%);
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.dashboard-components-search:focus-within {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-color) 16%, transparent);
}

.dashboard-components-search svg {
    width: 1.1rem;
    height: 1.1rem;
    flex: 0 0 auto;
}

.dashboard-components-search input {
    min-width: 0;
    width: 100%;
    border: 0;
    outline: 0;
    color: var(--text-main);
    background: transparent;
    font: inherit;
}

.dashboard-components-search input::placeholder {
    color: var(--text-muted);
}

.dashboard-component-card {
    position: relative;
    overflow: hidden;
    min-height: 7.75rem;
    width: 100%;
    appearance: none;
    color: var(--text-main);
    font: inherit;
    text-align: left;
    cursor: pointer;
    border: 1px solid color-mix(in srgb, var(--border-soft) 82%, transparent);
    border-radius: 16px;
    padding: 0.8rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.7rem;
    background: color-mix(in srgb, var(--card-bg) 94%, var(--bg-primary) 6%);
    box-shadow: 0 1px 0 color-mix(in srgb, var(--text-main) 6%, transparent);
    transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.dashboard-component-card:hover {
    z-index: 1;
    transform: translateY(-2px) scale(1.04);
    transform-origin: center top;
    border-color: var(--primary-color);
    box-shadow: 0 12px 24px var(--shadow-color);
}

.dashboard-component-card-icon {
    width: 2.85rem;
    height: 2.85rem;
    flex: 0 0 auto;
    border-radius: 10px;
    display: grid;
    place-items: center;
    color: var(--primary-color);
    background: color-mix(in srgb, var(--primary-color) 14%, var(--card-bg));
    border: 1px solid color-mix(in srgb, var(--primary-color) 18%, var(--border-soft));
    transition: transform 0.2s ease, background-color 0.2s ease;
}

.dashboard-component-card-icon svg {
    width: 1.45rem;
    height: 1.45rem;
}

.dashboard-component-card:hover .dashboard-component-card-icon {
    transform: scale(1.06);
    background: color-mix(in srgb, var(--primary-color) 21%, var(--card-bg));
}

.dashboard-component-card-content h4 {
    margin: 0;
    font-size: 0.8rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
}

.dashboard-component-card-content p {
    position: absolute;
    right: 0.6rem;
    bottom: 0.6rem;
    left: 0.6rem;
    max-height: 4rem;
    margin: 0;
    padding: 0.45rem 0.5rem;
    border: 1px solid color-mix(in srgb, var(--primary-color) 24%, var(--border-soft));
    border-radius: 9px;
    background: color-mix(in srgb, var(--card-bg) 96%, var(--bg-primary) 4%);
    color: var(--text-muted);
    font-size: 0.76rem;
    line-height: 1.35;
    opacity: 0;
    pointer-events: none;
    transform: translateY(0.35rem);
    transition: opacity 0.16s ease, transform 0.16s ease;
}

.dashboard-component-card:hover .dashboard-component-card-content p,
.dashboard-component-card:focus-visible .dashboard-component-card-content p {
    opacity: 1;
    transform: translateY(0);
}

.dashboard-component-card:focus-visible {
    outline: 3px solid color-mix(in srgb, var(--primary-color) 35%, transparent);
    outline-offset: 2px;
}

.dashboard-clock-settings-form {
    display: grid;
    gap: 0.65rem;
}

.dashboard-clock-settings-form label {
    font-size: 0.87rem;
    color: var(--text-muted);
}

.dashboard-clock-settings-form select {
    border: 1px solid var(--border-soft);
    border-radius: 8px;
    background: color-mix(in srgb, var(--card-bg) 87%, var(--bg-primary) 13%);
    color: var(--text-main);
    padding: 0.55rem 0.65rem;
}

.dashboard-form-submit {
    margin-top: 0.4rem;
    appearance: none;
    border: none;
    border-radius: 9px;
    padding: 0.6rem 0.8rem;
    background: var(--primary-color);
    color: var(--text-on-accent);
    font-weight: 600;
    cursor: pointer;
}

@media (max-width: 900px) {
    .dashboard-shell {
        width: 100%;
        padding: 0.45rem 0.35rem calc(4.25rem + env(safe-area-inset-bottom));
    }

    .dashboard-pages-toolbar {
        gap: 0.35rem;
        max-width: calc(100vw - 0.7rem);
    }

    .dashboard-pages-dot--add {
        width: 0.95rem;
        height: 0.95rem;
    }
}

/* Modal and News shared styles (moved to common because the modal is in the Dashboard shell) */
.ntf-modal-hidden {
    display: none !important;
}

.ntf-modal {
    --app-modal-z-index: 101000;
    --app-modal-backdrop: rgba(0, 0, 0, 0.52);
    --app-modal-backdrop-blur: 8px;
}

.ntf-modal-overlay {
    pointer-events: auto;
}

.ntf-modal-box {
    --app-modal-width: 700px;
    --app-modal-radius: 24px;
    --app-modal-border: color-mix(in srgb, var(--border-soft) 82%, transparent);
    --app-modal-surface: color-mix(in srgb, var(--card-bg) 94%, #000 6%);
    overflow: hidden;
}

.ntf-modal-content {
    padding: 1.35rem;
}

.ntf-modal-hero {
    margin: 0 0 1.1rem;
    width: 100%;
    height: 280px;
    overflow: hidden;
    border-radius: 16px;
    background: #000;
}

.ntf-modal-hero img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #000;
}

.ntf-modal-body {
    background: color-mix(in srgb, var(--card-bg) 88%, #000 12%);
    border: 1px solid color-mix(in srgb, var(--border-soft) 70%, transparent);
    border-radius: 14px;
    padding: 1rem 1.05rem 1.15rem;
}

.ntf-modal-meta {
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    margin-bottom: 0.65rem;
    font-weight: 800;
    font-size: 0.84rem;
    color: var(--text-muted);
}

.ntf-modal-author-tag {
    color: var(--primary-color);
    text-transform: uppercase;
}

.ntf-modal-body h2 {
    margin: 0 0 0.7rem;
    font-size: 1.62rem;
    line-height: 1.25;
    color: var(--text-main);
}

.ntf-modal-desc {
    margin: 0;
    color: var(--text-muted);
    line-height: 1.58;
    font-size: 1rem;
    background: color-mix(in srgb, var(--card-bg) 88%, transparent);
    border-radius: 10px;
    padding: 0.7rem 0.75rem;
}

.ntf-modal-desc h2,
.ntf-modal-desc h3,
.ntf-modal-desc h4,
.ntf-modal-desc p,
.ntf-modal-desc ul,
.ntf-modal-desc ol,
.ntf-modal-desc blockquote,
.ntf-modal-desc table,
.ntf-modal-desc figure {
    margin-top: 0;
}

.ntf-modal-desc img {
    max-width: 100%;
    height: auto;
    border-radius: 12px;
}

.ntf-modal-desc figure {
    margin-left: 0;
    margin-right: 0;
}

.ntf-modal-desc figcaption {
    margin-top: 0.45rem;
    color: var(--text-muted);
    font-size: 0.85rem;
}

.ntf-modal-desc blockquote {
    border-left: 3px solid var(--primary-color);
    padding-left: 1rem;
    color: var(--text-muted);
}

.ntf-modal-desc table {
    width: 100%;
    border-collapse: collapse;
}

.ntf-modal-desc th,
.ntf-modal-desc td {
    border: 1px solid var(--border-soft);
    padding: 0.55rem 0.65rem;
}

.ntf-modal-desc mark {
    border-radius: 4px;
    padding: 0.05rem 0.2rem;
}

.ntf-modal-actions {
    margin-top: 1rem;
    display: flex;
    justify-content: center;
}

.ntf-modal-like-action {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    background: color-mix(in srgb, var(--card-bg) 82%, #000 18%);
    border: 2px solid color-mix(in srgb, var(--border-soft) 80%, transparent);
    padding: 0.75rem 2.4rem;
    border-radius: 999px;
    color: var(--text-main);
    font-weight: 900;
    cursor: pointer;
    transition: 0.24s ease;
    font-size: 1.02rem;
}

.ntf-modal-like-action.active {
    background: #f7258514;
    border-color: #f72585;
    color: #f72585;
}

.ntf-modal-like-action.active svg {
    fill: #f72585;
    stroke: #f72585;
}

.ntf-modal-like-action.is-bursting svg {
    animation: lk-burst 0.4s ease;
}

.ntf-modal-close {
    --app-modal-close-bg: rgba(0, 0, 0, 0.42);
    --app-modal-close-color: #fff;
}
