/* ============================================
   Main Stylesheet
   ============================================
   Import order matters for cascade:
   1. Variables (design tokens)
   2. Base (reset & defaults)
   3. Utilities (helper classes)
   4. Components (reusable UI pieces)
   5. Layout (page structure)
   6. Animations (transitions & keyframes)

   Laravel: @vite(['resources/css/main.css'])
============================================ */

/* ========== Fonts ========== */
@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700&family=IBM+Plex+Sans+Arabic:wght@300;400;500;600;700&family=Amiri:wght@400;700&display=swap');

/* ========== Core Styles ========== */
@import 'variables.css';
@import 'base.css';
@import 'utilities.css';
@import 'components.css';
@import 'layout.css';
@import 'animations.css';

/* ============================================
   Page-wide Grain / Noise Texture
   ============================================
   Gives the entire page a subtle paper-like
   tactile quality. Fixed position, no pointer
   events, sits above everything visually but
   lets clicks pass through.
============================================ */
.page::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: var(--z-grain);
  opacity: var(--grain-opacity, 0.07);
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 180px 180px;
}

/* ============================================
   Homepage Hero
   ============================================ */
.homepage-hero {
  position: relative;
  background:
    radial-gradient(ellipse at 20% 0%, rgba(45, 106, 79, 0.07) 0%, transparent 55%),
    radial-gradient(ellipse at 80% 100%, rgba(168, 145, 74, 0.05) 0%, transparent 55%),
    radial-gradient(ellipse at 50% 50%, rgba(45, 106, 79, 0.02) 0%, transparent 70%),
    linear-gradient(165deg, #f7f5f0 0%, #f0f3ee 40%, #f5f3ef 100%);
}

/* Islamic Geometric Pattern Overlay */
.pattern-overlay {
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%232d6a4f' stroke-width='0.5' opacity='0.04'%3E%3Cpath d='M40 0 L80 40 L40 80 L0 40Z'/%3E%3Cpath d='M40 10 L70 40 L40 70 L10 40Z'/%3E%3Ccircle cx='40' cy='40' r='15'/%3E%3Cpath d='M20 0 L40 20 L60 0' /%3E%3Cpath d='M80 20 L60 40 L80 60' /%3E%3Cpath d='M60 80 L40 60 L20 80' /%3E%3Cpath d='M0 60 L20 40 L0 20' /%3E%3C/g%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 0;
}

/* ============================================
   Glassmorphism Utility
   ============================================ */
.glass {
  background: var(--glass-bg);
  backdrop-filter: blur(var(--glass-blur));
  -webkit-backdrop-filter: blur(var(--glass-blur));
  border: 1px solid var(--glass-border);
}

.glass--strong {
  background: var(--glass-bg-strong);
  backdrop-filter: blur(var(--glass-blur-strong));
  -webkit-backdrop-filter: blur(var(--glass-blur-strong));
  border: 1px solid var(--glass-border);
}

/* ============================================
   Contact Section
   ============================================ */
.contact-section {
  position: relative;
  background: linear-gradient(145deg, var(--color-primary-600) 0%, var(--color-primary-700) 50%, var(--color-primary-800) 100%);
  color: var(--color-text-inverse);
  overflow: hidden;
}

/* Diagonal top edge */
.contact-section::before {
  content: '';
  position: absolute;
  top: -2px;
  inset-inline-start: 0;
  inset-inline-end: 0;
  height: 80px;
  background: var(--color-bg-page);
  clip-path: polygon(0 0, 100% 0, 100% 30%, 0 100%);
  z-index: 1;
}

@media (max-width: 640px) {
  .contact-section::before {
    height: 40px;
    clip-path: polygon(0 0, 100% 0, 100% 40%, 0 100%);
  }
}

/* Decorative floating shapes on contact */
.contact-section .contact-deco {
  position: absolute;
  border-radius: 50%;
  opacity: 0.06;
  background: var(--color-secondary-500);
  animation: float 8s ease-in-out infinite;
}

.contact-section .contact-deco--1 {
  width: 200px;
  height: 200px;
  top: 10%;
  inset-inline-end: 5%;
  animation-duration: 10s;
}

.contact-section .contact-deco--2 {
  width: 120px;
  height: 120px;
  bottom: 15%;
  inset-inline-start: 8%;
  animation-duration: 7s;
  animation-delay: -3s;
}

.contact-section .contact-deco--3 {
  width: 80px;
  height: 80px;
  top: 30%;
  inset-inline-start: 15%;
  animation-duration: 9s;
  animation-delay: -5s;
  background: var(--color-neutral-0);
}

/* ============================================
   Breadcrumb
   ============================================ */
.breadcrumb {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--font-size-sm);
  color: var(--color-text-secondary);
  margin-bottom: var(--space-6);
}

.breadcrumb__separator {
  color: var(--color-neutral-400);
}

.breadcrumb__link:hover {
  color: var(--color-primary-500);
}

.breadcrumb__current {
  color: var(--color-text-primary);
  font-weight: var(--font-weight-medium);
}

/* ============================================
   Content Card (Book/Content)
   ============================================ */
.content-card {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.content-card > .card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.content-card__top {
  display: flex;
  gap: var(--space-4);
  align-items: flex-start;
}

.content-card__cover-link {
  flex: 0 0 40%;
  max-width: 160px;
}

.content-card__cover-image {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-sm);
}

.content-card__details {
  min-width: 0;
  flex: 1;
}

.content-card__title {
  font-family: var(--font-family-display);
  font-size: var(--font-size-lg);
  font-weight: var(--font-weight-bold);
  color: var(--color-text-primary);
  margin-bottom: var(--space-2);
  line-height: var(--line-height-tight);
}

.content-card__title-link {
  color: var(--color-text-primary);
}

.content-card__title-link:hover {
  color: var(--color-primary-600);
}

.content-card__description {
  font-size: var(--font-size-sm);
  color: var(--color-text-secondary);
  line-height: 1.6;
}

.content-card__bottom {
  margin-top: auto;
}

.content-card__primary-actions {
  display: flex;
  flex-wrap: nowrap;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
}

.content-card__action-btn {
  flex: 1 1 0;
  min-width: 0;
  padding: var(--space-2) var(--space-3);
  white-space: nowrap;
}

.content-card__utility-actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border-default);
}

.content-card__icon-btn {
  width: 40px;
  height: 40px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-primary-600);
}

.content-card__icon-btn i {
  pointer-events: none;
}

/* ============================================
   Presentation Layout (desktop override)
   ============================================ */
@media (min-width: 1024px) {
  .presentation {
    flex-direction: column;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--space-8);
  }

  .presentation__center {
    order: 0;
    z-index: 2;
  }
}

.presentation__categories {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--space-6);
  width: 100%;
  max-width: 1200px;
  margin-top: var(--space-8);
  margin-inline: auto;
}

@media (min-width: 1024px) {
  .presentation__categories {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-6);
  }

  .presentation__categories .category-card {
    width: 100%;
    min-height: 150px;
  }
}

/* Hidden category cards (beyond first 8) */
.category-card--hidden {
  display: none;
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

/* Toggle button styling */
.categories-toggle {
  gap: var(--space-2);
}

.categories-toggle:hover svg {
  transform: translateY(2px);
}

/* ============================================
   Section Visual Separators
   ============================================ */

/* Arabesque-style section divider */
.divider--arabesque {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-4);
  margin: var(--space-8) 0;
  padding: 0 var(--space-4);
}

.divider--arabesque::before,
.divider--arabesque::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(
    to var(--divider-dir, left),
    var(--color-primary-500) 0%,
    var(--color-secondary-500) 50%,
    transparent 100%
  );
  opacity: 0.3;
}

.divider--arabesque::after {
  --divider-dir: right;
}

.divider--arabesque .divider__ornament {
  flex-shrink: 0;
  color: var(--color-secondary-500);
  font-size: 1.5rem;
  line-height: 1;
  opacity: 0.6;
}

/* Wave separator for footer */
.wave-separator {
  width: 100%;
  line-height: 0;
  overflow: hidden;
}

.wave-separator svg {
  width: 100%;
  height: 60px;
  display: block;
}

@media (min-width: 768px) {
  .wave-separator svg {
    height: 80px;
  }
}

/* ============================================
   About Section — Asymmetric Layout
   ============================================ */
.about-asymmetric {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  align-items: center;
}

@media (min-width: 768px) {
  .about-asymmetric {
    grid-template-columns: 1fr 1.4fr;
    gap: var(--space-12);
  }
}

.about-visual {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 280px;
}

.about-visual__frame {
  position: relative;
  width: 180px;
  height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1;
}

/* Ornamental border around initials */
.about-visual__frame::before {
  content: '';
  position: absolute;
  inset: -12px;
  border: 2px solid var(--color-secondary-500);
  border-radius: var(--radius-2xl);
  opacity: 0.4;
  transform: rotate(45deg);
}

.about-visual__frame::after {
  content: '';
  position: absolute;
  inset: -24px;
  border: 1px solid var(--color-primary-300);
  border-radius: var(--radius-2xl);
  opacity: 0.2;
  transform: rotate(22.5deg);
}

/* Decorative shapes floating behind */
.about-visual__deco {
  position: absolute;
  border-radius: var(--radius-2xl);
  opacity: 0.08;
}

.about-visual__deco--1 {
  width: 160px;
  height: 160px;
  background: var(--color-primary-500);
  top: 10%;
  inset-inline-end: 10%;
  transform: rotate(15deg);
  animation: float 8s ease-in-out infinite;
}

.about-visual__deco--2 {
  width: 100px;
  height: 100px;
  background: var(--color-secondary-500);
  bottom: 10%;
  inset-inline-start: 15%;
  transform: rotate(-10deg);
  animation: float 6s ease-in-out infinite;
  animation-delay: -2s;
}

.about-visual__deco--3 {
  width: 60px;
  height: 60px;
  background: var(--color-primary-300);
  top: 40%;
  inset-inline-start: 5%;
  border-radius: 50%;
  animation: float 10s ease-in-out infinite;
  animation-delay: -4s;
}

.about-content {
  text-align: start;
}

@media (max-width: 767px) {
  .about-content {
    text-align: center;
  }
}

.about-content__name {
  font-family: var(--font-family-display);
  font-size: var(--font-size-3xl);
  font-weight: var(--font-weight-bold);
  margin-bottom: var(--space-4);
  color: var(--color-text-primary);
}

.about-content__desc {
  font-size: var(--font-size-lg);
  color: var(--color-text-secondary);
  line-height: var(--line-height-relaxed);
  margin-bottom: var(--space-6);
}

.about-content__badges {
  display: flex;
  gap: var(--space-3);
  flex-wrap: wrap;
}

@media (max-width: 767px) {
  .about-content__badges {
    justify-content: center;
  }
}

/* About badge with glassmorphism */
.about-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-full);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  color: var(--color-primary-700);
  transition: all var(--transition-normal);
}

.about-badge:hover {
  background: var(--color-primary-50);
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
}

.about-badge svg {
  color: var(--color-secondary-600);
}

/* ============================================
   Hero Decorative Background Elements
   ============================================ */
.hero-bg-deco {
  position: absolute;
  pointer-events: none;
  z-index: 0;
  opacity: 0.04;
}

.hero-bg-deco--calligraphy {
  font-family: var(--font-family-display);
  font-size: clamp(8rem, 15vw, 16rem);
  font-weight: 700;
  color: var(--color-primary-500);
  top: 5%;
  inset-inline-end: -5%;
  transform: rotate(-12deg);
  user-select: none;
  line-height: 1;
}

.hero-bg-deco--circle {
  width: 400px;
  height: 400px;
  border: 1px solid var(--color-primary-400);
  border-radius: 50%;
  bottom: -10%;
  inset-inline-start: -10%;
  opacity: 0.06;
}

.hero-bg-deco--diamond {
  width: 200px;
  height: 200px;
  border: 1px solid var(--color-secondary-400);
  top: 15%;
  inset-inline-start: 8%;
  transform: rotate(45deg);
  opacity: 0.05;
}
