@use "sass:color";
@use "bulma/sass/utilities/initial-variables.scss" as *;
@use "bulma/sass/utilities/mixins.scss" as *;

@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900');

:root {
  --bulma-family-primary: 'Inter', 'SF Pro', 'Helvetica', 'Arial', sans-serif;
}

// ==========================================
// 1. BRAND PALETTE (GAM MÀU TỪ LOGO)
// ==========================================
$blue-dianne: #204853; // Dark Cyan - Primary, Headings, Link
$parchment:   #f2e5d6; // Cream - Accent, Background 
$sirocco:     #758385; // Greyish - Info, Border
$delta:       #b0afaa; // Grey - Text phụ, Disabled
$cutty-sark:  #566c72; // Blue Grey - Dark text, Warning text (Đậm)
$silver-rust: #ccc5bc; // Beige Grey - Line, Border nhạt
$fiord:       #3c5b63; // Deep Green/Blue - Secondary, Success
$pewter:      #959b99; // Medium Grey - Neutral
$pearl-bush:  #f2e5d6; // Light Beige - Light background

$white-pure:  #ffffff;
$black-pure:  #000000;

$primary-color:   $blue-dianne;
$secondary-color: $fiord;
$link-color:      $blue-dianne; 
$accent-color:    $parchment;
$info-color:      $sirocco;
$success-color:   $fiord; 

$warning-color:   $cutty-sark; 

$danger-color:    #f14668; 
$dark-color:      $cutty-sark;
$light-color:     $pearl-bush;
$neutral-color:   $delta;

// ==========================================
// 2. COLOR MAP & SIZE
// ==========================================
$color: (    
  "primary":   $primary-color,
  "secondary": $secondary-color,
  "link":      $link-color,     
  "accent":    $accent-color,
  "info":      $info-color,
  "success":   $success-color,
  "warning":   $warning-color, 
  "danger":    $danger-color,
  "dark":      $dark-color,
  "light":     $light-color,
  "delta":     $delta,
  "pewter":    $pewter,
  "silver":    $silver-rust,
  "white":     $white-pure, 
  "black":     $black-pure 
);

$size: (
  one: 10px,
  two: 17px,
  three: 30px,
  four: 40px,
  five: 50px,
  six: 60px
);

// ==========================================
// 3. MIXINS & UTILITIES
// ==========================================

@mixin cbox($width, $height, $font, $background) {
  display: flex;
  width: $width;
  height: $height;
  border: 1.5px solid $sirocco;
  font-size: $font;
  -webkit-border-radius: 50%;
  -moz-border-radius: 50%;
  -ms-border-radius: 50%;
  border-radius: 50%;
  color: $sirocco;
  font-weight: bold;
  background-color: $background;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}

// Tạo class cbox rỗng
@each $name, $hex in $color {
  @each $n, $v in $size {
    .cbox-#{$name}-#{$n} {
      @include cbox($v*2, $v*2, $v*1.1, white);
      border-color: $hex;
      color: $hex;
    }
  }
}

// Tạo class cbox đặc
@each $name, $hex in $color {
  @each $n, $v in $size {
    .cbox-fill-#{$name}-#{$n} {
      @include cbox($v*2, $v*2, $v, $hex);
      border-color: $hex;
      // Tự động tìm màu chữ tương phản
      color: if(color.channel($hex, "lightness", $space: hsl) > 70, $blue-dianne, $white-pure);
    }
  }
}

// Font size loops
@for $i from 10 through 50 {
  .fs-#{$i} { font-size: $i + px; }
  .fsb-#{$i} { font-size: $i + px; font-weight: bold; }
}

// ==========================================
// 4. CUSTOM CLASSES
// ==========================================

.w-full {
  width: 100%
}

.h-full {
  height: 100%
}

.fullheight {
  height: 100vh;
}

.font-thin { 
  font-weight: 100;
}
	
.font-extralight { 
  font-weight: 200;
}

.font-light { 
  font-weight: 300;
}

.font-normal { 
  font-weight: 400;
}

.font-medium { 
  font-weight: 500;
}

.font-semibold { 
  font-weight: 600;
}

.font-bold { 
  font-weight: 700;
}

.font-extrabold { 
  font-weight: 800;
}

.font-black { 
  font-weight: 900;
}

.rounded-xs { 
  border-radius: 0.125rem
}

.rounded-sm { 
  border-radius: 0.25rem
}

.rounded-md { 
  border-radius: 0.375rem
}

.rounded-lg { 
  border-radius: 0.5rem
}

.rounded-xl { 
  border-radius: 0.75rem
}
 
.rounded-2xl { 
  border-radius: 1rem
}
 
.rounded-3xl { 
  border-radius: 1.5rem
}
 
.rounded-4xl { 
  border-radius: 2rem
}
 
.rounded-none { 
  border-radius: 0;
}
 
.rounded-full { 
  border-radius: calc(infinity * 1px);
}

.textsize {
  @include mobile { font-size: 18px; }
}

.header-logo {
  background: url('/logo_dev.png') no-repeat center center;
  background-size: 40px;
  width: 50px;
}

.border-bottom { border-bottom: 1px solid color.change($black-pure, $alpha: 0.15) }

.carousel-height {
  width: 100%;
  height: 80vh;
  @include mobile { height: 110vh; }
}

// Mobile Spacing Utilities
.mobile-mt20 { @include mobile { margin-top: 20px; } }
.mobile-px10 { @include mobile { padding-left: 10px; padding-right: 10px; } }
.mobile-pt10 { @include mobile { padding-top: 10px; } }
.mobile-pt80 { padding-top: 120px; @include mobile { padding-top: 80px; } }

.fullhd-pt30 {
  padding-top: 30px;
  @include until($fullhd) { padding-top: 0px; }
}

.media-width {
  width: 120px !important;
  @include mobile { width: 112px !important; }
}

.hideon-mobile { @include mobile { display: none; } }

// Typography Classes
.maintext {
  margin-top: 20px;
  font-size: 40px;
  line-height: 3rem;
  font-weight: 600;
  color: $blue-dianne;
  @include mobile { font-size: 34px; }
}

.subtext {
  margin-top: 30px;
  font-size: 1.2rem;
  line-height: 2rem;
  color: $cutty-sark;
  @include mobile { line-height: 1.8rem; }
}
  
.dotslide {
  position: fixed;
  bottom: 0;
  position: absolute;
  width: 100%;
  text-align: center;
  z-index: 999;
}

.activetab {
  border-radius: 8px;
  color: $white-pure;
  background-color: $blue-dianne;
}

// Block Layout
.blockdiv {
  max-width: 1900px !important;
  background-color: $white-pure; 
  padding: 60px 15px 40px 15px;

  @include until($desktop) { padding: 65px 20px 30px 20px; }
  @include mobile { padding: 65px 16px 30px 16px; }

  .columns .column {
    @include mobile { padding-left: 0; padding-right: 0; }
  }

  .padding-desktop {
    @media screen and (min-width: $desktop) { padding-left: 20px; padding-right: 20px; }
  }
}

.padding-text {
  padding-left: 15%; padding-right: 5%;
  @include until($desktop) { padding-left: 0; padding-right: 0; }
  @include until($fullhd) { padding-left: 0; padding-right: 0; }
}

.padding-image {
  padding-left: 5%; padding-right: 15%;
  @include until($fullhd) { padding-left: 0; padding-right: 0; }
  @include until($desktop) { padding-left: 15%; padding-right: 15%; }
  @include mobile { padding-left: 0; padding-right: 0; } 
}

.imgcontainer {
  position: relative;
  width: 100% !important;
  max-width: 500px;
}

.centered {
  position: absolute;
  top: 80%; 
  text-align: center;
}

// Tooltip Styles
.tooltip {
  position: relative;
  display: inline-block;
  cursor: pointer;
  color: $white-pure;
}

.tooltip .tooltiptext {
  visibility: hidden;
  background-color: $fiord;
  color: $parchment;
  border-radius: 6px;
  position: absolute;
  margin-left: 0px;
  z-index: 999;
  bottom: 110%;
  opacity: 0;
  transition: opacity 0.3s;
  padding: 6px;
  font-size: 14px;
  pointer-events: none;
}

.to-left { right: 30px; }

@mixin tooltipshow() {
  visibility: visible;
  opacity: 1;
  position: absolute;
  min-width: 300px;
  z-index: 999;
  background-color: $pearl-bush;
  color: $blue-dianne;
  border: 1px solid $silver-rust;
}

.tooltip:hover .tooltiptext { @include tooltipshow() }
.tooltip:hover .tooltiptext .to-left { @include tooltipshow() }

// Dot Indicators
@mixin dot($background) {
  height: 22px;
  width: 22px;
  text-align: center;
  color: $white-pure;
  font-weight: bold;
  background-color: $background;
  display: inline-block;
  cursor: pointer;
  font-size: 15px;
  border-radius: 50%;
}

@each $name, $hex in $color {
  .dot-#{$name} {
    @include dot($hex);
  }
}

// ==========================================
// 5. HELPER CLASSES GENERATOR
// ==========================================
@each $name, $hex in $color {
  .bg-#{$name} { background-color: $hex !important; }
  .text-#{$name} { color: $hex !important; }
  .border-#{$name} { border-color: $hex !important; }
  .icon-#{$name} { color: $hex !important; }
  
  .icon-bg-#{$name} {
    background-color: $hex !important;
    color: if(color.channel($hex, "lightness", $space: hsl) > 70, $blue-dianne, $white-pure) !important;
    padding: 0.5rem;
    border-radius: 4px;
  }
}

// ==========================================
// 6. BULMA OVERRIDES
// ==========================================

// Backgrounds
.has-background-primary { background-color: $primary-color !important; }
.has-background-secondary { background-color: $secondary-color !important; }
.has-background-info { background-color: $info-color !important; }
.has-background-success { background-color: $success-color !important; }
.has-background-warning { background-color: $warning-color !important; }
.has-background-danger { background-color: $danger-color !important; }
.has-background-light { background-color: $light-color !important; }
.has-background-dark { background-color: $dark-color !important; }
.has-background-white { background-color: $white-pure !important; }

// Text Colors
.has-text-primary { color: #086e71 !important; }
.has-text-secondary { color: $secondary-color !important; }
.has-text-info { color: $info-color !important; }
.has-text-success { color: $success-color !important; }
.has-text-warning { color: $warning-color !important; } 
.has-text-danger { color: $danger-color !important; }
.has-text-light { color: $accent-color !important; }
.has-text-dark { color: $dark-color !important; }

// Button/Element States (is-*)
.is-primary {
  background-color: $primary-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-secondary {
  background-color: $secondary-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-link {
  background-color: $link-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-info {
  background-color: $info-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-success {
  background-color: $success-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-warning {
  background-color: $warning-color !important;
  border-color: transparent !important;
  color: $white-pure !important; 
}

.is-danger {
  background-color: $danger-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

.is-light {
  background-color: $light-color !important;
  border-color: transparent !important;
  color: $blue-dianne !important;
}

.is-dark {
  background-color: $dark-color !important;
  border-color: transparent !important;
  color: $white-pure !important;
}

// Outlined Variants
.is-primary.is-outlined {
  background-color: transparent !important;
  border-color: $primary-color !important;
  color: $primary-color !important;
}

.is-link.is-outlined {
  background-color: transparent !important;
  border-color: $link-color !important;
  color: $link-color !important;
}

.is-info.is-outlined {
  background-color: transparent !important;
  border-color: $info-color !important;
  color: $info-color !important;
}

.is-success.is-outlined {
  background-color: transparent !important;
  border-color: $success-color !important;
  color: $success-color !important;
}

.is-warning.is-outlined {
  background-color: transparent !important;
  border-color: $warning-color !important;
  color: $warning-color !important;
}

.is-primary.is-light {
  background-color: rgba($primary-color, 0.1) !important;
  color: $primary-color !important;
}

.is-info.is-light {
  background-color: rgba($info-color, 0.2) !important;
  color: color.adjust($info-color, $lightness: -10%) !important;
}

.is-success.is-light {
  background-color: rgba($success-color, 0.1) !important;
  color: $success-color !important;
}