html {
    min-height: 100%;
    background: var(--color-bg);
}

body {
    min-height: 100vh;
    font-family: var(--font-body);
    color: var(--color-text);
    background:
        radial-gradient(circle at 75% 10%, rgba(99, 91, 255, 0.08), transparent 28%),
        var(--color-bg);
    transition: background-color var(--transition), color var(--transition);
}

button,
a,
input {
    outline: none;
}

:focus-visible {
    outline: 3px solid rgba(99, 91, 255, 0.28);
    outline-offset: 3px;
}

::selection {
    color: #ffffff;
    background: var(--color-primary);
}

.page-shell {
    width: min(100%, var(--container));
    min-height: 100vh;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-rows: var(--header-height) 1fr var(--footer-height);
}

.skip-link {
    position: fixed;
    top: 12px;
    left: 12px;
    z-index: 9999;
    padding: 10px 14px;
    color: #ffffff;
    background: var(--color-primary);
    border-radius: var(--radius-sm);
    transform: translateY(-150%);
    transition: transform var(--transition);
}

.skip-link:focus {
    transform: translateY(0);
}

.icon-button {
    width: 40px;
    height: 40px;
    display: inline-grid;
    place-items: center;
    color: var(--color-text-soft);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 50%;
    cursor: pointer;
    box-shadow: var(--shadow-sm);
    transition: color var(--transition), border-color var(--transition), transform var(--transition), background var(--transition);
}

.icon-button:hover {
    color: var(--color-primary);
    border-color: var(--color-primary);
    transform: translateY(-1px);
}
