santycss 2.4.8 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@
4
4
  For full responsive coverage: santy-core.css + santy-variants.css
5
5
  https://santycss.santy.in */
6
6
 
7
+ /* @SANTYMOD:reset */
7
8
  /* ============================================================
8
9
  SantyCSS v2.3.0 — Plain-English Utility CSS Framework
9
10
  https://github.com/santybad/santy_css
@@ -43,6 +44,8 @@
43
44
  --santy-shadow-inner: inset 0 2px 4px 0 rgba(0,0,0,0.06);
44
45
  }
45
46
 
47
+
48
+ /* @SANTYMOD:layout */
46
49
  /* ── Display ── */
47
50
  .make-block { display: block; }
48
51
  .make-inline { display: inline; }
@@ -60,6 +63,8 @@
60
63
  .make-invisible { visibility: hidden; }
61
64
  .make-collapse { visibility: collapse; }
62
65
 
66
+
67
+ /* @SANTYMOD:flex */
63
68
  /* ── Flex Direction ── */
64
69
  .flex-row { flex-direction: row; }
65
70
  .flex-row-reverse { flex-direction: row-reverse; }
@@ -148,6 +153,8 @@
148
153
  .order-11 { order: 11; }
149
154
  .order-12 { order: 12; }
150
155
 
156
+ /* @SANTYMOD:grid */
157
+
151
158
  /* ── Grid Template Columns ── */
152
159
  .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
153
160
  .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@@ -202,6 +209,8 @@
202
209
  .grid-auto-cols-fr { grid-auto-columns: minmax(0, 1fr); }
203
210
 
204
211
 
212
+ /* @SANTYMOD:spacing */
213
+
205
214
  /* ── Padding ── */
206
215
  .add-padding-0 { padding: 0px; }
207
216
  .add-padding-top-0 { padding-top: 0px; }
@@ -839,6 +848,8 @@
839
848
  .gap-x-1024 { column-gap: 1024px; }
840
849
  .gap-y-1024 { row-gap: 1024px; }
841
850
 
851
+ /* @SANTYMOD:sizing */
852
+
842
853
  /* ── Width ── */
843
854
  .set-width-0 { width: 0px; }
844
855
  .set-width-1 { width: 1px; }
@@ -1079,6 +1090,8 @@
1079
1090
  .min-width-none { min-width: none; }
1080
1091
  .max-width-none { max-width: none; }
1081
1092
 
1093
+ /* @SANTYMOD:borders */
1094
+
1082
1095
  /* ── Border Width ── */
1083
1096
  .add-border-0 { border: 0px solid; }
1084
1097
  .add-border-top-0 { border-top: 0px solid; }
@@ -1319,6 +1332,8 @@
1319
1332
  .round-left-128 { border-top-left-radius: 128px; border-bottom-left-radius: 128px; }
1320
1333
  .round-right-128 { border-top-right-radius: 128px; border-bottom-right-radius: 128px; }
1321
1334
 
1335
+ /* @SANTYMOD:typography */
1336
+
1322
1337
  /* ── Font Size ── */
1323
1338
  .set-text-8 { font-size: 8px; }
1324
1339
  .set-text-9 { font-size: 9px; }
@@ -1442,6 +1457,8 @@
1442
1457
  .letter-space-wider { letter-spacing: 0.05em; }
1443
1458
  .letter-space-widest { letter-spacing: 0.1em; }
1444
1459
 
1460
+ /* @SANTYMOD:colors */
1461
+
1445
1462
  /* ── Text Colors ── */
1446
1463
  .color-red-50 { color: #fef2f2; }
1447
1464
  .color-red-100 { color: #fee2e2; }
@@ -2408,6 +2425,8 @@
2408
2425
  .gradient-to-bottom-right { background-image: linear-gradient(to bottom right, var(--grad-from, transparent), var(--grad-to, transparent)); }
2409
2426
 
2410
2427
 
2428
+ /* @SANTYMOD:layout */
2429
+
2411
2430
  /* ── Position ── */
2412
2431
  .position-static { position: static; }
2413
2432
  .position-relative { position: relative; }
@@ -2604,6 +2623,8 @@
2604
2623
  .overflow-y-visible { overflow-y: visible; }
2605
2624
 
2606
2625
 
2626
+ /* @SANTYMOD:effects */
2627
+
2607
2628
  /* ── Opacity ── */
2608
2629
  .opacity-0 { opacity: 0; }
2609
2630
  .opacity-5 { opacity: 0.05; }
@@ -2736,6 +2757,8 @@
2736
2757
  .cursor-none { cursor: none; }
2737
2758
 
2738
2759
 
2760
+ /* @SANTYMOD:layout */
2761
+
2739
2762
  /* ── Object Fit ── */
2740
2763
  .fit-cover { object-fit: cover; }
2741
2764
  .fit-contain { object-fit: contain; }
@@ -2780,6 +2803,8 @@
2780
2803
  .aspect-video { aspect-ratio: 16 / 9; }
2781
2804
 
2782
2805
 
2806
+ /* @SANTYMOD:effects */
2807
+
2783
2808
  /* ── Filter ── */
2784
2809
  .blur-sm { filter: blur(4px); }
2785
2810
  .blur { filter: blur(8px); }
@@ -2930,6 +2955,8 @@
2930
2955
  .will-change-transform { will-change: transform; }
2931
2956
 
2932
2957
 
2958
+ /* @SANTYMOD:variants */
2959
+
2933
2960
  /* ═══════════════════════════════════════════════════════════════
2934
2961
  RESPONSIVE VARIANTS
2935
2962
  Usage: class="on-mobile:make-hidden md:make-flex lg:grid-cols-3"
@@ -4339,6 +4366,8 @@
4339
4366
 
4340
4367
 
4341
4368
 
4369
+ /* @SANTYMOD:animations */
4370
+
4342
4371
  /* ═══ SANTY COMPONENTS ═══ */
4343
4372
 
4344
4373
  /* ═══════════════════════════════════════════════════════════════
@@ -5972,6 +6001,8 @@
5972
6001
  .set-max-width-narrow { max-width: 45ch; }
5973
6002
 
5974
6003
 
6004
+ /* @SANTYMOD:typography */
6005
+
5975
6006
  /* ── Variable Font Weights ── */
5976
6007
  .font-variable { font-variation-settings: normal; }
5977
6008
  .font-condensed { font-stretch: condensed; font-variation-settings: 'wdth' 75; }
@@ -6008,6 +6039,8 @@
6008
6039
  .set-width-5-of-6 { width: 83.3333%; }
6009
6040
 
6010
6041
 
6042
+ /* @SANTYMOD:colors */
6043
+
6011
6044
  /* ── Caret Colors (full shade scale) ── */
6012
6045
  .caret-red-50 { caret-color: #fef2f2; }
6013
6046
  .caret-red-100 { caret-color: #fee2e2; }
@@ -6609,6 +6642,8 @@
6609
6642
  .border-stone-shade-10 { border-color: color-mix(in srgb, #78716c 90%, #000000); }
6610
6643
  /* ═══ VARIANTS_BLOCK_END ═══ */
6611
6644
 
6645
+ /* @SANTYMOD:layout */
6646
+
6612
6647
  /* ═══════════════════════════════════════════════════════════════════════════
6613
6648
  v1.7 — ACCESSIBILITY UTILITIES
6614
6649
  ═══════════════════════════════════════════════════════════════════════════ */
@@ -7351,3 +7386,598 @@
7351
7386
  }
7352
7387
  .animate-dragon-fire { animation: santy-dragon-fire 1.6s ease-out infinite; transform-origin: left center; }
7353
7388
  .animate-fire-flicker { animation: santy-fire-flicker 0.14s ease-in-out infinite; }
7389
+
7390
+ /* ═══════════════════════════════════════════════════════════════════════
7391
+ PORTFOLIO TEMPLATE COMPONENTS (Added v2.4.9)
7392
+ ═══════════════════════════════════════════════════════════════════════ */
7393
+
7394
+ /* ── Icon base class for essential UI icons (uses --icon-url variable) ── */
7395
+ .icon {
7396
+ display: inline-block;
7397
+ background-color: currentColor;
7398
+ -webkit-mask: var(--icon-url, none) no-repeat center / contain;
7399
+ mask: var(--icon-url, none) no-repeat center / contain;
7400
+ vertical-align: -0.125em;
7401
+ flex-shrink: 0;
7402
+ width: 1em;
7403
+ height: 1em;
7404
+ }
7405
+ .icon-16 { width: 16px; height: 16px; }
7406
+ .icon-20 { width: 20px; height: 20px; }
7407
+ .icon-24 { width: 24px; height: 24px; }
7408
+ .icon-28 { width: 28px; height: 28px; }
7409
+ .icon-32 { width: 32px; height: 32px; }
7410
+ .icon-40 { width: 40px; height: 40px; }
7411
+ .icon-48 { width: 48px; height: 48px; }
7412
+
7413
+ /* ── Near-black background utility ── */
7414
+ .background-zinc-950 { background-color: #09090b; }
7415
+
7416
+ /* ── Full-page scroll-snap container ── */
7417
+ .portfolio-snap {
7418
+ height: 100vh;
7419
+ overflow-y: scroll;
7420
+ scroll-snap-type: y mandatory;
7421
+ scroll-behavior: smooth;
7422
+ overscroll-behavior: none;
7423
+ }
7424
+ .portfolio-snap::-webkit-scrollbar { display: none; }
7425
+ .portfolio-snap { -ms-overflow-style: none; scrollbar-width: none; }
7426
+
7427
+ /* ── Snap section (full-vh, overflow hidden) ── */
7428
+ .snap-section {
7429
+ height: 100vh;
7430
+ min-height: 100vh;
7431
+ scroll-snap-align: start;
7432
+ scroll-snap-stop: always;
7433
+ overflow: hidden;
7434
+ position: relative;
7435
+ }
7436
+
7437
+ /* ── Snap section with internal scroll ── */
7438
+ .snap-section-scrollable {
7439
+ height: 100vh;
7440
+ scroll-snap-align: start;
7441
+ scroll-snap-stop: always;
7442
+ overflow-y: auto;
7443
+ overscroll-behavior: contain;
7444
+ position: relative;
7445
+ }
7446
+ .snap-section-scrollable::-webkit-scrollbar { width: 3px; }
7447
+ .snap-section-scrollable::-webkit-scrollbar-track { background: transparent; }
7448
+ .snap-section-scrollable::-webkit-scrollbar-thumb { background: rgba(247,191,4,0.3); border-radius: 9999px; }
7449
+
7450
+ /* ── Right-side dot navigation ── */
7451
+ .portfolio-right-nav {
7452
+ position: fixed;
7453
+ right: 28px;
7454
+ top: 50%;
7455
+ transform: translateY(-50%);
7456
+ display: flex;
7457
+ flex-direction: column;
7458
+ align-items: center;
7459
+ gap: 14px;
7460
+ z-index: 100;
7461
+ }
7462
+ @media (max-width: 767px) { .portfolio-right-nav { display: none; } }
7463
+
7464
+ .nav-dot {
7465
+ display: block;
7466
+ width: 10px;
7467
+ height: 10px;
7468
+ border-radius: 9999px;
7469
+ background: rgba(255,255,255,0.2);
7470
+ border: none;
7471
+ cursor: pointer;
7472
+ text-decoration: none;
7473
+ transition: all 0.25s ease;
7474
+ position: relative;
7475
+ }
7476
+ .nav-dot::after {
7477
+ content: attr(data-label);
7478
+ position: absolute;
7479
+ right: 20px;
7480
+ top: 50%;
7481
+ transform: translateY(-50%);
7482
+ background: #f7bf04;
7483
+ color: #111;
7484
+ font-size: 11px;
7485
+ font-weight: 700;
7486
+ padding: 3px 10px;
7487
+ border-radius: 6px;
7488
+ white-space: nowrap;
7489
+ opacity: 0;
7490
+ pointer-events: none;
7491
+ transition: opacity 0.2s;
7492
+ font-family: ui-sans-serif, system-ui, sans-serif;
7493
+ }
7494
+ .nav-dot:hover::after { opacity: 1; }
7495
+ .nav-dot:hover { background: rgba(255,255,255,0.5); transform: scale(1.3); }
7496
+ .nav-dot.nav-dot-active {
7497
+ background: #f7bf04;
7498
+ transform: scale(1.4);
7499
+ box-shadow: 0 0 0 3px rgba(247,191,4,0.25);
7500
+ }
7501
+
7502
+ /* ── Glass card ── */
7503
+ .glass-card {
7504
+ background: rgba(255,255,255,0.05);
7505
+ backdrop-filter: blur(12px);
7506
+ -webkit-backdrop-filter: blur(12px);
7507
+ border: 1px solid rgba(255,255,255,0.1);
7508
+ border-radius: 16px;
7509
+ }
7510
+ .glass-card-light {
7511
+ background: rgba(255,255,255,0.08);
7512
+ backdrop-filter: blur(16px);
7513
+ -webkit-backdrop-filter: blur(16px);
7514
+ border: 1px solid rgba(255,255,255,0.15);
7515
+ border-radius: 16px;
7516
+ }
7517
+
7518
+ /* ── Large avatar with animated gradient ring ── */
7519
+ .avatar-ring-lg {
7520
+ position: relative;
7521
+ width: 130px;
7522
+ height: 130px;
7523
+ flex-shrink: 0;
7524
+ }
7525
+ .avatar-ring-lg::before {
7526
+ content: '';
7527
+ position: absolute;
7528
+ inset: -4px;
7529
+ border-radius: 50%;
7530
+ background: conic-gradient(#f7bf04, #fcd34d, rgba(255,255,255,0.04), #f7bf04);
7531
+ animation: santy-spin 4s linear infinite;
7532
+ z-index: 0;
7533
+ }
7534
+ .avatar-ring-lg > img,
7535
+ .avatar-ring-lg > .avatar-photo {
7536
+ position: relative;
7537
+ z-index: 1;
7538
+ width: 100%;
7539
+ height: 100%;
7540
+ border-radius: 50%;
7541
+ object-fit: cover;
7542
+ display: block;
7543
+ border: 4px solid #09090b;
7544
+ }
7545
+
7546
+ /* ── Skill bar track + fill ── */
7547
+ .skill-bar-track {
7548
+ width: 100%;
7549
+ height: 6px;
7550
+ background: rgba(255,255,255,0.1);
7551
+ border-radius: 9999px;
7552
+ overflow: hidden;
7553
+ }
7554
+ .skill-bar-fill {
7555
+ height: 100%;
7556
+ background: linear-gradient(90deg, #f7bf04, #fcd34d);
7557
+ border-radius: 9999px;
7558
+ width: 0;
7559
+ transition: width 1.4s cubic-bezier(0.25, 0.8, 0.25, 1);
7560
+ }
7561
+ .skill-bar-fill-blue { background: linear-gradient(90deg, #3b82f6, #60a5fa); }
7562
+ .skill-bar-fill-purple { background: linear-gradient(90deg, #8b5cf6, #a78bfa); }
7563
+ .skill-bar-fill-green { background: linear-gradient(90deg, #22c55e, #4ade80); }
7564
+ .skill-bar-fill-pink { background: linear-gradient(90deg, #ec4899, #f472b6); }
7565
+ .skill-bar-fill-cyan { background: linear-gradient(90deg, #06b6d4, #22d3ee); }
7566
+
7567
+ /* ── Amber gradient text ── */
7568
+ .text-gradient-amber-to-yellow {
7569
+ background-image: linear-gradient(135deg, #f7bf04, #fcd34d);
7570
+ -webkit-background-clip: text;
7571
+ background-clip: text;
7572
+ -webkit-text-fill-color: transparent;
7573
+ color: transparent;
7574
+ }
7575
+
7576
+ /* ── Progress bar amber variant ── */
7577
+ .progress-bar-amber { background: linear-gradient(90deg, #f7bf04, #fcd34d); }
7578
+
7579
+ /* ── Section badge ── */
7580
+ .section-badge {
7581
+ display: inline-flex;
7582
+ align-items: center;
7583
+ gap: 6px;
7584
+ padding: 4px 14px;
7585
+ border-radius: 9999px;
7586
+ border: 1px solid rgba(247,191,4,0.35);
7587
+ background: rgba(247,191,4,0.08);
7588
+ font-size: 11px;
7589
+ font-weight: 700;
7590
+ color: #f7bf04;
7591
+ letter-spacing: 0.1em;
7592
+ text-transform: uppercase;
7593
+ }
7594
+
7595
+ /* ── Mobile nav overlay ── */
7596
+ .mobile-menu-overlay {
7597
+ position: fixed;
7598
+ inset: 0;
7599
+ background: rgba(8, 8, 14, 0.97);
7600
+ z-index: 200;
7601
+ display: none;
7602
+ flex-direction: column;
7603
+ align-items: center;
7604
+ justify-content: center;
7605
+ gap: 6px;
7606
+ backdrop-filter: blur(20px);
7607
+ -webkit-backdrop-filter: blur(20px);
7608
+ }
7609
+ .mobile-menu-overlay.open {
7610
+ display: flex;
7611
+ animation: santy-fade-in 0.2s ease both;
7612
+ }
7613
+ .mobile-nav-link {
7614
+ display: flex;
7615
+ align-items: center;
7616
+ gap: 16px;
7617
+ font-size: 24px;
7618
+ font-weight: 700;
7619
+ color: rgba(255,255,255,0.55);
7620
+ text-decoration: none;
7621
+ padding: 12px 40px;
7622
+ border-radius: 14px;
7623
+ transition: color 0.2s ease, background 0.2s ease;
7624
+ width: 100%;
7625
+ max-width: 320px;
7626
+ }
7627
+ .mobile-nav-link:hover,
7628
+ .mobile-nav-link.nav-dot-active { color: #f7bf04; background: rgba(247,191,4,0.08); }
7629
+
7630
+ /* ── Portfolio hamburger button ── */
7631
+ .portfolio-hamburger {
7632
+ position: fixed;
7633
+ top: 20px;
7634
+ right: 20px;
7635
+ z-index: 300;
7636
+ width: 44px;
7637
+ height: 44px;
7638
+ border-radius: 10px;
7639
+ background: rgba(255,255,255,0.07);
7640
+ backdrop-filter: blur(8px);
7641
+ -webkit-backdrop-filter: blur(8px);
7642
+ border: 1px solid rgba(255,255,255,0.12);
7643
+ cursor: pointer;
7644
+ display: none;
7645
+ align-items: center;
7646
+ justify-content: center;
7647
+ color: #fff;
7648
+ transition: background 0.2s, border-color 0.2s;
7649
+ }
7650
+ .portfolio-hamburger:hover { background: rgba(247,191,4,0.15); border-color: rgba(247,191,4,0.4); }
7651
+ @media (max-width: 767px) { .portfolio-hamburger { display: flex; } }
7652
+
7653
+ /* ═══════════════════════════════════════════════════════════════════════
7654
+ PORTFOLIO CV SIDEBAR TEMPLATE COMPONENTS (Added v2.4.9)
7655
+ ═══════════════════════════════════════════════════════════════════════ */
7656
+
7657
+ /* ── Brand cyan accent ── */
7658
+ .color-brand-cyan { color: #0099e5; }
7659
+ .background-brand-cyan { background-color: #0099e5; }
7660
+ .border-color-brand-cyan { border-color: #0099e5; }
7661
+ .background-brand-cyan-soft { background-color: rgba(0,153,229,0.08); }
7662
+ .background-brand-cyan-10 { background-color: rgba(0,153,229,0.10); }
7663
+
7664
+ /* ── CV sidebar fixed-left layout ── */
7665
+ .cv-sidebar {
7666
+ position: fixed; top: 0; left: 0; width: 220px; height: 100vh;
7667
+ overflow-y: auto; display: flex; flex-direction: column;
7668
+ z-index: 100; background: #1c1c1e; border-right: 1px solid #252525;
7669
+ scrollbar-width: none;
7670
+ }
7671
+ .cv-sidebar::-webkit-scrollbar { display: none; }
7672
+ .cv-main { margin-left: 220px; background: #0f0f0f; min-height: 100vh; }
7673
+ @media (max-width: 900px) {
7674
+ .cv-sidebar { transform: translateX(-100%); transition: transform 0.3s ease; }
7675
+ .cv-sidebar.cv-sidebar-open { transform: translateX(0); box-shadow: 4px 0 32px rgba(0,0,0,0.7); }
7676
+ .cv-main { margin-left: 0; }
7677
+ }
7678
+
7679
+ /* ── Sidebar nav links ── */
7680
+ .cv-nav-link {
7681
+ display: flex; align-items: center; gap: 10px; padding: 11px 22px;
7682
+ font-size: 13px; font-weight: 600; color: #777; text-decoration: none;
7683
+ border-left: 3px solid transparent; transition: all 0.2s; letter-spacing: 0.02em;
7684
+ }
7685
+ .cv-nav-link:hover, .cv-nav-link.cv-nav-active {
7686
+ color: #0099e5; border-left-color: #0099e5; background: rgba(0,153,229,0.07);
7687
+ }
7688
+
7689
+ /* ── Section wrapper ── */
7690
+ .cv-section { padding: 64px 56px; }
7691
+ .cv-section-alt { background: #161616; }
7692
+ @media (max-width: 700px) { .cv-section { padding: 40px 22px; } }
7693
+ .cv-section-label { font-size: 11px; font-weight: 700; color: #0099e5; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 6px; }
7694
+ .cv-section-title { font-size: 30px; font-weight: 800; color: #f0f0f0; margin: 0 0 8px; }
7695
+ .cv-section-divider { width: 36px; height: 3px; background: #0099e5; border-radius: 2px; margin-bottom: 36px; }
7696
+
7697
+ /* ── Dark timeline variant ── */
7698
+ .timeline-dark .timeline-item:not(:last-child) .timeline-dot::after { background-color: #252525; }
7699
+ .timeline-dot-cyan { background-color: #0099e5; box-shadow: 0 0 0 2px rgba(0,153,229,0.25); color: #fff; }
7700
+ .timeline-dot-zinc { background-color: #3f3f46; box-shadow: 0 0 0 2px #27272a; color: #a1a1aa; }
7701
+
7702
+ /* ── Skill bar (dark) ── */
7703
+ .skill-bar-dark { width: 100%; height: 4px; background: #252525; border-radius: 9999px; overflow: hidden; }
7704
+ .skill-bar-dark-fill { height: 100%; background: #0099e5; border-radius: 9999px; width: 0; transition: width 1.4s cubic-bezier(0.25,0.8,0.25,1); }
7705
+
7706
+ /* ── Fun fact card ── */
7707
+ .fun-fact-card { background: #1c1c1e; border: 1px solid #252525; border-radius: 14px; padding: 28px 16px; text-align: center; transition: border-color 0.2s, transform 0.2s; }
7708
+ .fun-fact-card:hover { border-color: #0099e5; transform: translateY(-4px); }
7709
+ .fun-fact-number { font-size: 44px; font-weight: 900; color: #0099e5; line-height: 1; }
7710
+ .fun-fact-suffix { font-size: 28px; font-weight: 900; color: #0099e5; }
7711
+ .fun-fact-label { font-size: 11px; color: #555; text-transform: uppercase; letter-spacing: 0.08em; margin-top: 8px; font-weight: 600; }
7712
+
7713
+ /* ── Portfolio filter ── */
7714
+ .pf-filter-btn { padding: 7px 20px; border-radius: 9999px; font-size: 12px; font-weight: 600; cursor: pointer; border: 1px solid #252525; background: #1c1c1e; color: #666; transition: all 0.2s; font-family: inherit; letter-spacing: 0.02em; }
7715
+ .pf-filter-btn:hover, .pf-filter-btn.pf-active { background: #0099e5; color: #fff; border-color: #0099e5; }
7716
+
7717
+ /* ── Project card (dark) ── */
7718
+ .project-card-dark { background: #1c1c1e; border: 1px solid #252525; border-radius: 14px; overflow: hidden; transition: border-color 0.25s, transform 0.25s; display: flex; flex-direction: column; }
7719
+ .project-card-dark:hover { border-color: #0099e5; transform: translateY(-5px); }
7720
+ .project-thumb-dark { height: 155px; display: flex; align-items: center; justify-content: center; background: #141414; }
7721
+ .project-card-body { padding: 18px 20px 20px; display: flex; flex-direction: column; flex: 1; }
7722
+
7723
+ /* ── Blog card (dark) ── */
7724
+ .blog-card-dark { background: #1c1c1e; border: 1px solid #252525; border-radius: 14px; overflow: hidden; transition: border-color 0.25s, transform 0.25s; display: flex; flex-direction: column; cursor: pointer; }
7725
+ .blog-card-dark:hover { border-color: #0099e5; transform: translateY(-5px); }
7726
+ .blog-thumb-dark { height: 175px; display: flex; align-items: center; justify-content: center; }
7727
+
7728
+ /* ── Service card (dark) ── */
7729
+ .service-card-dark { background: #1c1c1e; border: 1px solid #252525; border-radius: 12px; padding: 26px 22px; transition: border-color 0.2s, transform 0.2s; }
7730
+ .service-card-dark:hover { border-color: #0099e5; transform: translateY(-3px); }
7731
+
7732
+ /* ── Dark inputs ── */
7733
+ .input-dark { width: 100%; background: #1c1c1e; border: 1px solid #252525; border-radius: 8px; padding: 12px 16px; color: #e2e8f0; font-size: 14px; transition: border-color 0.2s; outline: none; font-family: inherit; box-sizing: border-box; }
7734
+ .input-dark:focus { border-color: #0099e5; }
7735
+ .textarea-dark { width: 100%; background: #1c1c1e; border: 1px solid #252525; border-radius: 8px; padding: 12px 16px; color: #e2e8f0; font-size: 14px; transition: border-color 0.2s; outline: none; font-family: inherit; box-sizing: border-box; resize: vertical; min-height: 130px; }
7736
+ .textarea-dark:focus { border-color: #0099e5; }
7737
+
7738
+ /* ── Cyan CTA buttons ── */
7739
+ .btn-cyan { background: #0099e5; color: #fff; border: none; padding: 12px 28px; border-radius: 9999px; font-size: 14px; font-weight: 700; cursor: pointer; transition: background 0.2s, transform 0.15s; font-family: inherit; display: inline-flex; align-items: center; gap: 8px; }
7740
+ .btn-cyan:hover { background: #0087cc; transform: translateY(-2px); }
7741
+ .btn-cyan-outline { background: transparent; color: #0099e5; border: 1.5px solid #0099e5; padding: 11px 26px; border-radius: 9999px; font-size: 14px; font-weight: 700; cursor: pointer; transition: all 0.2s; font-family: inherit; display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
7742
+ .btn-cyan-outline:hover { background: rgba(0,153,229,0.1); transform: translateY(-2px); }
7743
+
7744
+ /* ── Tag pill (dark) ── */
7745
+ .tag-dark { display: inline-flex; padding: 5px 14px; background: #1c1c1e; border: 1px solid #252525; border-radius: 9999px; font-size: 12px; font-weight: 500; color: #888; transition: all 0.2s; }
7746
+ .tag-dark:hover { border-color: #0099e5; color: #0099e5; }
7747
+
7748
+ /* ── Mobile hamburger & sidebar overlay ── */
7749
+ .cv-hamburger { display: none; position: fixed; top: 14px; left: 14px; z-index: 300; width: 42px; height: 42px; background: #1c1c1e; border: 1px solid #252525; border-radius: 8px; cursor: pointer; align-items: center; justify-content: center; color: #ccc; transition: border-color 0.2s, color 0.2s; }
7750
+ .cv-hamburger:hover { border-color: #0099e5; color: #0099e5; }
7751
+ @media (max-width: 900px) { .cv-hamburger { display: flex; } }
7752
+ .cv-sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.75); z-index: 99; }
7753
+ .cv-sidebar-overlay.cv-overlay-open { display: block; animation: santy-fade-in 0.2s ease; }
7754
+
7755
+ /* ── Testimonial card dark ── */
7756
+ .testimonial-card-dark { background: #1c1c1e; border: 1px solid #252525; border-radius: 14px; padding: 26px 24px; }
7757
+
7758
+ /* ── What I do card ── */
7759
+ .what-i-do-card { background: #1c1c1e; border: 1px solid #252525; border-radius: 12px; padding: 22px; transition: border-color 0.2s, transform 0.2s; }
7760
+ .what-i-do-card:hover { border-color: #0099e5; transform: translateY(-3px); }
7761
+
7762
+ /* ═══════════════════════════════════════════════════════════════════════
7763
+ "IT'S ME" PORTFOLIO TEMPLATE COMPONENTS (Added v2.5.0)
7764
+ Light, orange-accent, multi-section single-page portfolio
7765
+ ═══════════════════════════════════════════════════════════════════════ */
7766
+
7767
+ /* ── Sticky nav ── */
7768
+ .itsme-nav {
7769
+ position: sticky; top: 0; z-index: 200; background: #fff;
7770
+ border-bottom: 1px solid #efefef; box-shadow: 0 2px 16px rgba(0,0,0,.06);
7771
+ display: flex; align-items: center; justify-content: space-between;
7772
+ padding: 0 40px; height: 68px;
7773
+ }
7774
+ .itsme-brand { font-size: 22px; font-weight: 800; color: #222; letter-spacing: -0.02em; }
7775
+ .itsme-brand span { color: #f97316; }
7776
+ .itsme-nav-links { display: flex; align-items: center; gap: 32px; list-style: none; margin: 0; padding: 0; }
7777
+ .itsme-nav-link {
7778
+ font-size: 12px; font-weight: 700; color: #555; text-decoration: none;
7779
+ letter-spacing: 0.06em; text-transform: uppercase; transition: color .2s; cursor: pointer; background: none; border: none; font-family: inherit; padding: 0;
7780
+ }
7781
+ .itsme-nav-link:hover, .itsme-nav-link.itsme-nav-active { color: #f97316; }
7782
+ .itsme-nav-getcv {
7783
+ font-size: 11px; font-weight: 800; color: #fff; background: #f97316;
7784
+ border: none; border-radius: 5px; padding: 9px 22px; cursor: pointer;
7785
+ text-decoration: none; letter-spacing: 0.06em; text-transform: uppercase;
7786
+ transition: background .2s, transform .15s; font-family: inherit;
7787
+ }
7788
+ .itsme-nav-getcv:hover { background: #ea6c10; transform: translateY(-1px); }
7789
+ .itsme-hamburger { display: none; background: none; border: 1px solid #e8e8e8; border-radius: 6px; padding: 7px 9px; cursor: pointer; color: #444; line-height: 1; }
7790
+ @media (max-width: 768px) {
7791
+ .itsme-nav { padding: 0 20px; }
7792
+ .itsme-hamburger { display: flex; align-items: center; }
7793
+ .itsme-nav-links { display: none; position: absolute; top: 68px; left: 0; right: 0; background: #fff; flex-direction: column; align-items: stretch; padding: 8px 0; border-bottom: 1px solid #efefef; gap: 0; box-shadow: 0 8px 24px rgba(0,0,0,.08); z-index: 199; }
7794
+ .itsme-nav-links.open { display: flex; }
7795
+ .itsme-nav-link { padding: 13px 24px; border-bottom: 1px solid #f5f5f5; }
7796
+ .itsme-nav-getcv { display: none; }
7797
+ }
7798
+
7799
+ /* ── Hero ── */
7800
+ .itsme-hero {
7801
+ min-height: 100vh; display: flex; flex-direction: column;
7802
+ align-items: center; justify-content: center; text-align: center;
7803
+ background: #fff; padding: 80px 24px; overflow: hidden;
7804
+ }
7805
+ .itsme-profile-ring {
7806
+ width: 180px; height: 180px; border-radius: 50%; border: 4px solid #f97316;
7807
+ padding: 5px; display: inline-flex; align-items: center; justify-content: center;
7808
+ margin-bottom: 32px; flex-shrink: 0;
7809
+ }
7810
+ .itsme-profile-img {
7811
+ width: 100%; height: 100%; border-radius: 50%; object-fit: cover;
7812
+ background: linear-gradient(135deg, #fde68a 0%, #f97316 100%);
7813
+ display: flex; align-items: center; justify-content: center;
7814
+ font-size: 52px; font-weight: 900; color: #fff; overflow: hidden;
7815
+ }
7816
+ .itsme-hero-name { font-size: 52px; font-weight: 900; color: #1a1a2e; line-height: 1.1; margin: 0 0 14px; }
7817
+ .itsme-hero-tagline { font-size: 16px; color: #777; max-width: 480px; line-height: 1.7; margin: 0 0 32px; }
7818
+ .itsme-social-row { display: flex; gap: 10px; justify-content: center; margin-top: 32px; }
7819
+ .itsme-social-btn {
7820
+ width: 40px; height: 40px; border-radius: 50%; border: 1.5px solid #e8e8e8;
7821
+ display: flex; align-items: center; justify-content: center; color: #888;
7822
+ text-decoration: none; transition: all .2s; background: #fff;
7823
+ }
7824
+ .itsme-social-btn:hover { border-color: #f97316; color: #f97316; background: rgba(249,115,22,.06); }
7825
+ @media (max-width: 640px) {
7826
+ .itsme-hero-name { font-size: 34px; }
7827
+ .itsme-profile-ring { width: 140px; height: 140px; }
7828
+ .itsme-profile-img { font-size: 40px; }
7829
+ }
7830
+
7831
+ /* ── Section scaffold ── */
7832
+ .itsme-section { padding: 80px 40px; }
7833
+ .itsme-section-alt { background: #f8f9fa; }
7834
+ .itsme-section-inner { max-width: 1100px; margin: 0 auto; }
7835
+ .itsme-eyebrow { font-size: 12px; font-weight: 800; color: #f97316; letter-spacing: 0.14em; text-transform: uppercase; margin-bottom: 6px; }
7836
+ .itsme-title { font-size: 34px; font-weight: 900; color: #1a1a2e; margin: 0 0 10px; line-height: 1.15; }
7837
+ .itsme-divider { width: 48px; height: 3px; background: #f97316; border-radius: 2px; margin-bottom: 40px; }
7838
+ @media (max-width: 768px) {
7839
+ .itsme-section { padding: 56px 20px; }
7840
+ .itsme-title { font-size: 26px; }
7841
+ }
7842
+
7843
+ /* ── Bio info grid ── */
7844
+ .itsme-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 40px; margin-bottom: 28px; }
7845
+ .itsme-info-label { font-size: 11px; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 2px; }
7846
+ .itsme-info-value { font-size: 14px; font-weight: 600; color: #333; }
7847
+ @media (max-width: 480px) { .itsme-info-grid { grid-template-columns: 1fr; } }
7848
+
7849
+ /* ── Service card ── */
7850
+ .itsme-service-card {
7851
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
7852
+ padding: 28px 22px; transition: box-shadow .25s, transform .25s;
7853
+ }
7854
+ .itsme-service-card:hover { box-shadow: 0 10px 36px rgba(249,115,22,.12); transform: translateY(-5px); }
7855
+ .itsme-service-icon {
7856
+ width: 52px; height: 52px; border-radius: 12px;
7857
+ background: rgba(249,115,22,.08); border: 1px solid rgba(249,115,22,.18);
7858
+ display: flex; align-items: center; justify-content: center; margin-bottom: 16px;
7859
+ }
7860
+
7861
+ /* ── Light skill bars ── */
7862
+ .itsme-skill-row { margin-bottom: 18px; }
7863
+ .itsme-skill-meta { display: flex; justify-content: space-between; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: #444; }
7864
+ .itsme-skill-pct { color: #f97316; }
7865
+ .itsme-skill-track { height: 6px; background: #f0f0f0; border-radius: 3px; overflow: hidden; }
7866
+ .itsme-skill-fill { height: 100%; border-radius: 3px; background: #f97316; width: 0; transition: width 1.2s cubic-bezier(.4,0,.2,1); }
7867
+ .itsme-skill-fill-blue { background: #3b82f6; }
7868
+ .itsme-skill-fill-purple { background: #8b5cf6; }
7869
+ .itsme-skill-fill-green { background: #22c55e; }
7870
+
7871
+ /* ── Light timeline ── */
7872
+ .itsme-timeline { position: relative; padding-left: 30px; }
7873
+ .itsme-timeline::before { content: ''; position: absolute; left: 5px; top: 8px; width: 2px; height: calc(100% - 16px); background: #efefef; }
7874
+ .itsme-timeline-item { position: relative; margin-bottom: 32px; }
7875
+ .itsme-timeline-dot {
7876
+ position: absolute; left: -30px; top: 5px; width: 12px; height: 12px;
7877
+ border-radius: 50%; background: #f97316; border: 2px solid #fff; box-shadow: 0 0 0 2px #f97316;
7878
+ }
7879
+ .itsme-timeline-badge {
7880
+ display: inline-block; font-size: 10px; font-weight: 800; color: #f97316;
7881
+ background: rgba(249,115,22,.08); border-radius: 4px; padding: 2px 10px;
7882
+ letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 8px;
7883
+ }
7884
+ .itsme-timeline-role { font-size: 15px; font-weight: 700; color: #1a1a2e; margin-bottom: 3px; }
7885
+ .itsme-timeline-org { font-size: 12px; color: #f97316; font-weight: 700; margin-bottom: 8px; }
7886
+ .itsme-timeline-desc { font-size: 13px; color: #777; line-height: 1.7; margin: 0; }
7887
+
7888
+ /* ── Testimonial card ── */
7889
+ .itsme-testimonial {
7890
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
7891
+ padding: 28px 24px; transition: box-shadow .2s;
7892
+ }
7893
+ .itsme-testimonial:hover { box-shadow: 0 8px 28px rgba(0,0,0,.08); }
7894
+ .itsme-testimonial-quote { font-size: 36px; color: #f97316; line-height: 1; margin-bottom: 12px; font-weight: 900; }
7895
+
7896
+ /* ── Work/portfolio card ── */
7897
+ .itsme-work-card {
7898
+ border-radius: 14px; overflow: hidden; background: #fff;
7899
+ border: 1px solid #efefef; transition: box-shadow .25s, transform .25s; position: relative;
7900
+ }
7901
+ .itsme-work-card:hover { box-shadow: 0 12px 40px rgba(0,0,0,.12); transform: translateY(-5px); }
7902
+ .itsme-work-thumb { aspect-ratio: 4/3; overflow: hidden; position: relative; }
7903
+ .itsme-work-thumb-bg { width: 100%; height: 100%; transition: transform .3s; display: flex; align-items: center; justify-content: center; }
7904
+ .itsme-work-card:hover .itsme-work-thumb-bg { transform: scale(1.06); }
7905
+ .itsme-work-overlay {
7906
+ position: absolute; inset: 0; background: rgba(249,115,22,.88);
7907
+ display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 8px;
7908
+ opacity: 0; transition: opacity .25s;
7909
+ }
7910
+ .itsme-work-card:hover .itsme-work-overlay { opacity: 1; }
7911
+ .itsme-work-cat {
7912
+ display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: 0.06em;
7913
+ text-transform: uppercase; color: #f97316; background: rgba(249,115,22,.08);
7914
+ border-radius: 4px; padding: 2px 10px; margin-bottom: 6px;
7915
+ }
7916
+
7917
+ /* ── Portfolio filter buttons ── */
7918
+ .itsme-filter { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 32px; }
7919
+ .itsme-filter-btn {
7920
+ padding: 7px 20px; border-radius: 4px; border: 1.5px solid #e2e8f0;
7921
+ background: transparent; cursor: pointer; font-size: 11px; font-weight: 800;
7922
+ color: #777; font-family: inherit; transition: all .18s;
7923
+ text-transform: uppercase; letter-spacing: 0.06em;
7924
+ }
7925
+ .itsme-filter-btn:hover, .itsme-filter-btn.itsme-filter-active { background: #f97316; color: #fff; border-color: #f97316; }
7926
+
7927
+ /* ── Blog card ── */
7928
+ .itsme-blog-card {
7929
+ background: #fff; border: 1px solid #efefef; border-radius: 14px;
7930
+ overflow: hidden; transition: box-shadow .25s, transform .25s;
7931
+ }
7932
+ .itsme-blog-card:hover { box-shadow: 0 10px 32px rgba(0,0,0,.1); transform: translateY(-4px); }
7933
+ .itsme-blog-thumb { aspect-ratio: 16/9; overflow: hidden; }
7934
+ .itsme-blog-thumb-inner { width: 100%; height: 100%; transition: transform .3s; display: flex; align-items: center; justify-content: center; }
7935
+ .itsme-blog-card:hover .itsme-blog-thumb-inner { transform: scale(1.05); }
7936
+ .itsme-blog-tag {
7937
+ display: inline-block; font-size: 10px; font-weight: 800; padding: 3px 10px;
7938
+ border-radius: 4px; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 10px;
7939
+ }
7940
+ .itsme-tag-web { background: rgba(59,130,246,.08); color: #3b82f6; }
7941
+ .itsme-tag-graphic { background: rgba(249,115,22,.08); color: #f97316; }
7942
+ .itsme-tag-motion { background: rgba(139,92,246,.08); color: #8b5cf6; }
7943
+
7944
+ /* ── Contact form ── */
7945
+ .itsme-input {
7946
+ width: 100%; padding: 12px 16px; border: 1.5px solid #e8e8e8;
7947
+ border-radius: 8px; font-size: 14px; color: #333; background: #fff;
7948
+ outline: none; transition: border-color .2s; font-family: inherit;
7949
+ display: block;
7950
+ }
7951
+ .itsme-input:focus { border-color: #f97316; }
7952
+ .itsme-textarea { resize: vertical; min-height: 130px; }
7953
+
7954
+ /* ── Primary button ── */
7955
+ .itsme-btn {
7956
+ display: inline-flex; align-items: center; gap: 8px; padding: 13px 30px;
7957
+ background: #f97316; color: #fff; border: 2px solid #f97316;
7958
+ border-radius: 6px; font-size: 12px; font-weight: 800; letter-spacing: 0.06em;
7959
+ text-transform: uppercase; cursor: pointer; text-decoration: none;
7960
+ transition: background .2s, transform .15s; font-family: inherit;
7961
+ }
7962
+ .itsme-btn:hover { background: #ea6c10; border-color: #ea6c10; transform: translateY(-1px); }
7963
+ .itsme-btn-ghost { background: transparent; color: #f97316; }
7964
+ .itsme-btn-ghost:hover { background: #f97316; color: #fff; }
7965
+
7966
+ /* ── Floating dots background deco ── */
7967
+ .itsme-dot-deco {
7968
+ position: absolute; border-radius: 50%; pointer-events: none;
7969
+ background: #f97316; opacity: .04;
7970
+ }
7971
+
7972
+ /* ── Contact info card ── */
7973
+ .itsme-contact-card {
7974
+ display: flex; align-items: flex-start; gap: 16px; padding: 20px;
7975
+ background: #fff; border: 1px solid #efefef; border-radius: 12px; margin-bottom: 16px;
7976
+ transition: box-shadow .2s;
7977
+ }
7978
+ .itsme-contact-card:hover { box-shadow: 0 6px 24px rgba(249,115,22,.1); }
7979
+ .itsme-contact-icon {
7980
+ width: 44px; height: 44px; border-radius: 10px; flex-shrink: 0;
7981
+ background: rgba(249,115,22,.08); border: 1px solid rgba(249,115,22,.18);
7982
+ display: flex; align-items: center; justify-content: center;
7983
+ }