.app-shell {
    --app-primary: #ff6b00;
    --app-primary-strong: #db5300;
    --app-primary-soft: #fff1e7;
    --app-surface: rgba(255, 255, 255, 0.92);
    --app-surface-strong: #ffffff;
    --app-border: rgba(25, 40, 68, 0.12);
    --app-border-strong: rgba(25, 40, 68, 0.2);
    --app-text: #10243d;
    --app-text-soft: #4e5f76;
    --app-shadow: 0 20px 48px -30px rgba(11, 22, 43, 0.42);
    --app-shadow-soft: 0 14px 28px -24px rgba(13, 24, 44, 0.26);
    --app-focus: 0 0 0 3px rgba(255, 107, 0, 0.2);
    color: var(--app-text);
    font-family: "Avenir Next", "Segoe UI", "Helvetica Neue", "Noto Sans", sans-serif;
    background-color: #f2f5fb;
    background-image:
        radial-gradient(circle at 12% 12%, rgba(255, 145, 68, 0.24) 0%, rgba(255, 145, 68, 0) 48%),
        radial-gradient(circle at 88% 0%, rgba(49, 130, 206, 0.15) 0%, rgba(49, 130, 206, 0) 45%),
        linear-gradient(180deg, #f8fbff 0%, #eef2f8 100%);
    background-attachment: fixed;
    position: relative;
}

.app-shell::before {
    content: "";
    position: fixed;
    inset: auto -12vw -45vh auto;
    width: 56vw;
    height: 56vw;
    border-radius: 999px;
    background: radial-gradient(circle, rgba(255, 107, 0, 0.17) 0%, rgba(255, 107, 0, 0) 68%);
    pointer-events: none;
    z-index: 0;
}

.app-shell .env-banner {
    background: linear-gradient(95deg, #f16300, #ff9134);
    border-bottom: 1px solid rgba(255, 255, 255, 0.3);
    box-shadow: 0 8px 20px -18px rgba(143, 57, 0, 0.9);
}

.app-shell .app-main {
    max-width: 76rem;
    padding-top: clamp(1rem, 1.5vw, 1.75rem);
    padding-bottom: 8rem;
    position: relative;
    z-index: 1;
}

.app-shell h1,
.app-shell h2,
.app-shell h3,
.app-shell .card-title {
    color: #102238;
}

.app-shell h1 {
    letter-spacing: -0.01em;
}

.app-shell a {
    text-underline-offset: 0.16em;
}

.app-shell a.link,
.app-shell .link {
    color: var(--app-primary-strong);
    font-weight: 600;
}

.app-shell .card {
    background: var(--app-surface);
    border: 1px solid var(--app-border);
    border-radius: 1.2rem;
    box-shadow: var(--app-shadow);
    backdrop-filter: blur(8px);
}

.app-shell a.card {
    transition: transform 0.18s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.app-shell a.card:hover {
    border-color: rgba(255, 107, 0, 0.35);
    box-shadow: 0 22px 42px -26px rgba(255, 107, 0, 0.44);
}

.app-shell .card-body {
    gap: 1.15rem;
}

.app-shell .btn {
    border-radius: 0.9rem;
    font-weight: 650;
    letter-spacing: 0.01em;
    transition: transform 0.16s ease, box-shadow 0.2s ease, filter 0.2s ease;
}

.app-shell .btn:hover {
    transform: translateY(-1px);
}

.app-shell .btn-primary {
    background: linear-gradient(135deg, #ff862c 0%, #ff6b00 65%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 14px 24px -16px rgba(222, 84, 0, 0.95);
}

.app-shell .btn-primary:hover {
    filter: brightness(1.03);
}

.app-shell .btn-ghost {
    color: var(--app-text-soft);
}

.app-shell .btn-outline {
    border-color: var(--app-border-strong);
}

.app-shell .form-control .label-text {
    color: #21354d;
    font-weight: 600;
}

.app-shell .form-control .label-text-alt {
    color: var(--app-text-soft);
}

.app-shell :is(.input, .select, .textarea) {
    background: var(--app-surface-strong);
    border-color: rgba(31, 49, 77, 0.18);
    color: var(--app-text);
    border-radius: 0.85rem;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.app-shell :is(.input, .select, .textarea):hover {
    border-color: rgba(31, 49, 77, 0.28);
}

.app-shell :is(.input, .select, .textarea):focus,
.app-shell :is(.input, .select, .textarea):focus-visible,
.app-shell .btn:focus-visible,
.app-shell .link:focus-visible,
.app-shell a:focus-visible {
    outline: none;
    box-shadow: var(--app-focus);
}

.app-shell .checkbox:checked,
.app-shell .checkbox[aria-checked="true"] {
    background-color: var(--app-primary);
    border-color: var(--app-primary-strong);
}

.app-shell .alert {
    border-radius: 0.95rem;
    border: 1px solid var(--app-border);
    box-shadow: var(--app-shadow-soft);
}

.app-shell .alert-success {
    background-color: #ecfdf4;
    border-color: rgba(3, 123, 77, 0.32);
}

.app-shell .alert-error {
    background-color: #fff0f0;
    border-color: rgba(167, 44, 44, 0.35);
}

.app-shell .alert-warning {
    background-color: #fff8e9;
    border-color: rgba(193, 127, 31, 0.36);
}

.app-shell .alert-info {
    background-color: #eef7ff;
    border-color: rgba(39, 114, 184, 0.3);
}

.app-shell .badge {
    border-radius: 999px;
}

.app-shell .overflow-x-auto {
    border: 1px solid var(--app-border);
    border-radius: 1rem;
    background: var(--app-surface-strong);
}

.app-shell .overflow-x-auto .table {
    background: transparent;
}

.app-shell .table :where(thead th) {
    border-bottom-color: rgba(22, 40, 66, 0.12);
    color: #5a6f8d;
    font-size: 0.73rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

.app-shell .table tbody tr {
    border-bottom-color: rgba(22, 40, 66, 0.08);
    transition: background-color 0.16s ease;
}

.app-shell .table tbody tr:hover {
    background-color: rgba(255, 107, 0, 0.045);
}

.app-shell [data-availability-day] {
    border-color: rgba(31, 49, 77, 0.14);
    border-radius: 1rem;
    background: rgba(247, 250, 255, 0.84);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

.app-shell [data-slot-row][data-overlap="true"],
.app-shell [data-slot-row][data-invalid-range="true"],
.app-shell [data-slot-row][data-incomplete="true"] {
    background: #fff6ed;
    border-radius: 0.7rem;
    outline: 1px solid rgba(255, 107, 0, 0.32);
    padding: 0.3rem 0.4rem;
}

.app-shell .dock-spacer {
    height: 6.8rem;
}

.app-shell .dock {
    left: 0;
    right: 0;
    margin-inline: auto;
    width: min(58rem, calc(100% - 1rem));
    border-radius: 1.1rem;
    border: 1px solid rgba(19, 37, 62, 0.14);
    background: rgba(255, 255, 255, 0.97);
    box-shadow: 0 24px 38px -28px rgba(14, 26, 46, 0.58);
    padding-top: 0.8rem;
    overflow: visible;
}

.app-shell .dock > a,
.app-shell .dock .drawer .drawer-content .drawer-button {
    border-radius: 0.85rem;
    color: #52647d;
    transition: background-color 0.16s ease, color 0.16s ease;
}

.app-shell .dock > a:hover,
.app-shell .dock .drawer .drawer-content .drawer-button:hover,
.app-shell .dock > a:focus-visible,
.app-shell .dock .drawer .drawer-content .drawer-button:focus-visible {
    background: rgba(255, 107, 0, 0.14);
    color: #1f324b;
}

.app-shell .dock img {
    opacity: 0.92;
}

.app-shell .drawer-side .menu {
    background: #fff;
    border-left: 1px solid rgba(19, 37, 62, 0.16);
}

.app-shell .drawer-side .menu li > a {
    border-radius: 0.75rem;
}

.app-shell .drawer-side .menu li > a:hover {
    background: rgba(255, 107, 0, 0.11);
}

@media (max-width: 768px) {
    .app-shell .app-main {
        padding-top: 0.75rem;
        padding-bottom: 7.4rem;
    }

    .app-shell .card {
        border-radius: 1rem;
    }

    .app-shell .dock-spacer {
        height: 7.2rem;
    }
}

@media (prefers-reduced-motion: no-preference) {
    .app-shell .card,
    .app-shell .alert {
        animation: app-shell-rise 0.28s ease both;
    }

    @keyframes app-shell-rise {
        from {
            opacity: 0;
            transform: translateY(8px);
        }
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }
}
