/* GameLine — Soft Futuristic Theme */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Outfit:wght@300;400;500;600;700;800;900&display=swap');

:root {
    --bg-primary:#08080d;--bg-secondary:#0e0e16;--bg-tertiary:#16161f;
    --bg-card:rgba(18,18,28,0.6);--bg-card-hover:rgba(26,26,40,0.8);
    --bg-glass:rgba(16,16,26,0.55);
    --text-primary:#ededf4;--text-secondary:#9494ad;--text-muted:#5a5a72;
    --accent-cyan:#00e1ff;--accent-cyan-soft:rgba(0,225,255,0.08);
    --accent-violet:#a855f7;--accent-violet-soft:rgba(168,85,247,0.08);
    --accent-rose:#f43f8e;--accent-rose-soft:rgba(244,63,142,0.08);
    --status-done:#34d399;--status-done-bg:rgba(52,211,153,0.08);--status-done-glow:rgba(52,211,153,0.25);
    --status-progress:#fbbf24;--status-progress-bg:rgba(251,191,36,0.08);--status-progress-glow:rgba(251,191,36,0.25);
    --status-planned:#64748b;--status-planned-bg:rgba(100,116,139,0.08);--status-planned-glow:rgba(100,116,139,0.15);
    --border-color:rgba(255,255,255,0.04);--border-highlight:rgba(255,255,255,0.1);
    --font-primary:'Outfit','Inter',sans-serif;
    --shadow-soft:0 8px 32px rgba(0,0,0,0.25);--shadow-glow:0 4px 60px rgba(0,225,255,0.06);
    --ease-out-expo:cubic-bezier(0.16,1,0.3,1);
    --ease-spring:cubic-bezier(0.34,1.56,0.64,1);
    --max-width:1400px;--header-height:68px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{font-family:var(--font-primary);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden}

/* Soft ambient grid */
body::before{content:'';position:fixed;inset:0;
  background-image:linear-gradient(rgba(255,255,255,0.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,0.015) 1px,transparent 1px);
  background-size:72px 72px;pointer-events:none;z-index:0;opacity:0.6}

/* Ambient glow blobs */
.ambient-blob{position:fixed;border-radius:50%;pointer-events:none;z-index:0;filter:blur(120px);opacity:0.4;animation:blobFloat 20s ease-in-out infinite}
.ambient-blob.blob-1{width:600px;height:600px;background:radial-gradient(circle,rgba(0,225,255,0.12),transparent 70%);top:-150px;left:-100px;animation-delay:0s}
.ambient-blob.blob-2{width:500px;height:500px;background:radial-gradient(circle,rgba(168,85,247,0.1),transparent 70%);bottom:-100px;right:-100px;animation-delay:-7s}
.ambient-blob.blob-3{width:400px;height:400px;background:radial-gradient(circle,rgba(244,63,142,0.08),transparent 70%);top:40%;left:50%;animation-delay:-14s}
@keyframes blobFloat{0%,100%{transform:translate(0,0) scale(1)}25%{transform:translate(30px,-20px) scale(1.05)}50%{transform:translate(-20px,30px) scale(0.95)}75%{transform:translate(15px,15px) scale(1.03)}}

/* Scan lines — very subtle */
.scan-lines{position:fixed;inset:0;pointer-events:none;z-index:9999;
  background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,0,0,0.015) 3px,rgba(0,0,0,0.015) 6px);opacity:0.3}

/* Particles */
.particles{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.particle{position:absolute;border-radius:50%;opacity:0;animation:particleDrift linear infinite}
.particle.cyan{background:var(--accent-cyan)}
.particle.violet{background:var(--accent-violet)}
.particle.rose{background:var(--accent-rose)}
@keyframes particleDrift{0%{opacity:0;transform:translateY(100vh) scale(0.5)}15%{opacity:0.5}85%{opacity:0.5}100%{opacity:0;transform:translateY(-50px) scale(1)}}

/* ═══ Header ═══ */
.site-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);display:flex;align-items:center;justify-content:space-between;
  padding:0 clamp(1.5rem,4vw,3rem);background:rgba(8,8,13,0.8);backdrop-filter:blur(24px) saturate(180%);
  border-bottom:1px solid var(--border-color);z-index:100;transition:all 0.4s var(--ease-out-expo)}
.site-header::after{content:'';position:absolute;bottom:-1px;left:5%;right:5%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(0,225,255,0.15),rgba(168,85,247,0.15),transparent);transition:opacity 0.4s}

.header-brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.header-brand img{width:34px;height:34px;border-radius:10px;transition:all 0.4s var(--ease-out-expo)}
.header-brand:hover img{filter:drop-shadow(0 0 12px rgba(0,225,255,0.35));transform:scale(1.05)}
.header-brand-text{display:flex;flex-direction:column}
.header-brand-name{font-size:1.05rem;font-weight:700;color:var(--text-primary);letter-spacing:-0.01em}
.header-brand-sub{font-size:0.65rem;font-weight:600;color:var(--accent-cyan);text-transform:uppercase;letter-spacing:0.18em;opacity:0.8}

.header-nav{display:flex;align-items:center;gap:8px}
.header-nav a,.header-nav button{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:10px;font-size:0.82rem;font-weight:500;
  text-decoration:none;color:var(--text-secondary);background:transparent;border:1px solid transparent;cursor:pointer;transition:all 0.3s var(--ease-out-expo);font-family:var(--font-primary)}
.header-nav a:hover,.header-nav button:hover{color:var(--text-primary);background:rgba(255,255,255,0.04);border-color:var(--border-color)}
.header-nav .btn-admin{color:var(--accent-cyan);border-color:rgba(0,225,255,0.12)}
.header-nav .btn-admin:hover{background:var(--accent-cyan-soft);box-shadow:0 0 24px rgba(0,225,255,0.08)}

/* ═══ Hero ═══ */
.hero{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  padding:calc(var(--header-height) + 72px) 1.5rem 48px;z-index:1}

.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 18px;border-radius:100px;
  background:var(--accent-cyan-soft);border:1px solid rgba(0,225,255,0.12);color:var(--accent-cyan);
  font-size:0.72rem;font-weight:600;text-transform:uppercase;letter-spacing:0.12em;margin-bottom:28px;
  animation:softFadeUp 0.8s var(--ease-out-expo) both;backdrop-filter:blur(8px)}
.hero-badge .pulse-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-cyan);animation:softPulse 3s ease-in-out infinite}
@keyframes softPulse{0%,100%{opacity:0.3;transform:scale(1)}50%{opacity:1;transform:scale(1.4)}}

.hero h1{font-size:clamp(2rem,5vw,3.4rem);font-weight:800;letter-spacing:-0.03em;line-height:1.15;margin-bottom:18px;
  animation:softFadeUp 0.8s var(--ease-out-expo) 0.1s both}
.hero h1 .text-gradient{background:linear-gradient(135deg,var(--accent-cyan),var(--accent-violet),var(--accent-rose));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;background-size:300% 300%;
  animation:gradientFlow 8s ease-in-out infinite}
@keyframes gradientFlow{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}

.hero-description{max-width:520px;font-size:1rem;color:var(--text-secondary);line-height:1.75;font-weight:400;
  animation:softFadeUp 0.8s var(--ease-out-expo) 0.2s both}

/* ═══ Stats ═══ */
.stats-bar{display:flex;justify-content:center;gap:20px;padding:24px 1.5rem 32px;z-index:1;position:relative;
  animation:softFadeUp 0.8s var(--ease-out-expo) 0.3s both}
.stat-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:18px 28px;
  border:1px solid var(--border-color);border-radius:16px;background:var(--bg-glass);backdrop-filter:blur(16px);
  transition:all 0.5s var(--ease-out-expo);cursor:default}
.stat-item:hover{border-color:rgba(255,255,255,0.08);transform:translateY(-3px);box-shadow:var(--shadow-glow)}
.stat-value{font-size:2rem;font-weight:800;letter-spacing:-0.02em;transition:color 0.3s}
.stat-value.done{color:var(--status-done)}
.stat-value.progress{color:var(--status-progress)}
.stat-value.planned{color:var(--status-planned)}
.stat-label{font-size:0.68rem;font-weight:600;text-transform:uppercase;letter-spacing:0.14em;color:var(--text-muted)}

/* ═══ Filters ═══ */
.filter-bar{display:flex;justify-content:center;gap:8px;padding:0 1.5rem 36px;z-index:1;position:relative;
  animation:softFadeUp 0.8s var(--ease-out-expo) 0.4s both;flex-wrap:wrap}
.filter-btn{padding:9px 20px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-glass);will-change:transform,box-shadow;
  backdrop-filter:blur(8px);color:var(--text-secondary);font-size:0.8rem;font-weight:500;cursor:pointer;will-change:transform;
  transition:all 0.5s var(--ease-out-expo);font-family:var(--font-primary)}
.filter-btn:hover{border-color:var(--border-highlight);color:var(--text-primary);transform:translateY(-1px)}
.filter-btn.active{background:var(--accent-cyan-soft);border-color:rgba(0,225,255,0.2);color:var(--accent-cyan);
  box-shadow:0 2px 20px rgba(0,225,255,0.08)}

/* ═══ Horizontal Timeline ═══ */
.timeline-section{position:relative;max-width:100%;margin:0 auto;padding:0 0 60px;z-index:1;overflow:hidden}

.timeline-scroll-wrapper{position:relative;overflow-x:auto;overflow-y:visible;padding:40px 48px 48px;
  scroll-behavior:auto;-webkit-overflow-scrolling:touch;cursor:grab;user-select:none}
.timeline-scroll-wrapper.dragging{cursor:grabbing;scroll-behavior:auto}
.timeline-scroll-wrapper::-webkit-scrollbar{height:4px}
.timeline-scroll-wrapper::-webkit-scrollbar-track{background:transparent}
.timeline-scroll-wrapper::-webkit-scrollbar-thumb{background:rgba(0,225,255,0.15);border-radius:4px}
.timeline-scroll-wrapper::-webkit-scrollbar-thumb:hover{background:rgba(0,225,255,0.3)}

/* Progress indicator */
.scroll-progress{position:absolute;bottom:0;left:48px;right:48px;height:2px;background:rgba(255,255,255,0.03);border-radius:1px;z-index:2}
.scroll-progress-bar{height:100%;border-radius:1px;background:linear-gradient(90deg,var(--accent-cyan),var(--accent-violet));
  transition:width 0.15s ease-out;box-shadow:0 0 12px rgba(0,225,255,0.2)}

.timeline{display:flex;flex-direction:row;align-items:flex-start;gap:28px;padding:24px 0 32px;position:relative;min-width:max-content}

/* Horizontal connector line */
.timeline::before{content:'';position:absolute;left:0;right:0;top:54px;height:1px;
  background:linear-gradient(90deg,transparent 0%,rgba(0,225,255,0.2) 5%,rgba(168,85,247,0.15) 50%,rgba(244,63,142,0.1) 95%,transparent 100%)}
.timeline::after{content:'';position:absolute;left:0;right:0;top:52px;height:5px;
  background:linear-gradient(90deg,transparent,rgba(0,225,255,0.06) 5%,rgba(168,85,247,0.04) 50%,transparent 95%);filter:blur(3px)}

/* ═══ Timeline Item ═══ */
.timeline-item{position:relative;flex:0 0 320px;width:320px;padding-top:84px;
  opacity:0;transform:translateY(24px);animation:softFadeUp 0.7s var(--ease-out-expo) forwards}
.timeline-item:nth-child(1){animation-delay:0.05s}
.timeline-item:nth-child(2){animation-delay:0.12s}
.timeline-item:nth-child(3){animation-delay:0.19s}
.timeline-item:nth-child(4){animation-delay:0.26s}
.timeline-item:nth-child(5){animation-delay:0.33s}
.timeline-item:nth-child(6){animation-delay:0.40s}
.timeline-item:nth-child(7){animation-delay:0.47s}
.timeline-item:nth-child(8){animation-delay:0.54s}

/* Node dot */
.timeline-item::before{content:'';position:absolute;left:50%;top:48px;width:12px;height:12px;border-radius:50%;
  border:2.5px solid var(--status-planned);background:var(--bg-primary);z-index:2;transform:translateX(-50%);
  transition:all 0.5s var(--ease-out-expo)}
.timeline-item::after{content:'';position:absolute;left:50%;top:60px;width:1px;height:24px;
  background:linear-gradient(to bottom,var(--border-highlight),transparent);transform:translateX(-50%);opacity:0.5}

.timeline-item.done::before{border-color:var(--status-done);background:var(--status-done);
  box-shadow:0 0 12px var(--status-done-glow),0 0 30px rgba(52,211,153,0.1)}
.timeline-item.in_progress::before{border-color:var(--status-progress);background:var(--status-progress);
  box-shadow:0 0 12px var(--status-progress-glow);animation:softPulse 3s ease-in-out infinite}
.timeline-item.planned::before{border-color:var(--status-planned);background:var(--bg-primary)}

/* Card */
.timeline-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:18px;padding:22px 24px;
  cursor:pointer;transition:all 0.5s var(--ease-out-expo);position:relative;overflow:hidden;
  backdrop-filter:blur(12px);height:100%}
.timeline-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;opacity:0.4;
  transition:all 0.5s var(--ease-out-expo);background:var(--status-planned)}
.timeline-card::after{content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at top right,rgba(0,225,255,0.03),transparent 60%);opacity:0;transition:opacity 0.5s}

.timeline-item.done .timeline-card::before{background:var(--status-done)}
.timeline-item.in_progress .timeline-card::before{background:var(--status-progress)}

.timeline-card:hover{background:var(--bg-card-hover);border-color:rgba(255,255,255,0.08);
  transform:translateY(-5px) scale(1.01);box-shadow:var(--shadow-soft),var(--shadow-glow)}
.timeline-card:hover::before{opacity:0.8}
.timeline-card:hover::after{opacity:1}
.timeline-item.done .timeline-card:hover{box-shadow:var(--shadow-soft),0 4px 40px var(--status-done-glow)}
.timeline-item.in_progress .timeline-card:hover{box-shadow:var(--shadow-soft),0 4px 40px var(--status-progress-glow)}

.timeline-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.timeline-card-title{font-size:1rem;font-weight:700;letter-spacing:-0.01em;color:var(--text-primary);line-height:1.3}

.timeline-card-status{display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:100px;
  font-size:0.68rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;white-space:nowrap;flex-shrink:0}
.timeline-item.done .timeline-card-status{background:var(--status-done-bg);color:var(--status-done);border:1px solid rgba(52,211,153,0.15)}
.timeline-item.in_progress .timeline-card-status{background:var(--status-progress-bg);color:var(--status-progress);border:1px solid rgba(251,191,36,0.15)}
.timeline-item.planned .timeline-card-status{background:var(--status-planned-bg);color:var(--status-planned);border:1px solid rgba(100,116,139,0.15)}

.timeline-card-desc{font-size:0.85rem;color:var(--text-secondary);line-height:1.65;margin-bottom:14px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-weight:400}

.timeline-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.timeline-card-tags{display:flex;flex-wrap:wrap;gap:5px}

/* Tags — soft pills */
.tag{display:inline-block;padding:4px 12px;border-radius:8px;font-size:0.7rem;font-weight:600;
  font-family:var(--font-primary);background:rgba(255,255,255,0.04);color:var(--text-secondary);
  border:1px solid rgba(255,255,255,0.06);letter-spacing:0.01em;transition:all 0.5s var(--ease-out-expo)}
.tag:hover{background:var(--accent-cyan-soft);color:var(--accent-cyan);border-color:rgba(0,225,255,0.12);transform:translateY(-1px)}

.timeline-card-date{font-size:0.72rem;font-weight:500;color:var(--text-muted)}

/* Admin quick-toggle */
.btn-quick-done{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:8px;
  border:1px solid var(--border-color);background:var(--bg-tertiary);color:var(--text-muted);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-size:0.8rem;transition:all 0.3s var(--ease-out-expo);z-index:5}
.btn-quick-done:hover{background:var(--status-done-bg);border-color:var(--status-done);color:var(--status-done);transform:scale(1.1)}
.btn-quick-done.is-done{background:var(--status-done);color:#fff;border-color:var(--status-done)}

/* ═══ Modal ═══ */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.65);backdrop-filter:blur(16px);z-index:200;
  display:flex;align-items:center;justify-content:center;padding:2rem;opacity:0;visibility:hidden;
  transition:all 0.4s var(--ease-out-expo)}
.modal-overlay.active{opacity:1;visibility:visible}
.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:24px;max-width:580px;
  width:100%;max-height:80vh;overflow-y:auto;padding:36px;position:relative;
  transform:translateY(16px) scale(0.98);transition:all 0.5s var(--ease-out-expo);
  box-shadow:0 24px 80px rgba(0,0,0,0.4),0 0 80px rgba(0,225,255,0.04)}
.modal-overlay.active .modal{transform:translateY(0) scale(1)}
.modal-close{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:10px;
  border:1px solid var(--border-color);background:rgba(255,255,255,0.03);color:var(--text-muted);
  font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all 0.3s var(--ease-out-expo)}
.modal-close:hover{background:rgba(244,63,142,0.12);color:var(--accent-rose);border-color:rgba(244,63,142,0.2);transform:scale(1.05)}
.modal-status-line{height:3px;border-radius:3px;margin-bottom:22px;background:var(--status-planned);opacity:0.6}
.modal-status-line.done{background:var(--status-done);opacity:1}
.modal-status-line.in_progress{background:var(--status-progress);opacity:1}
.modal h2{font-size:1.35rem;font-weight:800;letter-spacing:-0.02em;margin-bottom:10px}
.modal-meta{display:flex;align-items:center;gap:12px;margin-bottom:22px;flex-wrap:wrap}
.modal-desc{font-size:0.92rem;color:var(--text-secondary);line-height:1.8;margin-bottom:22px;font-weight:400;white-space:pre-wrap}
.modal-tags{display:flex;flex-wrap:wrap;gap:8px}
.modal-tags .tag{font-size:0.73rem;padding:5px 14px}

/* ═══ Footer ═══ */
.site-footer{position:relative;z-index:1;border-top:1px solid var(--border-color);padding:36px 1.5rem;text-align:center}
.site-footer::before{content:'';position:absolute;top:-1px;left:10%;right:10%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(0,225,255,0.08),rgba(168,85,247,0.08),transparent)}
.site-footer p{font-size:0.78rem;color:var(--text-muted);font-weight:400}
.site-footer a{color:var(--accent-cyan);text-decoration:none;transition:all 0.3s}
.site-footer a:hover{opacity:0.8}

/* ═══ Scrollbar ═══ */
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.06);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.12)}

/* ═══ Animations ═══ */
@keyframes softFadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}

/* ═══ Spinner ═══ */
.spinner-wrap{display:flex;justify-content:center;padding:80px 0;width:100%}
.spinner{width:36px;height:36px;border:2px solid rgba(255,255,255,0.06);border-top-color:var(--accent-cyan);
  border-radius:50%;animation:spin 1s cubic-bezier(0.5,0,0.5,1) infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ═══ Empty ═══ */
.empty-state{text-align:center;padding:80px 2rem;color:var(--text-muted);width:100%}
.empty-state svg{width:56px;height:56px;margin-bottom:16px;opacity:0.2}
.empty-state h3{font-size:1.1rem;font-weight:600;color:var(--text-secondary);margin-bottom:6px}

/* ═══ Toast ═══ */
.toast-container{position:fixed;bottom:24px;right:24px;z-index:500;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 20px;border-radius:14px;font-size:0.82rem;font-weight:500;color:#fff;
  background:var(--bg-glass);backdrop-filter:blur(16px);border:1px solid var(--border-color);
  box-shadow:var(--shadow-soft);animation:slideUp 0.4s var(--ease-out-expo);max-width:340px}
.toast.success{border-color:rgba(52,211,153,0.2)}
.toast.error{border-color:rgba(244,63,142,0.2)}
@keyframes slideUp{from{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}

/* ═══ Responsive ═══ */
@media(max-width:768px){
  .stats-bar{gap:12px;flex-wrap:wrap}
  .stat-item{padding:14px 20px}
  .stat-value{font-size:1.5rem}
  .timeline-item{flex:0 0 280px;width:280px}
  .timeline-card{padding:18px}
  .modal{padding:28px;border-radius:20px}
  .hero h1{font-size:2rem}
  .timeline-scroll-wrapper{padding:30px 20px 36px}
}
@media(max-width:480px){
  .header-brand-text{display:none}
  .stats-bar{gap:8px}
  .filter-bar{gap:6px}
  .filter-btn{padding:7px 14px;font-size:0.74rem}
  .timeline-item{flex:0 0 260px;width:260px}
}

/* Language Switcher */
.lang-switcher{display:flex;background:rgba(255,255,255,0.04);border-radius:10px;border:1px solid rgba(255,255,255,0.06);padding:2px;margin-left:12px;align-items:center;}
.lang-btn{background:transparent;border:none;color:var(--text-secondary);padding:6px 10px;border-radius:8px;font-size:0.75rem;font-weight:600;cursor:pointer;transition:all 0.3s var(--ease-out-expo)}
.lang-btn:hover{color:var(--text-primary)}
.lang-btn.active{background:rgba(255,255,255,0.1);color:var(--text-primary)}

