/* ============================================================
   Athena Games Common — Temple of Iris ゲーム共通デザインシステム
   サイト本体 (css/style.css) のトークンをゲーム向けに展開する。
   クラスは ag- (Athena Games) プレフィックスで統一。
   ============================================================ */

:root {
    --ag-gold: #FFD700;
    --ag-gold-soft: #d4a854;
    --ag-aqua: #00CED1;
    --ag-aqua-soft: #E0FFFF;
    --ag-bg-1: #1a1a2e;
    --ag-bg-2: #16213e;
    --ag-glass: rgba(255, 255, 255, 0.08);
    --ag-glass-border: rgba(255, 255, 255, 0.18);
    --ag-text: #f5f5f5;
    --ag-text-dim: rgba(255, 255, 255, 0.65);
    --ag-danger: #ff5a7a;
    --ag-font-heading: 'Cinzel', serif;
    --ag-font-body: 'Zen Kaku Gothic New', 'Lato', sans-serif;
    --ag-font-wa: 'Noto Serif JP', serif;
}

/* ===== 土台 ===== */
.ag-shell {
    min-height: 100vh;
    margin: 0;
    font-family: var(--ag-font-body);
    color: var(--ag-text);
    background:
        radial-gradient(ellipse at 20% 0%, rgba(0, 206, 209, 0.10), transparent 50%),
        radial-gradient(ellipse at 80% 100%, rgba(255, 215, 0, 0.08), transparent 50%),
        linear-gradient(135deg, var(--ag-bg-1) 0%, var(--ag-bg-2) 100%);
}

.ag-shell h1, .ag-shell h2, .ag-shell h3 {
    font-family: var(--ag-font-heading);
}

/* ===== 上部ナビ（glass-nav互換のダーク版） ===== */
.ag-nav {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    padding: 0.8rem 1.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: rgba(20, 20, 40, 0.55);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--ag-glass-border);
    z-index: 900;
    box-sizing: border-box;
}

.ag-nav .ag-logo {
    font-family: var(--ag-font-heading);
    font-size: 1.2rem;
    color: var(--ag-aqua);
    text-shadow: 0 0 6px rgba(0, 206, 209, 0.4);
}

.ag-nav a {
    color: var(--ag-text-dim);
    text-decoration: none;
    font-size: 0.85rem;
    letter-spacing: 1px;
    transition: color 0.3s;
}

.ag-nav a:hover { color: var(--ag-aqua); }

/* ===== ガラスパネル ===== */
.ag-panel {
    background: var(--ag-glass);
    border: 1px solid var(--ag-glass-border);
    border-radius: 16px;
    backdrop-filter: blur(8px);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
}

/* ===== アテナ様パネル ===== */
.ag-athena-panel {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
    padding: 20px 18px;
    width: 240px;
    box-sizing: border-box;
}

.ag-athena-name {
    font-family: var(--ag-font-heading);
    font-size: 1.15rem;
    color: var(--ag-gold);
    letter-spacing: 2px;
    text-shadow: 0 0 10px rgba(255, 215, 0, 0.4);
}

.ag-athena-face {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    overflow: hidden;
    border: 3px solid var(--ag-gold);
    box-shadow: 0 0 28px rgba(255, 215, 0, 0.35);
    animation: ag-float 5s ease-in-out infinite;
    background: #000;
}

.ag-athena-face img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ag-athena-face.thinking { animation: ag-float 5s ease-in-out infinite, ag-think 0.6s ease-in-out infinite; }
.ag-athena-face.happy    { animation: ag-float 5s ease-in-out infinite, ag-bounce 0.5s ease-in-out; }
.ag-athena-face.worried  { animation: ag-float 5s ease-in-out infinite, ag-shake 0.5s ease-in-out; }

.ag-bubble {
    position: relative;
    background: rgba(255, 255, 255, 0.92);
    color: #333;
    border-radius: 14px;
    padding: 14px 16px;
    font-size: 0.9rem;
    line-height: 1.6;
    min-height: 64px;
    width: 100%;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    border: 1px solid rgba(255, 215, 0, 0.5);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
}

.ag-bubble::before {
    content: '';
    position: absolute;
    top: -8px;
    left: 50%;
    transform: translateX(-50%);
    border: 8px solid transparent;
    border-bottom-color: rgba(255, 255, 255, 0.92);
    border-top: none;
}

/* 今日の共鳴ミニバー */
.ag-today {
    width: 100%;
    padding: 12px 14px;
    box-sizing: border-box;
}

.ag-today-title {
    font-family: var(--ag-font-heading);
    font-size: 0.75rem;
    letter-spacing: 2px;
    color: var(--ag-aqua);
    text-align: center;
    margin-bottom: 8px;
}

.ag-stat-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0;
    font-size: 0.72rem;
}

.ag-stat-label {
    width: 58px;
    color: var(--ag-text-dim);
    flex-shrink: 0;
}

.ag-stat-track {
    flex: 1;
    height: 6px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.12);
    overflow: hidden;
}

.ag-stat-fill {
    display: block;
    height: 100%;
    border-radius: 3px;
    background: linear-gradient(90deg, var(--ag-aqua), var(--ag-gold));
    transition: width 0.8s ease;
}

.ag-stat-val {
    width: 24px;
    text-align: right;
    color: var(--ag-gold-soft);
    font-weight: bold;
}

/* ===== ボタン ===== */
.ag-btn {
    font-family: var(--ag-font-body);
    background: linear-gradient(135deg, rgba(0, 206, 209, 0.85), rgba(0, 150, 170, 0.85));
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.25);
    padding: 10px 24px;
    font-size: 0.95rem;
    border-radius: 24px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 14px rgba(0, 206, 209, 0.3);
}

.ag-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 7px 20px rgba(0, 206, 209, 0.5);
}

.ag-btn:disabled { opacity: 0.45; cursor: not-allowed; transform: none; }

.ag-btn.gold {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    color: #332200;
    font-weight: bold;
    box-shadow: 0 4px 14px rgba(255, 215, 0, 0.35);
}

.ag-btn.gold:hover { box-shadow: 0 7px 22px rgba(255, 215, 0, 0.55); }

/* ===== タイトルスクリーン（オーバーレイ） ===== */
.ag-title-screen {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    background:
        radial-gradient(ellipse at 50% 30%, rgba(255, 215, 0, 0.12), transparent 55%),
        linear-gradient(160deg, rgba(15, 15, 30, 0.96), rgba(22, 33, 62, 0.96));
    backdrop-filter: blur(6px);
    text-align: center;
    padding: 2rem;
    box-sizing: border-box;
    transition: opacity 0.6s ease;
}

.ag-title-screen.hidden { opacity: 0; pointer-events: none; }

.ag-title-main {
    font-family: var(--ag-font-heading);
    font-size: clamp(2.2rem, 7vw, 4rem);
    color: var(--ag-gold);
    letter-spacing: 4px;
    text-shadow: 0 0 24px rgba(255, 215, 0, 0.5);
    margin: 0;
}

.ag-title-wa {
    font-family: var(--ag-font-wa);
}

.ag-title-sub {
    color: var(--ag-aqua-soft);
    font-size: clamp(0.9rem, 3vw, 1.15rem);
    letter-spacing: 2px;
    margin: 0;
}

.ag-title-comment {
    color: var(--ag-text-dim);
    font-size: 0.9rem;
    max-width: 420px;
    line-height: 1.8;
}

.ag-title-comment strong { color: var(--ag-gold-soft); }

/* ===== カットイン演出 ===== */
.ag-cutin {
    position: fixed;
    inset: 0;
    z-index: 1400;
    display: flex;
    align-items: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.25s ease;
}

.ag-cutin.show { opacity: 1; }

.ag-cutin-band {
    width: 100%;
    padding: 22px 0;
    text-align: center;
    transform: translateX(-100%) skewY(-1.5deg);
    transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1);
    box-shadow: 0 0 60px rgba(0, 0, 0, 0.6);
}

.ag-cutin.show .ag-cutin-band { transform: translateX(0) skewY(-1.5deg); }

.ag-cutin-text {
    font-family: var(--ag-font-heading);
    font-size: clamp(2rem, 8vw, 3.4rem);
    letter-spacing: 8px;
    line-height: 1.2;
}

.ag-cutin-sub {
    font-size: clamp(0.85rem, 3vw, 1.05rem);
    letter-spacing: 3px;
    margin-top: 4px;
    opacity: 0.9;
}

.ag-cutin-gold .ag-cutin-band {
    background: linear-gradient(90deg, transparent, rgba(255, 215, 0, 0.25) 20%, rgba(255, 215, 0, 0.4) 50%, rgba(255, 215, 0, 0.25) 80%, transparent);
    color: var(--ag-gold);
    text-shadow: 0 0 20px rgba(255, 215, 0, 0.7);
}

.ag-cutin-danger .ag-cutin-band {
    background: linear-gradient(90deg, transparent, rgba(255, 60, 90, 0.3) 20%, rgba(255, 60, 90, 0.45) 50%, rgba(255, 60, 90, 0.3) 80%, transparent);
    color: #ffccd5;
    text-shadow: 0 0 20px rgba(255, 60, 90, 0.8);
}

.ag-cutin-win .ag-cutin-band {
    background: linear-gradient(90deg, transparent, rgba(0, 206, 209, 0.3) 20%, rgba(255, 215, 0, 0.45) 50%, rgba(0, 206, 209, 0.3) 80%, transparent);
    color: #fffbe0;
    text-shadow: 0 0 24px rgba(255, 215, 0, 0.9);
}

.ag-cutin-lose .ag-cutin-band {
    background: linear-gradient(90deg, transparent, rgba(80, 80, 120, 0.4) 20%, rgba(100, 100, 150, 0.5) 50%, rgba(80, 80, 120, 0.4) 80%, transparent);
    color: #c8c8e0;
    text-shadow: 0 0 16px rgba(150, 150, 220, 0.6);
}

/* ===== 称号トースト ===== */
.ag-title-toast {
    position: fixed;
    top: 70px;
    left: 50%;
    transform: translateX(-50%) translateY(-16px);
    z-index: 1500;
    background: linear-gradient(135deg, rgba(30, 30, 55, 0.95), rgba(45, 40, 20, 0.95));
    border: 1px solid var(--ag-gold);
    border-radius: 12px;
    color: var(--ag-text);
    padding: 12px 22px;
    font-size: 0.95rem;
    box-shadow: 0 6px 30px rgba(255, 215, 0, 0.25);
    opacity: 0;
    transition: all 0.5s ease;
    pointer-events: none;
}

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

.ag-title-toast strong { color: var(--ag-gold); }

/* ===== 修練の記録（training.html） ===== */
.ag-records-section {
    margin: 3rem auto 0;
    max-width: 760px;
    padding: 1.6rem;
}

.ag-records-heading {
    font-family: var(--ag-font-heading);
    color: var(--ag-gold);
    font-size: 1.3rem;
    letter-spacing: 3px;
    margin-bottom: 0.3rem;
}

.ag-records-sub {
    color: var(--ag-text-dim);
    font-size: 0.85rem;
    margin-bottom: 1.2rem;
}

.ag-records-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px;
    margin-bottom: 1.2rem;
}

.ag-record-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 12px 8px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.12);
    font-size: 0.8rem;
}

.ag-record-card.has-win { border-color: rgba(255, 215, 0, 0.45); }

.ag-record-icon { font-size: 1.5rem; }
.ag-record-name { color: var(--ag-text-dim); font-size: 0.72rem; }
.ag-record-score { color: var(--ag-text); font-weight: bold; }
.ag-record-streak { color: var(--ag-gold-soft); font-size: 0.7rem; }

.ag-records-empty {
    color: var(--ag-text-dim);
    font-size: 0.9rem;
    margin-bottom: 1rem;
}

.ag-titles {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.ag-title-chip {
    font-size: 0.75rem;
    padding: 5px 12px;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: var(--ag-text-dim);
}

.ag-title-chip.earned {
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.18), rgba(255, 165, 0, 0.1));
    border-color: rgba(255, 215, 0, 0.5);
    color: var(--ag-gold);
}

/* ===== アニメーション ===== */
@keyframes ag-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes ag-think {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.04); }
}

@keyframes ag-bounce {
    0%, 100% { transform: translateY(0); }
    30% { transform: translateY(-16px); }
    70% { transform: translateY(4px); }
}

@keyframes ag-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}
