/* ===================================================================
   Qub Creator — Style Guide Aligned Stylesheet
   Reference: docs/QUB-STYLE-GUIDE.md
   =================================================================== */

/* === Font Faces === */
@font-face {
    font-family: 'Satoshi';
    src: url('/fonts/Satoshi-Regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Satoshi';
    src: url('/fonts/Satoshi-Medium.woff2') format('woff2');
    font-weight: 500;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Satoshi';
    src: url('/fonts/Satoshi-Bold.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'JetBrains Mono';
    src: url('/fonts/JetBrainsMono-Regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

/* === Design Tokens === */
:root {
    /* --- Primary: Lime scale --- */
    --lime-50: #F7FEE7;
    --lime-100: #ECFCCB;
    --lime-200: #D9F99D;
    --lime-300: #BEF264;
    --lime-400: #A3E635;
    --lime-500: #84CC16;
    --lime-600: #78B813;
    --lime-700: #65A30D;
    --lime-800: #4A7A0B;
    --lime-900: #3F6212;
    --lime-950: #365314;

    /* --- Neutrals: green-tinted charcoal --- */
    --neutral-0: #FFFFFF;
    --neutral-50: #F4F5F2;
    --neutral-100: #E8EBE4;
    --neutral-150: #E0E5DC;
    --neutral-200: #D4DAD0;
    --neutral-300: #B0B8A8;
    --neutral-400: #8A9282;
    --neutral-500: #5F675A;
    --neutral-600: #4B5245;
    --neutral-700: #3D4437;
    --neutral-800: #2E3329;
    --neutral-850: #222620;
    --neutral-900: #1A1D18;
    --neutral-950: #0C0F0A;

    /* --- Semantic colours (not lime-tinted) --- */
    --red-500: #EF4444;
    --red-600: #DC2626;
    --red-700: #B91C1C;
    --red-100: #FEE2E2;
    --red-950: #450A0A;
    --amber-500: #F59E0B;
    --amber-100: #FEF3C7;
    --amber-700: #B45309;
    --blue-500: #3B82F6;
    --blue-100: #DBEAFE;
    --blue-400: #60A5FA;
    --blue-700: #1D4ED8;
    --blue-950: #172554;
    --green-500: var(--lime-500);

    /* --- Font stacks --- */
    --font-sans: 'Satoshi', system-ui, -apple-system, sans-serif;
    --font-mono: 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;

    /* --- Spacing (4px base) --- */
    --space-0: 0px;
    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
    --space-8: 32px;
    --space-10: 40px;
    --space-12: 48px;
    --space-16: 64px;
    --space-20: 80px;
    --space-24: 96px;

    /* --- Border radius --- */
    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 12px;
    --radius-xl: 16px;
    --radius-full: 9999px;

    /* --- Motion --- */
    --ease-default: cubic-bezier(0.25, 0.1, 0.25, 1.0);
    --ease-out: cubic-bezier(0.0, 0.0, 0.2, 1.0);
    --ease-in: cubic-bezier(0.4, 0.0, 1.0, 1.0);
    --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1.0);

    --duration-fast: 100ms;
    --duration-default: 150ms;
    --duration-medium: 200ms;
    --duration-slow: 300ms;
    --duration-slower: 400ms;

    /* --- Touch --- */
    --touch-min: 44px;

    /* --- Semantic aliases (dark mode default — avoids FOUC) --- */
    --color-bg-page: var(--neutral-950);
    --color-bg-surface: var(--neutral-900);
    --color-bg-elevated: var(--neutral-850);
    --color-bg-overlay: var(--neutral-800);
    --color-border-primary: var(--neutral-800);
    --color-border-secondary: var(--neutral-700);
    --color-text-heading: var(--neutral-100);
    --color-text-body: var(--neutral-400);
    --color-text-muted: var(--neutral-500);
    --color-text-on-primary: var(--neutral-950);
    --color-primary: var(--lime-500);
    --color-primary-hover: var(--lime-700);
    --color-primary-text: var(--lime-400);
}

/* --- Light mode overrides --- */
@media (prefers-color-scheme: light) {
    :root {
        --color-bg-page: var(--neutral-0);
        --color-bg-surface: var(--neutral-50);
        --color-bg-elevated: var(--neutral-100);
        --color-bg-overlay: var(--neutral-200);
        --color-border-primary: var(--neutral-200);
        --color-border-secondary: var(--neutral-150);
        --color-text-heading: var(--neutral-900);
        --color-text-body: var(--neutral-600);
        --color-text-muted: var(--neutral-400);
        --color-text-on-primary: var(--neutral-950);
        --color-primary: var(--lime-500);
        --color-primary-hover: var(--lime-700);
        --color-primary-text: var(--lime-800);
    }
}

/* === Reset === */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-family: var(--font-sans);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--color-text-body);
    background: var(--color-bg-page);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    min-height: 100dvh;
    padding:
        env(safe-area-inset-top)
        env(safe-area-inset-right)
        env(safe-area-inset-bottom)
        env(safe-area-inset-left);
    -webkit-tap-highlight-color: transparent;
}

@supports not (min-height: 100dvh) {
    body { min-height: 100vh; }
}

/* === Screen reader only === */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* === Focus === */
*:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

/* === Reduced Motion === */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* === Links (Style Guide §3.3) === */
a {
    color: var(--blue-500);
    text-decoration: none;
    transition: border-color var(--duration-fast) var(--ease-default);
    border-bottom: 1px solid transparent;
}

a:hover {
    border-bottom-color: currentColor;
}

@media (prefers-color-scheme: light) {
    a { color: var(--blue-500); }
}
@media (prefers-color-scheme: dark) {
    a { color: #93C5FD; }
}

/* === Typography Utilities === */
.text-display-xl {
    font-size: 3rem;
    font-weight: 700;
    line-height: 1.1;
    letter-spacing: -0.03em;
    color: var(--color-text-heading);
}

.text-display-lg {
    font-size: 2.25rem;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.025em;
    color: var(--color-text-heading);
}

.text-display-md {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.02em;
    color: var(--color-text-heading);
}

.text-heading-lg {
    font-size: 1.5rem;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: -0.015em;
    color: var(--color-text-heading);
}

.text-heading-md {
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: -0.01em;
    color: var(--color-text-heading);
}

.text-heading-sm {
    font-size: 1.125rem;
    font-weight: 500;
    line-height: 1.4;
    letter-spacing: -0.005em;
    color: var(--color-text-heading);
}

.text-body-lg {
    font-size: 1.0625rem;
    font-weight: 400;
    line-height: 1.6;
}

.text-body {
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.6;
}

.text-body-sm {
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: 0.005em;
}

.text-caption {
    font-size: 0.8125rem;
    font-weight: 400;
    line-height: 1.4;
    letter-spacing: 0.01em;
}

.text-overline {
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.text-mono {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    font-weight: 400;
    line-height: 1.5;
}

/* === App Layout === */
.app-layout {
    display: flex;
    flex-direction: column;
    min-height: 100dvh;
}

.app-header {
    display: flex;
    align-items: center;
    padding: var(--space-4) var(--space-6);
    border-block-end: 1px solid var(--color-border-primary);
    background: var(--color-bg-page);
}

.app-header__wordmark {
    block-size: 28px;
    inline-size: auto;
}

.app-main {
    flex: 1;
    padding: var(--space-6);
    max-inline-size: 640px;
    inline-size: 100%;
    margin-inline: auto;
}

/* === Buttons === */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    min-block-size: var(--touch-min);
    padding: var(--space-3) var(--space-6);
    border: none;
    border-radius: var(--radius-md);
    font-family: var(--font-sans);
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition:
        background-color var(--duration-fast) var(--ease-default),
        border-color var(--duration-fast) var(--ease-default),
        transform var(--duration-fast) var(--ease-default);
    touch-action: manipulation;
    text-decoration: none;
}

.btn:active:not(:disabled) {
    transform: scale(0.97);
}

.btn:disabled {
    cursor: not-allowed;
    pointer-events: none;
}

/* Primary (lime) */
.btn--primary {
    background: var(--color-primary);
    color: var(--color-text-on-primary);
}

.btn--primary:hover:not(:disabled) {
    background: var(--color-primary-hover);
}

.btn--primary:active:not(:disabled) {
    background: var(--lime-800);
}

.btn--primary:disabled {
    background: var(--neutral-800);
    color: var(--neutral-600);
}

@media (prefers-color-scheme: light) {
    .btn--primary:disabled {
        background: var(--neutral-200);
        color: var(--neutral-400);
    }
}

/* Secondary (transparent + border) */
.btn--secondary {
    background: transparent;
    color: var(--color-text-heading);
    border: 1.5px solid var(--color-border-primary);
}

.btn--secondary:hover:not(:disabled) {
    background: var(--color-bg-surface);
}

.btn--secondary:active:not(:disabled) {
    background: var(--color-bg-elevated);
}

/* Ghost (inline actions) */
.btn--ghost {
    background: transparent;
    color: var(--color-text-muted);
}

.btn--ghost:hover:not(:disabled) {
    background: var(--color-bg-surface);
    color: var(--color-text-body);
}

/* Destructive (delete) */
.btn--destructive {
    background: var(--red-500);
    color: #FFFFFF;
}

.btn--destructive:hover:not(:disabled) {
    background: var(--red-600);
}

/* === Inputs === */
.input {
    display: block;
    inline-size: 100%;
    min-block-size: var(--touch-min);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    font-family: var(--font-sans);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--color-text-heading);
    transition:
        border-color var(--duration-fast) var(--ease-default),
        box-shadow var(--duration-fast) var(--ease-default);
}

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

.input:focus {
    outline: none;
    border-color: var(--lime-500);
    box-shadow: 0 0 0 1px var(--lime-500);
}

.input--error {
    border-color: var(--red-500);
}

.input--error:focus {
    border-color: var(--red-500);
    box-shadow: 0 0 0 1px var(--red-500);
}

.input__error-text {
    font-size: 0.8125rem;
    line-height: 1.4;
    letter-spacing: 0.01em;
    color: var(--red-500);
    margin-block-start: var(--space-1);
}

/* === Textarea === */
.textarea {
    display: block;
    inline-size: 100%;
    min-block-size: 160px;
    max-block-size: 400px;
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    font-family: var(--font-sans);
    font-size: 1rem;
    line-height: 1.6;
    color: var(--color-text-heading);
    resize: vertical;
    transition:
        border-color var(--duration-fast) var(--ease-default),
        box-shadow var(--duration-fast) var(--ease-default);
}

.textarea::placeholder {
    color: var(--color-text-muted);
}

.textarea:focus {
    outline: none;
    border-color: var(--lime-500);
    box-shadow: 0 0 0 1px var(--lime-500);
}

/* === Cards === */
.card {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
    transition:
        border-color var(--duration-medium) var(--ease-default),
        transform var(--duration-medium) var(--ease-default);
}

.card:hover {
    border-color: var(--color-border-primary);
}

/* === Draft Card === */
.draft-card {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    cursor: pointer;
    transition:
        border-color var(--duration-medium) var(--ease-default),
        transform var(--duration-medium) var(--ease-default);
}

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

.draft-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
}

.draft-card__preview {
    font-size: 0.875rem;
    line-height: 1.5;
    letter-spacing: 0.005em;
    color: var(--color-text-body);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-inline-size: 100%;
}

.draft-card__meta {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    font-size: 0.8125rem;
    line-height: 1.4;
    letter-spacing: 0.01em;
    color: var(--color-text-muted);
}

.draft-card__unlock {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-primary-text);
}

.draft-card__actions {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

/* === Status Badges === */
.badge {
    display: inline-flex;
    align-items: center;
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    white-space: nowrap;
}

/* Composing — neutral */
.badge--composing {
    background: var(--neutral-800);
    color: var(--neutral-400);
}

@media (prefers-color-scheme: light) {
    .badge--composing {
        background: var(--neutral-200);
        color: var(--neutral-600);
    }
}

/* Sealed — lime */
.badge--sealed {
    background: var(--lime-950);
    color: var(--lime-400);
}

@media (prefers-color-scheme: light) {
    .badge--sealed {
        background: var(--lime-100);
        color: var(--lime-800);
    }
}

/* Uploading — blue */
.badge--uploading {
    background: var(--blue-950);
    color: var(--blue-400);
}

@media (prefers-color-scheme: light) {
    .badge--uploading {
        background: var(--blue-100);
        color: var(--blue-700);
    }
}

/* Failed — red */
.badge--failed {
    background: var(--red-950);
    color: var(--red-500);
}

@media (prefers-color-scheme: light) {
    .badge--failed {
        background: var(--red-100);
        color: var(--red-700);
    }
}

/* === Compose Form === */
.compose-form {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
}

.compose-form__field {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.compose-form__label {
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.compose-form__hint {
    font-size: 0.8125rem;
    line-height: 1.4;
    letter-spacing: 0.01em;
    color: var(--color-text-muted);
}

.compose-form__footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
}

/* === Byte Counter === */
.byte-counter {
    font-size: 0.8125rem;
    line-height: 1.4;
    letter-spacing: 0.01em;
    color: var(--color-text-muted);
    text-align: end;
}

.byte-counter--warning {
    color: var(--amber-500);
}

.byte-counter--danger {
    color: var(--red-500);
}

/* === Saved Indicator === */
.saved-indicator {
    font-size: 0.8125rem;
    line-height: 1.4;
    color: var(--color-primary-text);
    opacity: 0;
    transition: opacity var(--duration-default) var(--ease-default);
}

.saved-indicator--visible {
    opacity: 1;
}

/* === Toast === */
.toast {
    position: fixed;
    inset-block-end: calc(var(--space-16) + env(safe-area-inset-bottom));
    inset-inline-start: 50%;
    transform: translateX(-50%);
    padding: var(--space-3) var(--space-6);
    background: var(--color-bg-elevated);
    color: var(--color-text-heading);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    font-weight: 500;
    z-index: 1000;
    animation: toast-enter var(--duration-slow) var(--ease-out);
}

@keyframes toast-enter {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

/* === Empty State === */
.empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-4);
    padding: var(--space-12) var(--space-6);
    text-align: center;
}

.empty-state__title {
    font-size: 1.25rem;
    font-weight: 500;
    line-height: 1.35;
    letter-spacing: -0.01em;
    color: var(--color-text-heading);
}

.empty-state__body {
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--color-text-muted);
    max-inline-size: 30ch;
}

.empty-state__cta {
    margin-block-start: var(--space-4);
}

/* === Inline Confirm === */
.inline-confirm {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) 0;
    font-size: 0.875rem;
    color: var(--color-text-body);
}

/* === Draft List === */
.draft-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.draft-list__header {
    padding-block-end: var(--space-4);
}

/* === Navigation (bottom tabs) === */
.nav-tabs {
    display: flex;
    border-block-start: 1px solid var(--color-border-primary);
    background: var(--color-bg-page);
    padding-block-end: env(safe-area-inset-bottom);
}

.nav-tab {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-block-size: var(--touch-min);
    padding: var(--space-1) var(--space-2);
    border: none;
    background: none;
    color: var(--color-text-muted);
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    touch-action: manipulation;
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-default);
}

.nav-tab:hover {
    color: var(--color-text-body);
}

.nav-tab--active {
    color: var(--color-primary);
}

/* === Page Stubs (for remaining stub pages) === */
.page-stub {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-4);
    padding: var(--space-12);
    color: var(--color-text-muted);
    text-align: center;
}

.page-stub__title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-text-heading);
}

/* === Markdown Pages (legal, etc.) === */
.markdown-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--space-8) var(--space-4);
    width: 100%;
}

.markdown-page__title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--color-text-heading);
    margin-bottom: var(--space-6);
}

.markdown-page .content-body {
    width: 100%;
    max-width: 65ch;
}

/* === Legal Directory Page === */
.legal-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--space-12) var(--space-4);
    gap: var(--space-4);
}

.legal-page__title {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--color-text-heading);
}

.legal-nav {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    width: 100%;
    max-width: 28rem;
    margin-top: var(--space-4);
}

.legal-nav__item {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    padding: var(--space-4);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: border-color 0.15s ease;
    min-height: var(--touch-min);
}

.legal-nav__item:hover {
    border-color: var(--color-primary);
}

.legal-nav__label {
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-primary-text);
}

.legal-nav__desc {
    font-size: 0.875rem;
    color: var(--color-text-muted);
}

/* === Loading State === */
.loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-12);
    color: var(--color-text-muted);
}

/* === Modal (Style Guide §6.4) === */
.modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: max(var(--space-4), env(safe-area-inset-top))
             max(var(--space-4), env(safe-area-inset-right))
             max(var(--space-4), env(safe-area-inset-bottom))
             max(var(--space-4), env(safe-area-inset-left));
    background: rgba(12, 15, 10, 0.50);
    animation: modal-fade-in var(--duration-default) var(--ease-default);
}

@media (prefers-color-scheme: dark) {
    .modal-overlay {
        background: rgba(12, 15, 10, 0.70);
    }
}

@keyframes modal-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

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

.modal-dialog {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    width: 100%;
    max-width: 420px;
    padding: var(--space-6);
    background: var(--neutral-0);
    border-radius: var(--radius-xl);
    animation: modal-scale-in var(--duration-default) var(--ease-default);
}

@media (prefers-color-scheme: dark) {
    .modal-dialog {
        background: var(--neutral-900);
        border: 1px solid var(--neutral-800);
    }
}

.modal-dialog__icon {
    width: 32px;
    height: 32px;
    color: var(--amber-500);
    flex-shrink: 0;
}

.modal-dialog__title {
    font-family: var(--font-sans);
    font-size: 1.5rem;
    font-weight: 500;
    line-height: 1.3;
    color: var(--color-text-heading);
    margin: 0;
}

.modal-dialog__body {
    font-family: var(--font-sans);
    font-size: 1rem;
    line-height: 1.5;
    color: var(--color-text-body);
    margin: 0;
}

.modal-dialog__body--pre {
    white-space: pre-line;
}

.modal-dialog__checkbox-label {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--color-text-body);
    cursor: pointer;
    min-block-size: var(--touch-min);
    padding: var(--space-2) 0;
}

.modal-dialog__checkbox {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--color-primary);
    cursor: pointer;
}

.modal-dialog__terms-link {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.modal-dialog__terms-link:hover {
    color: var(--color-text-body);
}

.modal-dialog__actions {
    display: flex;
    flex-direction: row;
    justify-content: flex-end;
    gap: var(--space-3);
    margin-top: var(--space-2);
}

/* === Seal State UI === */
.seal-progress {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    color: var(--color-text-muted);
}

.seal-progress::before {
    content: '';
    width: 16px;
    height: 16px;
    border: 2px solid var(--color-text-muted);
    border-top-color: transparent;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

.seal-success {
    color: var(--lime-600);
    font-weight: 500;
}

.seal-error {
    color: var(--red-500);
}

/* === Sealed Page === */
.sealed-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-6);
    padding: var(--space-6) var(--space-4);
    text-align: center;
}

.sealed-success-icon {
    width: 64px;
    height: 64px;
    color: var(--lime-500);
    animation: sealed-pulse 300ms var(--ease-spring);
}

@keyframes sealed-pulse {
    0% { transform: scale(0.9); opacity: 0.7; }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); opacity: 1; }
}

.delivery-url-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-3);
    width: 100%;
    max-width: 480px;
    padding: var(--space-5);
    border-radius: var(--radius-md);
    border: 1px solid var(--lime-200);
    background: color-mix(in srgb, var(--lime-50) 40%, transparent);
}

@media (prefers-color-scheme: dark) {
    .delivery-url-card {
        border-color: var(--lime-800);
        background: color-mix(in srgb, var(--lime-950) 40%, transparent);
    }
}

.delivery-url-text {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    line-height: 1.4;
    color: var(--color-text-body);
    word-break: break-all;
    user-select: all;
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    background: var(--neutral-50);
    width: 100%;
    text-align: center;
}

@media (prefers-color-scheme: dark) {
    .delivery-url-text {
        background: var(--neutral-900);
    }
}

.delivery-url-card .btn-row {
    display: flex;
    gap: var(--space-2);
}

.copy-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-sm);
    border: 1px solid var(--color-border);
    background: transparent;
    color: var(--color-text-body);
    cursor: pointer;
    min-height: var(--touch-min);
    transition: background var(--duration-fast) var(--ease-default),
                border-color var(--duration-fast) var(--ease-default);
}

.copy-btn:hover {
    background: var(--neutral-100);
}

@media (prefers-color-scheme: dark) {
    .copy-btn:hover {
        background: var(--neutral-800);
    }
}

.copy-btn--copied {
    color: var(--lime-600);
    border-color: var(--lime-400);
}

.share-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 600;
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-sm);
    border: none;
    background: var(--lime-500);
    color: var(--neutral-950);
    cursor: pointer;
    min-height: 44px;
    transition: background var(--duration-fast) var(--ease-default);
}

.share-btn:hover {
    background: var(--lime-400);
}

.share-btn:active {
    transform: scale(0.97);
}

.sealed-details {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    width: 100%;
    max-width: 480px;
    text-align: left;
}

.sealed-details__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--space-3);
    padding: var(--space-1) 0;
}

.sealed-details__label {
    font-family: var(--font-sans);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    flex-shrink: 0;
}

.sealed-details__value {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    color: var(--color-text-body);
    text-align: right;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sealed-actions {
    display: flex;
    gap: var(--space-3);
    justify-content: center;
    width: 100%;
    max-width: 480px;
}

/* === Offline Banner === */
.offline-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    background: var(--amber-100);
    color: var(--amber-700);
    font-size: 0.875rem;
    font-weight: 500;
    border-radius: var(--radius-md);
    margin-block-end: var(--space-4);
}

@media (prefers-color-scheme: dark) {
    .offline-banner {
        background: rgba(245, 158, 11, 0.15);
        color: var(--amber-500);
    }
}

/* === Purchase Page === */
.purchase-page {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
    padding: var(--space-6) 0;
}

.purchase-tier-card {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    padding: var(--space-6);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-lg);
}

.purchase-tier-badge {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--color-primary-text);
}

.purchase-price {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-text-heading);
}

/* === Success Page === */
.success-page {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-6);
    padding: var(--space-12) 0;
    text-align: center;
}

.success-icon {
    font-size: 3rem;
}

.success-spinner {
    width: 32px;
    height: 32px;
    border: 2px solid var(--color-border-primary);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

/* === App Toolbar (draft badge area) === */
.app-toolbar {
    display: flex;
    justify-content: flex-end;
    padding: var(--space-3) var(--space-4) 0;
}

/* === Draft Badge === */
.draft-badge {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: var(--radius-md);
    background: transparent;
    border: none;
    color: var(--color-text-muted);
    cursor: pointer;
    transition: color var(--duration-fast) var(--ease-default),
                background var(--duration-fast) var(--ease-default);
}

.draft-badge:hover {
    background: var(--color-bg-surface);
    color: var(--color-text-body);
}

.draft-badge__count {
    position: absolute;
    top: 4px;
    right: 4px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--color-primary);
    color: var(--neutral-900);
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
}

/* === Footer === */
.app-footer {
    display: flex;
    justify-content: center;
    gap: var(--space-4);
    padding: var(--space-6) var(--space-4) var(--space-4);
    margin-top: auto;
}

.app-footer__link {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color var(--duration-fast) var(--ease-default),
                border-color var(--duration-fast) var(--ease-default);
}

.app-footer__link:hover {
    color: var(--color-text-body);
    border-bottom-color: currentColor;
}

/* === Date Picker Step === */
.date-picker {
    display: flex;
    flex-direction: column;
    gap: var(--space-5);
    padding: var(--space-4) 0;
}

.date-picker__preview {
    max-height: 6lh;
    overflow: hidden;
    padding: var(--space-4);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    line-height: 1.6;
    color: var(--color-text-body);
    white-space: pre-wrap;
    word-break: break-word;
}

.date-picker__presets {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

.date-picker__preset-btn {
    min-height: 36px;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--color-text-body);
    font-size: 0.875rem;
    cursor: pointer;
    transition: all var(--duration-fast) var(--ease-default);
}

.date-picker__preset-btn:hover {
    border-color: var(--color-primary);
    color: var(--color-primary-text);
}

.date-picker__preset-btn--active {
    border-color: var(--color-primary);
    background: rgba(132, 204, 22, 0.1);
    color: var(--color-primary-text);
    font-weight: 500;
}

.date-picker__resolved {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--color-text-heading);
}

.date-picker__custom {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

/* === Sealing Screen === */
.sealing-screen {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-6);
    min-height: 60vh;
    text-align: center;
}

.sealing-screen__icon {
    width: 64px;
    height: 64px;
    color: var(--color-primary);
    animation: seal-pulse 2s ease-in-out infinite;
}

@keyframes seal-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.7; transform: scale(1.05); }
}

.sealing-screen__text {
    font-size: 1.125rem;
    font-weight: 500;
    color: var(--color-text-heading);
}

.sealing-screen__timeout {
    font-size: 0.875rem;
    color: var(--color-text-muted);
    animation: fade-in-subtle 0.3s ease-out;
}

@keyframes fade-in-subtle {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* === Seal Inline Bar (Progressive Trust, UX-FLOW §2.3) === */
.seal-inline-bar {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    flex-wrap: wrap;
}

.seal-inline-bar__text {
    font-size: 0.875rem;
    color: var(--color-text-body);
    flex: 1 1 auto;
}

.seal-inline-bar__link {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    cursor: pointer;
    background: none;
    border: none;
    border-bottom: 1px solid transparent;
    padding: 0;
    transition: color var(--duration-fast) var(--ease-default),
                border-color var(--duration-fast) var(--ease-default);
}

.seal-inline-bar__link:hover {
    color: var(--color-text-body);
    border-bottom-color: currentColor;
}

/* === Modal Preview === */
.modal-dialog__preview {
    max-height: 5lh;
    overflow: hidden;
    padding: var(--space-3);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-sm);
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--color-text-body);
    white-space: pre-wrap;
    word-break: break-word;
}

/* === Viewer === */

/* === Viewer Layout === */
.viewer-layout {
    display: flex;
    flex-direction: column;
    min-height: 100dvh;
    max-width: 640px;
    margin: 0 auto;
    padding: 0 var(--space-4);
}

.viewer-header {
    padding: var(--space-4) 0;
    text-align: center;
}

.viewer-header__wordmark {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 1.25rem;
    color: var(--color-primary);
    letter-spacing: 0.05em;
}

.viewer-main {
    flex: 1;
    display: flex;
    flex-direction: column;
}

/* === Loading (Viewer) === */
.loading__text {
    color: var(--color-text-muted);
    font-size: 0.875rem;
}

.loading__spinner {
    width: 32px;
    height: 32px;
    border: 2px solid var(--color-border-primary);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

/* === Countdown Page === */
.countdown-page {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-8);
    padding: var(--space-16) 0;
    text-align: center;
}

.countdown-page__title {
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--color-text-heading);
}

/* === Countdown Timer (§6.5 + §2.4) === */
.countdown {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-8) var(--space-6);
    border-radius: var(--radius-lg);
    transition: background var(--duration-slow) var(--ease-out),
                color var(--duration-slow) var(--ease-out);
}

/* Counting state (dark default) */
.countdown--counting {
    background: var(--neutral-900);
    box-shadow: 0 0 24px 0 rgba(132, 204, 22, 0.15);
}

.countdown--counting .countdown__number {
    color: var(--lime-400);
}

/* Final hour (amber) */
.countdown--final-hour {
    background: var(--neutral-900);
    box-shadow: 0 0 24px 0 rgba(245, 158, 11, 0.15);
}

.countdown--final-hour .countdown__number {
    color: var(--amber-200);
}

/* Unlocked */
.countdown--unlocked {
    background: #1A2E05;
    box-shadow: 0 0 24px 0 rgba(132, 204, 22, 0.20);
}

.countdown--unlocked .countdown__number {
    color: var(--lime-400);
}

/* Light mode countdown overrides */
@media (prefers-color-scheme: light) {
    .countdown--counting {
        background: var(--lime-50);
        box-shadow: 0 0 24px 0 rgba(132, 204, 22, 0.10);
    }
    .countdown--counting .countdown__number {
        color: var(--lime-950);
    }
    .countdown--final-hour {
        background: var(--amber-100);
        box-shadow: 0 0 24px 0 rgba(245, 158, 11, 0.10);
    }
    .countdown--final-hour .countdown__number {
        color: var(--amber-700);
    }
    .countdown--unlocked {
        background: var(--lime-100);
    }
    .countdown--unlocked .countdown__number {
        color: var(--lime-950);
    }
}

.countdown__unit {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 56px;
}

.countdown__number {
    font-family: var(--font-sans);
    font-weight: 700;
    font-size: 3rem;
    line-height: 1.1;
    transition: color var(--duration-default) var(--ease-out);
}

.countdown__label {
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: lowercase;
    color: var(--color-text-muted);
    margin-top: var(--space-1);
}

.countdown__separator {
    font-size: 2rem;
    font-weight: 700;
    color: var(--neutral-700);
    align-self: flex-start;
    padding-top: 0.5rem;
}

@media (prefers-color-scheme: light) {
    .countdown__separator { color: var(--neutral-300); }
}

/* Number cross-fade animation (§6.5) */
@keyframes number-fade {
    0% { opacity: 0.6; }
    100% { opacity: 1; }
}

.countdown__number {
    animation: number-fade var(--duration-default) var(--ease-out);
}

/* === Countdown Reveal Date === */
.countdown-page__reveal-date {
    font-size: 0.9375rem;
    color: var(--color-text-muted);
    text-align: center;
    margin-top: var(--space-4);
}

/* === Reveal Page === */
.reveal-page {
    display: flex;
    flex-direction: column;
    gap: var(--space-6);
    padding: var(--space-4) 0 var(--space-16);
}

/* === Verification Badge === */
.verification-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    background: rgba(132, 204, 22, 0.1);
    border: 1px solid rgba(132, 204, 22, 0.2);
    border-radius: var(--radius-full);
    width: fit-content;
}

.verification-badge__icon {
    color: var(--lime-500);
    font-size: 1rem;
    font-weight: 700;
}

.verification-badge__text {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-primary-text);
}

/* === Content Body (Markdown output) === */
.content-body {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--color-text-heading);
    word-break: break-word;
}

.content-body h1 { font-size: 1.75rem; font-weight: 700; margin: var(--space-6) 0 var(--space-3); color: var(--color-text-heading); }
.content-body h2 { font-size: 1.5rem; font-weight: 700; margin: var(--space-6) 0 var(--space-3); color: var(--color-text-heading); }
.content-body h3 { font-size: 1.25rem; font-weight: 600; margin: var(--space-4) 0 var(--space-2); color: var(--color-text-heading); }
.content-body h4 { font-size: 1.1rem; font-weight: 600; margin: var(--space-4) 0 var(--space-2); color: var(--color-text-heading); }
.content-body strong { font-weight: 700; color: var(--color-text-heading); }

.content-body p { margin-bottom: var(--space-4); }

.content-body ul,
.content-body ol {
    padding-left: var(--space-6);
    margin-bottom: var(--space-4);
}

.content-body li { margin-bottom: var(--space-1); }

.content-body blockquote {
    border-left: 3px solid var(--color-primary);
    padding-left: var(--space-4);
    margin: var(--space-4) 0;
    color: var(--color-text-muted);
    font-style: italic;
}

.content-body code {
    font-family: var(--font-mono);
    font-size: 0.875em;
    background: var(--color-bg-surface);
    padding: 0.15em 0.4em;
    border-radius: var(--radius-sm);
}

.content-body pre {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    padding: var(--space-4);
    overflow-x: auto;
    margin: var(--space-4) 0;
}

.content-body pre code {
    background: transparent;
    padding: 0;
    border-radius: 0;
    font-size: 0.875rem;
    line-height: 1.5;
}

.content-body hr {
    border: none;
    border-top: 1px solid var(--color-border-primary);
    margin: var(--space-6) 0;
}

.content-body del { color: var(--color-text-muted); }

/* === Content body max-width === */
.content-body {
    max-width: 65ch;
}

/* === Content Metadata === */
.content-meta {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-4);
    background: var(--color-bg-surface);
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border-primary);
}

.content-meta__row {
    display: flex;
    gap: var(--space-2);
}

.content-meta__label {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    min-width: 80px;
}

.content-meta__value {
    font-size: 0.8125rem;
    color: var(--color-text-body);
}

/* === Unsigned Notice === */
.unsigned-notice {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    font-style: italic;
    text-align: center;
}

/* === Proof Bar === */
.proof-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-md);
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    line-height: 1.5;
}

.proof-bar__verified {
    color: var(--color-primary-text);
    font-weight: 500;
}

/* === Report Section === */
.report-section {
    padding: var(--space-4) 0;
    border-top: 1px solid var(--color-border-primary);
}

.report-toggle {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    background: none;
    border: none;
    cursor: pointer;
    padding: var(--space-2) 0;
    min-height: var(--touch-min);
    font-family: var(--font-sans);
}

.report-toggle:hover { color: var(--color-text-body); }

.report-form {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.report-form__reason {
    border: none;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.report-form__reason-option {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    cursor: pointer;
    min-height: var(--touch-min);
}

.report-form__reason-radio {
    accent-color: var(--color-primary);
}

.report-form__reason-label {
    font-size: 0.875rem;
    color: var(--color-text-body);
}

.report-form__text {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    padding: var(--space-3);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    background: var(--color-bg-surface);
    color: var(--color-text-heading);
    resize: vertical;
    min-height: 80px;
}

.report-form__text::placeholder { color: var(--color-text-muted); }

.report-form__submit {
    font-family: var(--font-sans);
    font-size: 0.875rem;
    font-weight: 500;
    padding: var(--space-2) var(--space-4);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    background: var(--color-bg-surface);
    color: var(--color-text-body);
    cursor: pointer;
    min-height: var(--touch-min);
    width: fit-content;
    transition: border-color var(--duration-fast) var(--ease-default);
}

.report-form__submit:hover:not(:disabled) {
    border-color: var(--color-text-body);
}

.report-form__submit:disabled {
    opacity: 0.5;
    cursor: default;
}

.report-form__submitted {
    font-size: 0.875rem;
    color: var(--color-primary-text);
    padding: var(--space-2) 0;
}

/* === CTA Section === */
.cta-section {
    text-align: center;
    padding: var(--space-12) 0 var(--space-8);
    border-top: 1px solid var(--color-border-primary);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-4);
}

.cta-section__title {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-text-heading);
}

.cta-section__body {
    font-size: 1rem;
    color: var(--color-text-body);
    max-width: 360px;
}

/* === Error Page === */
.error-page {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-4);
    padding: var(--space-16) 0;
    text-align: center;
}

.error-page__icon {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--color-text-muted);
}

.error-page__title {
    font-size: 1.125rem;
    font-weight: 500;
    color: var(--color-text-heading);
    max-width: 320px;
}

.error-page__body {
    font-size: 0.875rem;
    color: var(--color-text-muted);
    max-width: 320px;
}

/* === Expandable Details === */
.details-section {
    border: 1px solid var(--color-border-secondary);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.details-section__summary {
    padding: var(--space-3) var(--space-4);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--color-text-muted);
    cursor: pointer;
    list-style: none;
    transition: color var(--duration-fast) var(--ease-default);
}

.details-section__summary::-webkit-details-marker { display: none; }
.details-section__summary::marker { display: none; }

.details-section__summary:hover {
    color: var(--color-text-body);
}

.details-section__row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--space-3);
    padding: var(--space-2) var(--space-4);
    border-top: 1px solid var(--color-border-secondary);
}

.details-section__row:last-child {
    padding-bottom: var(--space-3);
}

.details-section__label {
    font-size: 0.75rem;
    color: var(--color-text-muted);
    white-space: nowrap;
}

.details-section__value {
    font-size: 0.75rem;
    font-family: var(--font-mono);
    color: var(--color-text-body);
    word-break: break-all;
    text-align: right;
}

/* === Viewer Footer === */
.viewer-footer {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-6) var(--space-4) var(--space-4);
    margin-top: auto;
}

.viewer-footer__link {
    font-size: 0.8125rem;
    color: var(--color-text-muted);
    text-decoration: none;
    transition: color var(--duration-fast) var(--ease-default);
}

.viewer-footer__link:hover {
    color: var(--color-text-body);
}

.viewer-footer__cta {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--color-primary-text);
    text-decoration: none;
    transition: opacity var(--duration-fast) var(--ease-default);
}

.viewer-footer__cta:hover {
    opacity: 0.8;
}

/* === Reveal Transitions === */
@keyframes dissolve-out {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes reveal-fade-in {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

.dissolve-out {
    animation: dissolve-out 0.4s ease-out forwards;
}

.fade-in {
    animation: reveal-fade-in 0.4s ease-out;
}

/* === Developer Page === */

.developer-page {
    max-width: 640px;
    margin: 0 auto;
    padding: var(--space-8) var(--space-4);
    display: flex;
    flex-direction: column;
    gap: var(--space-10);
}

.developer-hero {
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.developer-section {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.developer-capabilities {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.developer-capability {
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    color: var(--color-text-body);
    font-family: var(--font-sans);
    font-size: 0.9375rem;
    line-height: 1.5;
}

.developer-capability::before {
    content: '\2713';
    color: var(--color-primary);
    font-weight: 700;
    flex-shrink: 0;
}

.developer-tier-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
    line-height: 1.4;
}

.developer-tier-table th,
.developer-tier-table td {
    padding: var(--space-2) var(--space-3);
    text-align: left;
    border-bottom: 1px solid var(--color-border-primary);
}

.developer-tier-table th {
    color: var(--color-text-heading);
    font-weight: 500;
}

.developer-tier-table td {
    color: var(--color-text-body);
}

.developer-tier-table th:first-child,
.developer-tier-table td:first-child {
    color: var(--color-text-muted);
    font-weight: 400;
}

.developer-checkout {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.developer-checkout__form {
    display: flex;
    gap: var(--space-3);
    align-items: flex-end;
}

.developer-checkout__form .input {
    flex: 1;
}

.developer-code-block {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    padding: var(--space-4);
    font-family: var(--font-mono);
    font-size: 0.8125rem;
    line-height: 1.6;
    color: var(--color-text-body);
    overflow-x: auto;
    white-space: pre;
}

.developer-links {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.developer-link {
    color: var(--color-primary-text);
    text-decoration: none;
    font-size: 0.9375rem;
}

.developer-link:hover {
    text-decoration: underline;
}

.developer-key-display {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    align-items: center;
    text-align: center;
}

.developer-key-value {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border-primary);
    border-radius: var(--radius-md);
    padding: var(--space-3) var(--space-4);
    font-family: var(--font-mono);
    font-size: 0.875rem;
    color: var(--color-primary-text);
    word-break: break-all;
    width: 100%;
    text-align: center;
    user-select: all;
}

.developer-key-warning {
    color: var(--amber-500);
    font-size: 0.875rem;
    font-weight: 500;
}

.developer-cancelled {
    text-align: center;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    align-items: center;
    padding: var(--space-10) var(--space-4);
}
