/* ── CSS Variables — mt5depot brand (Light Theme) ──
   Brand source of truth: src/styles/tokens.css
   Accent = emerald (#059669 light / #10b981 dark), base = slate/navy. */
:root {
    --sft-bg: #ffffff;
    --sft-bg-alt: #f8fafc;
    --sft-bg-hover: #f1f5f9;
    --sft-bg-card: #ffffff;
    --sft-text: #020617;
    --sft-text-secondary: #475569;
    --sft-text-muted: #64748b;
    --sft-border: #e2e8f0;
    --sft-border-light: #f1f5f9;
    /* emerald-700 を accent に: 白上の emerald 文字(logo/タブ/tier)と白文字ボタン地を
       両立して WCAG AA(4.5)達成。#059669 は白上3.8で未達だった(ビルダーのみ・tokens.css不変) */
    --sft-primary: #047857;
    --sft-primary-dark: #065f46;
    --sft-primary-bg: #ecfdf5;
    --sft-success: #059669;
    --sft-success-dark: #047857;
    --sft-success-bg: #ecfdf5;
    --sft-error: #ef4444;
    --sft-error-bg: #fef2f2;
    --sft-card-shadow: 0 2px 12px rgba(2, 6, 23, 0.06);
    --sft-input-bg: #f8fafc;
    --sft-input-focus-bg: #ffffff;
    --sft-toast-bg: #0f172a;
    --sft-toast-text: #fff;
    --sft-warning: #d97706;
    --sft-warning-bg: #fffbeb;
    --sft-radius-md: 10px;
}

/* ── Dark Mode — mt5depot brand (default) ── */
[data-sft-theme="dark"] {
    --sft-bg: #020617;
    --sft-bg-alt: #020617;
    --sft-bg-hover: #1e293b;
    --sft-bg-card: #0f172a;
    --sft-text: #f1f5f9;
    --sft-text-secondary: #94a3b8;
    /* slate-500(#64748b)はsurface(#0f172a)上で3.75:1とAA未満→AA達成まで引上げ */
    --sft-text-muted: #8b99ad;
    --sft-border: #1e293b;
    --sft-border-light: #1e293b;
    --sft-primary: #10b981;
    --sft-primary-dark: #059669;
    --sft-primary-bg: rgba(16, 185, 129, 0.12);
    --sft-success: #34d399;
    --sft-success-dark: #10b981;
    --sft-success-bg: rgba(16, 185, 129, 0.1);
    --sft-error: #f87171;
    --sft-error-bg: rgba(248, 113, 113, 0.1);
    --sft-card-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
    --sft-input-bg: #020617;
    --sft-input-focus-bg: #0f172a;
    --sft-toast-bg: #f1f5f9;
    --sft-toast-text: #020617;
    --sft-warning: #fbbf24;
    --sft-warning-bg: rgba(251, 191, 36, 0.1);
}

/* prefers-reduced-motion 対応 */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}
/* ── ダークモードトグル ── */
.sft-theme-toggle {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border: 1.5px solid var(--sft-border);
    border-radius: 10px;
    background: var(--sft-bg-card);
    color: var(--sft-text);
    cursor: pointer;
    transition: border-color 0.2s linear, box-shadow 0.2s linear;
    font-size: 18px;
    line-height: 1;
    min-width: 48px;
    min-height: 48px;
}
.sft-theme-toggle:hover {
    border-color: var(--sft-primary);
    box-shadow: 0 2px 8px rgba(16, 185, 129, 0.15);
}
.sft-theme-toggle:active {
    opacity: 0.8;
}
.sft-theme-toggle:focus-visible {
    outline: 2px solid var(--sft-primary);
    outline-offset: 2px;
}

/* ── トースト通知 ── */
.sft-toast {
    position: fixed;
    bottom: max(24px, env(safe-area-inset-bottom, 24px));
    left: 50%;
    transform: translateX(-50%) translateY(80px);
    padding: 12px 24px;
    background: var(--sft-toast-bg);
    color: var(--sft-toast-text);
    font-size: 13px;
    font-weight: 600;
    border-radius: 12px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
    z-index: 99999;
    opacity: 0;
    transition: opacity 0.35s cubic-bezier(0.22, 1, 0.36, 1), transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
    pointer-events: none;
    white-space: nowrap;
}

.sft-toast.sft-toast-show {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}

/* ── スムーススクロール ── */
html {
    scroll-behavior: smooth;
}

@media print {
    body {
        color: #000 !important;
        background: #fff !important;
    }
    .sft-toast,
    .sft-theme-toggle {
        display: none !important;
    }
    [data-sft-theme="dark"] {
        --sft-text: #1E1810;
        --sft-bg: #fff;
        --sft-bg-card: #fff;
        --sft-border: #E0DDDB;
    }
}

