santycss
Version:
Plain-English utility-first CSS framework — no build step, just classes
776 lines (739 loc) • 92.1 kB
CSS
/* SantyCSS — layout module
Import individually to reduce bundle size.
https://santycss.santy.in */
/* ── Display ── */
.make-block { display: block; }
.make-inline { display: inline; }
.make-inline-block { display: inline-block; }
.make-flex { display: flex; }
.make-inline-flex { display: inline-flex; }
.make-grid { display: grid; }
.make-inline-grid { display: inline-grid; }
.make-table { display: table; }
.make-hidden { display: none; }
.make-contents { display: contents; }
/* ── Visibility ── */
.make-visible { visibility: visible; }
.make-invisible { visibility: hidden; }
.make-collapse { visibility: collapse; }
/* ── Position ── */
.position-static { position: static; }
.position-relative { position: relative; }
.position-absolute { position: absolute; }
.position-fixed { position: fixed; }
.position-sticky { position: sticky; }
/* ── Pin (top/bottom/left/right/inset) ── */
.pin-top-0 { top: 0px; }
.pin-bottom-0 { bottom: 0px; }
.pin-left-0 { left: 0px; }
.pin-right-0 { right: 0px; }
.pin-all-0 { top: 0px; right: 0px; bottom: 0px; left: 0px; }
.pin-top-1 { top: 1px; }
.pin-bottom-1 { bottom: 1px; }
.pin-left-1 { left: 1px; }
.pin-right-1 { right: 1px; }
.pin-all-1 { top: 1px; right: 1px; bottom: 1px; left: 1px; }
.pin-top-2 { top: 2px; }
.pin-bottom-2 { bottom: 2px; }
.pin-left-2 { left: 2px; }
.pin-right-2 { right: 2px; }
.pin-all-2 { top: 2px; right: 2px; bottom: 2px; left: 2px; }
.pin-top-3 { top: 3px; }
.pin-bottom-3 { bottom: 3px; }
.pin-left-3 { left: 3px; }
.pin-right-3 { right: 3px; }
.pin-all-3 { top: 3px; right: 3px; bottom: 3px; left: 3px; }
.pin-top-4 { top: 4px; }
.pin-bottom-4 { bottom: 4px; }
.pin-left-4 { left: 4px; }
.pin-right-4 { right: 4px; }
.pin-all-4 { top: 4px; right: 4px; bottom: 4px; left: 4px; }
.pin-top-5 { top: 5px; }
.pin-bottom-5 { bottom: 5px; }
.pin-left-5 { left: 5px; }
.pin-right-5 { right: 5px; }
.pin-all-5 { top: 5px; right: 5px; bottom: 5px; left: 5px; }
.pin-top-6 { top: 6px; }
.pin-bottom-6 { bottom: 6px; }
.pin-left-6 { left: 6px; }
.pin-right-6 { right: 6px; }
.pin-all-6 { top: 6px; right: 6px; bottom: 6px; left: 6px; }
.pin-top-8 { top: 8px; }
.pin-bottom-8 { bottom: 8px; }
.pin-left-8 { left: 8px; }
.pin-right-8 { right: 8px; }
.pin-all-8 { top: 8px; right: 8px; bottom: 8px; left: 8px; }
.pin-top-10 { top: 10px; }
.pin-bottom-10 { bottom: 10px; }
.pin-left-10 { left: 10px; }
.pin-right-10 { right: 10px; }
.pin-all-10 { top: 10px; right: 10px; bottom: 10px; left: 10px; }
.pin-top-12 { top: 12px; }
.pin-bottom-12 { bottom: 12px; }
.pin-left-12 { left: 12px; }
.pin-right-12 { right: 12px; }
.pin-all-12 { top: 12px; right: 12px; bottom: 12px; left: 12px; }
.pin-top-14 { top: 14px; }
.pin-bottom-14 { bottom: 14px; }
.pin-left-14 { left: 14px; }
.pin-right-14 { right: 14px; }
.pin-all-14 { top: 14px; right: 14px; bottom: 14px; left: 14px; }
.pin-top-16 { top: 16px; }
.pin-bottom-16 { bottom: 16px; }
.pin-left-16 { left: 16px; }
.pin-right-16 { right: 16px; }
.pin-all-16 { top: 16px; right: 16px; bottom: 16px; left: 16px; }
.pin-top-18 { top: 18px; }
.pin-bottom-18 { bottom: 18px; }
.pin-left-18 { left: 18px; }
.pin-right-18 { right: 18px; }
.pin-all-18 { top: 18px; right: 18px; bottom: 18px; left: 18px; }
.pin-top-20 { top: 20px; }
.pin-bottom-20 { bottom: 20px; }
.pin-left-20 { left: 20px; }
.pin-right-20 { right: 20px; }
.pin-all-20 { top: 20px; right: 20px; bottom: 20px; left: 20px; }
.pin-top-24 { top: 24px; }
.pin-bottom-24 { bottom: 24px; }
.pin-left-24 { left: 24px; }
.pin-right-24 { right: 24px; }
.pin-all-24 { top: 24px; right: 24px; bottom: 24px; left: 24px; }
.pin-top-28 { top: 28px; }
.pin-bottom-28 { bottom: 28px; }
.pin-left-28 { left: 28px; }
.pin-right-28 { right: 28px; }
.pin-all-28 { top: 28px; right: 28px; bottom: 28px; left: 28px; }
.pin-top-32 { top: 32px; }
.pin-bottom-32 { bottom: 32px; }
.pin-left-32 { left: 32px; }
.pin-right-32 { right: 32px; }
.pin-all-32 { top: 32px; right: 32px; bottom: 32px; left: 32px; }
.pin-top-40 { top: 40px; }
.pin-bottom-40 { bottom: 40px; }
.pin-left-40 { left: 40px; }
.pin-right-40 { right: 40px; }
.pin-all-40 { top: 40px; right: 40px; bottom: 40px; left: 40px; }
.pin-top-48 { top: 48px; }
.pin-bottom-48 { bottom: 48px; }
.pin-left-48 { left: 48px; }
.pin-right-48 { right: 48px; }
.pin-all-48 { top: 48px; right: 48px; bottom: 48px; left: 48px; }
.pin-top-56 { top: 56px; }
.pin-bottom-56 { bottom: 56px; }
.pin-left-56 { left: 56px; }
.pin-right-56 { right: 56px; }
.pin-all-56 { top: 56px; right: 56px; bottom: 56px; left: 56px; }
.pin-top-64 { top: 64px; }
.pin-bottom-64 { bottom: 64px; }
.pin-left-64 { left: 64px; }
.pin-right-64 { right: 64px; }
.pin-all-64 { top: 64px; right: 64px; bottom: 64px; left: 64px; }
.pin-top-80 { top: 80px; }
.pin-bottom-80 { bottom: 80px; }
.pin-left-80 { left: 80px; }
.pin-right-80 { right: 80px; }
.pin-all-80 { top: 80px; right: 80px; bottom: 80px; left: 80px; }
.pin-top-96 { top: 96px; }
.pin-bottom-96 { bottom: 96px; }
.pin-left-96 { left: 96px; }
.pin-right-96 { right: 96px; }
.pin-all-96 { top: 96px; right: 96px; bottom: 96px; left: 96px; }
.pin-top-128 { top: 128px; }
.pin-bottom-128 { bottom: 128px; }
.pin-left-128 { left: 128px; }
.pin-right-128 { right: 128px; }
.pin-all-128 { top: 128px; right: 128px; bottom: 128px; left: 128px; }
.pin-top-160 { top: 160px; }
.pin-bottom-160 { bottom: 160px; }
.pin-left-160 { left: 160px; }
.pin-right-160 { right: 160px; }
.pin-all-160 { top: 160px; right: 160px; bottom: 160px; left: 160px; }
.pin-top-192 { top: 192px; }
.pin-bottom-192 { bottom: 192px; }
.pin-left-192 { left: 192px; }
.pin-right-192 { right: 192px; }
.pin-all-192 { top: 192px; right: 192px; bottom: 192px; left: 192px; }
.pin-top-auto { top: auto; }
.pin-bottom-auto { bottom: auto; }
.pin-left-auto { left: auto; }
.pin-right-auto { right: auto; }
.pin-center { top: 50%; left: 50%; transform: translate(-50%, -50%); }
.pin-center-x { left: 50%; transform: translateX(-50%); }
.pin-center-y { top: 50%; transform: translateY(-50%); }
.pin-top-full { top: 100%; }
.pin-bottom-full { bottom: 100%; }
.pin-left-full { left: 100%; }
.pin-right-full { right: 100%; }
/* ── Layer (z-index) ── */
.layer-0 { z-index: 0; }
.layer-1 { z-index: 1; }
.layer-2 { z-index: 2; }
.layer-3 { z-index: 3; }
.layer-5 { z-index: 5; }
.layer-10 { z-index: 10; }
.layer-20 { z-index: 20; }
.layer-30 { z-index: 30; }
.layer-40 { z-index: 40; }
.layer-50 { z-index: 50; }
.layer-100 { z-index: 100; }
.layer-200 { z-index: 200; }
.layer-500 { z-index: 500; }
.layer-999 { z-index: 999; }
.layer-1000 { z-index: 1000; }
.layer-9999 { z-index: 9999; }
.layer-auto { z-index: auto; }
/* ── Z-index (standard aliases) ── */
.z-0 { z-index: 0; }
.z-10 { z-index: 10; }
.z-20 { z-index: 20; }
.z-30 { z-index: 30; }
.z-40 { z-index: 40; }
.z-50 { z-index: 50; }
.z-100 { z-index: 100; }
.z-auto { z-index: auto; }
/* ── Overflow ── */
.overflow-auto { overflow: auto; }
.overflow-hidden { overflow: hidden; }
.overflow-scroll { overflow: scroll; }
.overflow-visible { overflow: visible; }
.overflow-clip { overflow: clip; }
.overflow-x-auto { overflow-x: auto; }
.overflow-x-hidden { overflow-x: hidden; }
.overflow-x-scroll { overflow-x: scroll; }
.overflow-x-visible { overflow-x: visible; }
.overflow-y-auto { overflow-y: auto; }
.overflow-y-hidden { overflow-y: hidden; }
.overflow-y-scroll { overflow-y: scroll; }
.overflow-y-visible { overflow-y: visible; }
/* ── Object Fit ── */
.fit-cover { object-fit: cover; }
.fit-contain { object-fit: contain; }
.fit-fill { object-fit: fill; }
.fit-none { object-fit: none; }
.fit-scale { object-fit: scale-down; }
/* Standard object-fit-* aliases */
.object-fit-cover { object-fit: cover; }
.object-fit-contain { object-fit: contain; }
.object-fit-fill { object-fit: fill; }
.object-fit-none { object-fit: none; }
.object-fit-scale { object-fit: scale-down; }
/* ── Object Position ── */
.object-top { object-position: top; }
.object-bottom { object-position: bottom; }
.object-left { object-position: left; }
.object-right { object-position: right; }
.object-center { object-position: center; }
.object-position-top { object-position: top; }
.object-position-bottom { object-position: bottom; }
.object-position-center { object-position: center; }
.object-position-left { object-position: left; }
.object-position-right { object-position: right; }
/* ── Aspect Ratio ── */
.ratio-square { aspect-ratio: 1 / 1; }
.ratio-video { aspect-ratio: 16 / 9; }
.ratio-portrait { aspect-ratio: 9 / 16; }
.ratio-4-3 { aspect-ratio: 4 / 3; }
.ratio-3-2 { aspect-ratio: 3 / 2; }
.ratio-21-9 { aspect-ratio: 21 / 9; }
.ratio-auto { aspect-ratio: auto; }
/* Standard aspect-ratio-* aliases */
.aspect-ratio-1-1 { aspect-ratio: 1 / 1; }
.aspect-ratio-16-9 { aspect-ratio: 16 / 9; }
.aspect-ratio-4-3 { aspect-ratio: 4 / 3; }
.aspect-ratio-3-2 { aspect-ratio: 3 / 2; }
.aspect-ratio-9-16 { aspect-ratio: 9 / 16; }
.aspect-square { aspect-ratio: 1 / 1; }
.aspect-video { aspect-ratio: 16 / 9; }
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — ACCESSIBILITY UTILITIES
═══════════════════════════════════════════════════════════════════════════ */
/* ── Skip to content (keyboard / screen-reader nav) ── */
.skip-to-content {
position: absolute;
top: -100%;
left: 8px;
z-index: 9999;
padding: 8px 16px;
background-color: #1e40af;
color: #fff;
font-size: 14px;
font-weight: 600;
border-radius: 0 0 6px 6px;
text-decoration: none;
transition: top 0.15s;
}
.skip-to-content:focus { top: 0; outline: 3px solid #fbbf24; outline-offset: 2px; }
/* ── Focus ring utilities ── */
.focus-ring { outline: 2px solid #3b82f6; outline-offset: 2px; }
.focus-ring-white { outline: 2px solid #fff; outline-offset: 2px; }
.focus-ring-red { outline: 2px solid #ef4444; outline-offset: 2px; }
.focus-ring-none { outline: none; }
.focus-visible-ring:focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; }
.focus-visible-ring:focus:not(:focus-visible) { outline: none; }
/* ── Focus trap container ── */
.focus-trap { position: relative; }
.focus-trap-active { overflow: hidden; }
/* ── ARIA live regions (read by screen readers) ── */
.aria-live-polite,
.aria-live-assertive {
position: absolute;
width: 1px; height: 1px;
overflow: hidden;
clip: rect(0,0,0,0);
white-space: nowrap;
}
/* ── Screen-reader only ── */
.screen-reader-only {
position: absolute;
width: 1px; height: 1px;
padding: 0; margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
white-space: nowrap;
border: 0;
}
.screen-reader-only:focus { position: static; width: auto; height: auto; clip: auto; white-space: normal; }
/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
.motion-safe-animate { animation: none !important; transition: none !important; }
}
/* ── High contrast support ── */
@media (forced-colors: active) {
.high-contrast-border { border: 2px solid ButtonText !important; }
.high-contrast-outline { outline: 2px solid Highlight !important; }
.high-contrast-bg { background-color: ButtonFace !important; color: ButtonText !important; }
}
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — INTERNATIONALISATION (I18N) UTILITIES
═══════════════════════════════════════════════════════════════════════════ */
/* ── Logical properties (direction-aware layout) ── */
.add-padding-block-4 { padding-block: 4px; }
.add-padding-block-8 { padding-block: 8px; }
.add-padding-block-12 { padding-block: 12px; }
.add-padding-block-16 { padding-block: 16px; }
.add-padding-block-20 { padding-block: 20px; }
.add-padding-block-24 { padding-block: 24px; }
.add-padding-block-32 { padding-block: 32px; }
.add-padding-inline-4 { padding-inline: 4px; }
.add-padding-inline-8 { padding-inline: 8px; }
.add-padding-inline-12 { padding-inline: 12px; }
.add-padding-inline-16 { padding-inline: 16px; }
.add-padding-inline-20 { padding-inline: 20px; }
.add-padding-inline-24 { padding-inline: 24px; }
.add-padding-inline-32 { padding-inline: 32px; }
.add-margin-block-4 { margin-block: 4px; }
.add-margin-block-8 { margin-block: 8px; }
.add-margin-block-16 { margin-block: 16px; }
.add-margin-block-24 { margin-block: 24px; }
.add-margin-inline-4 { margin-inline: 4px; }
.add-margin-inline-8 { margin-inline: 8px; }
.add-margin-inline-16 { margin-inline: 16px; }
.add-margin-inline-24 { margin-inline: 24px; }
.pin-block-start-0 { inset-block-start: 0; }
.pin-block-end-0 { inset-block-end: 0; }
.pin-inline-start-0 { inset-inline-start: 0; }
.pin-inline-end-0 { inset-inline-end: 0; }
.set-width-logical { inline-size: 100%; }
.set-height-logical { block-size: 100%; }
.border-block-start { border-block-start: 1px solid #e5e7eb; }
.border-block-end { border-block-end: 1px solid #e5e7eb; }
.border-inline-start { border-inline-start: 1px solid #e5e7eb; }
.border-inline-end { border-inline-end: 1px solid #e5e7eb; }
/* ── Writing modes (CJK / vertical text) ── */
.make-text-vertical { writing-mode: vertical-rl; text-orientation: mixed; }
.make-text-vertical-up { writing-mode: vertical-lr; text-orientation: mixed; }
.make-text-horizontal { writing-mode: horizontal-tb; }
.text-orientation-mixed { text-orientation: mixed; }
.text-orientation-upright { text-orientation: upright; }
.text-orientation-sideways { text-orientation: sideways; }
/* ── Text direction ── */
.text-direction-ltr { direction: ltr; }
.text-direction-rtl { direction: rtl; }
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — MOBILE-FIRST COMPONENTS
═══════════════════════════════════════════════════════════════════════════ */
/* ── Safe area insets (notch / home bar) ── */
.padding-safe-top { padding-top: env(safe-area-inset-top, 0px); }
.padding-safe-bottom { padding-bottom: env(safe-area-inset-bottom, 0px); }
.padding-safe-left { padding-left: env(safe-area-inset-left, 0px); }
.padding-safe-right { padding-right: env(safe-area-inset-right, 0px); }
.padding-safe-all { padding: env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px); }
.margin-safe-bottom { margin-bottom: env(safe-area-inset-bottom, 0px); }
.pin-bottom-safe { bottom: env(safe-area-inset-bottom, 0px); }
/* ── Bottom sheet ── */
.bottom-sheet {
position: fixed;
bottom: 0; left: 0; right: 0;
background-color: #fff;
border-radius: 20px 20px 0 0;
box-shadow: 0 -4px 24px rgba(0,0,0,.12);
transform: translateY(100%);
transition: transform 0.35s cubic-bezier(0.32, 0.72, 0, 1);
z-index: 500;
padding-bottom: env(safe-area-inset-bottom, 16px);
}
.bottom-sheet.open { transform: translateY(0); }
.bottom-sheet-handle {
width: 36px; height: 4px;
background-color: #d1d5db;
border-radius: 9999px;
margin: 12px auto 8px;
}
.bottom-sheet-header {
display: flex; align-items: center; justify-content: space-between;
padding: 8px 20px 12px;
border-bottom: 1px solid #f3f4f6;
}
.bottom-sheet-title { font-size: 16px; font-weight: 600; color: #111827; }
.bottom-sheet-body { padding: 16px 20px; overflow-y: auto; max-height: 70vh; }
.bottom-sheet-footer { padding: 12px 20px; border-top: 1px solid #f3f4f6; }
.bottom-sheet-overlay {
position: fixed; inset: 0;
background-color: rgba(0,0,0,0);
z-index: 499;
pointer-events: none;
transition: background-color 0.3s;
}
.bottom-sheet-overlay.visible {
background-color: rgba(0,0,0,0.45);
pointer-events: auto;
}
/* ── Swipeable carousel ── */
.swipe-carousel {
display: flex;
overflow-x: scroll;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
gap: 12px;
padding-bottom: 4px;
}
.swipe-carousel::-webkit-scrollbar { display: none; }
.swipe-carousel-item {
flex-shrink: 0;
scroll-snap-align: start;
border-radius: 12px;
overflow: hidden;
}
.swipe-carousel-full .swipe-carousel-item { width: 100%; }
.swipe-carousel-peek .swipe-carousel-item { width: calc(100% - 32px); }
.swipe-carousel-multi .swipe-carousel-item { width: calc(50% - 6px); }
.swipe-carousel-dots { display: flex; gap: 6px; justify-content: center; padding-top: 10px; }
.swipe-carousel-dot { width: 6px; height: 6px; border-radius: 50%; background-color: #d1d5db; transition: background-color 0.2s, width 0.2s; }
.swipe-carousel-dot.active { background-color: #3b82f6; width: 18px; border-radius: 3px; }
/* ── Pull-to-refresh indicator ── */
.pull-to-refresh {
display: flex; align-items: center; justify-content: center;
height: 0; overflow: hidden;
transition: height 0.2s;
font-size: 13px; color: #6b7280; gap: 8px;
}
.pull-to-refresh.pulling,
.pull-to-refresh.refreshing { height: 48px; }
.pull-to-refresh-spinner {
width: 18px; height: 18px;
border: 2px solid #e5e7eb;
border-top-color: #3b82f6;
border-radius: 50%;
}
.pull-to-refresh.refreshing .pull-to-refresh-spinner { animation: santy-spin 0.7s linear infinite; }
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — COMMAND PALETTE
═══════════════════════════════════════════════════════════════════════════ */
.command-palette-wrap {
position: fixed; inset: 0;
background-color: rgba(0,0,0,0.5);
display: none;
align-items: flex-start; justify-content: center;
padding-top: 80px;
z-index: 900;
}
.command-palette-wrap.open { display: flex; }
.command-palette {
width: 100%; max-width: 560px;
background-color: #fff;
border-radius: 14px;
box-shadow: 0 24px 48px rgba(0,0,0,.22);
overflow: hidden;
}
.command-palette-input-row {
display: flex; align-items: center; gap: 10px;
padding: 14px 16px;
border-bottom: 1px solid #e5e7eb;
}
.command-palette-icon { color: #9ca3af; flex-shrink: 0; }
.command-palette-input {
flex: 1; border: none; outline: none;
font-size: 16px; color: #111827; background: transparent;
}
.command-palette-input::placeholder { color: #9ca3af; }
.command-palette-kbd {
font-size: 11px; color: #6b7280;
background-color: #f3f4f6; border: 1px solid #d1d5db;
border-radius: 4px; padding: 2px 6px; font-family: inherit;
}
.command-palette-list { max-height: 360px; overflow-y: auto; padding: 8px; }
.command-palette-group-label {
font-size: 11px; font-weight: 600; color: #6b7280;
text-transform: uppercase; letter-spacing: 0.06em;
padding: 8px 10px 4px;
}
.command-palette-item {
display: flex; align-items: center; gap: 10px;
padding: 10px; border-radius: 8px;
cursor: pointer; font-size: 14px; color: #111827;
transition: background-color 0.1s;
}
.command-palette-item:hover,
.command-palette-item.selected { background-color: #eff6ff; color: #1d4ed8; }
.command-palette-item-icon {
width: 28px; height: 28px; border-radius: 6px;
background-color: #f3f4f6;
display: flex; align-items: center; justify-content: center;
font-size: 14px; flex-shrink: 0;
}
.command-palette-item-label { flex: 1; }
.command-palette-item-shortcut { font-size: 12px; color: #9ca3af; }
.command-palette-empty { text-align: center; padding: 32px 16px; color: #9ca3af; font-size: 14px; }
.command-palette-footer {
display: flex; gap: 12px; align-items: center;
padding: 10px 16px; border-top: 1px solid #f3f4f6;
font-size: 12px; color: #9ca3af;
}
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — DATE PICKER / CALENDAR
═══════════════════════════════════════════════════════════════════════════ */
.date-picker {
display: inline-block;
background-color: #fff;
border: 1px solid #e5e7eb;
border-radius: 12px;
box-shadow: 0 8px 24px rgba(0,0,0,.1);
padding: 16px;
user-select: none;
width: 280px;
}
.date-picker-header {
display: flex; align-items: center; justify-content: space-between;
margin-bottom: 12px;
}
.date-picker-month-year { font-size: 15px; font-weight: 600; color: #111827; }
.date-picker-nav {
width: 28px; height: 28px;
border: none; background: transparent;
border-radius: 6px; cursor: pointer;
display: flex; align-items: center; justify-content: center;
color: #6b7280; font-size: 14px;
transition: background-color 0.15s;
}
.date-picker-nav:hover { background-color: #f3f4f6; }
.date-picker-weekdays {
display: grid; grid-template-columns: repeat(7, 1fr);
text-align: center;
font-size: 11px; font-weight: 600; color: #6b7280;
text-transform: uppercase; letter-spacing: 0.04em;
margin-bottom: 6px;
}
.date-picker-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.date-picker-day {
aspect-ratio: 1;
display: flex; align-items: center; justify-content: center;
font-size: 13px; color: #374151;
border-radius: 6px; cursor: pointer;
transition: background-color 0.12s, color 0.12s;
}
.date-picker-day:hover { background-color: #eff6ff; color: #1d4ed8; }
.date-picker-day.today { font-weight: 700; color: #2563eb; }
.date-picker-day.selected { background-color: #2563eb; color: #fff; }
.date-picker-day.selected:hover { background-color: #1d4ed8; }
.date-picker-day.in-range { background-color: #dbeafe; color: #1d4ed8; border-radius: 0; }
.date-picker-day.range-start { border-radius: 6px 0 0 6px; background-color: #2563eb; color: #fff; }
.date-picker-day.range-end { border-radius: 0 6px 6px 0; background-color: #2563eb; color: #fff; }
.date-picker-day.other-month { color: #d1d5db; }
.date-picker-day.disabled { color: #e5e7eb; cursor: not-allowed; pointer-events: none; }
.date-picker-footer {
display: flex; gap: 8px; justify-content: flex-end;
margin-top: 12px; padding-top: 12px;
border-top: 1px solid #f3f4f6;
}
/* ═══════════════════════════════════════════════════════════════════════════
v1.7 — CUSTOM PROPERTY SHORTHAND TOKENS
═══════════════════════════════════════════════════════════════════════════ */
.use-custom-spacing { gap: var(--sc-gap, 16px); padding: var(--sc-padding, 16px); }
.use-custom-radius { border-radius: var(--sc-radius, 8px); }
.use-custom-color { color: var(--sc-color, inherit); background-color: var(--sc-bg, transparent); }
.use-custom-size { width: var(--sc-width, auto); height: var(--sc-height, auto); }
.use-custom-font { font-size: var(--sc-font-size, 1rem); font-weight: var(--sc-font-weight, 400); }
[data-story] { display: block; padding: 24px; }
[data-story-bg="white"] { background-color: #fff; }
[data-story-bg="gray"] { background-color: #f9fafb; }
[data-story-bg="dark"] { background-color: #111827; }
/* ═══════════════════════════════════════════════════════════════════════════
v1.9 — SCROLL, SCROLLBAR, GLASS & NEW ANIMATIONS
═══════════════════════════════════════════════════════════════════════════ */
.scroll-smooth { scroll-behavior: smooth; }
.scroll-auto { scroll-behavior: auto; }
.scrollbar-thin::-webkit-scrollbar { width:4px; height:4px; }
.scrollbar-thin::-webkit-scrollbar-track { background:transparent; }
.scrollbar-thin::-webkit-scrollbar-thumb { background:#d1d5db; border-radius:4px; }
.scrollbar-thin { scrollbar-width:thin; scrollbar-color:#d1d5db transparent; }
.scrollbar-dark::-webkit-scrollbar { width:4px; height:4px; }
.scrollbar-dark::-webkit-scrollbar-track { background:#09090b; }
.scrollbar-dark::-webkit-scrollbar-thumb { background:#3f3f46; border-radius:4px; }
.scrollbar-dark { scrollbar-width:thin; scrollbar-color:#3f3f46 #09090b; }
.scrollbar-hidden { -ms-overflow-style:none; scrollbar-width:none; }
.scrollbar-hidden::-webkit-scrollbar { display:none; }
.glass { background:rgba(255,255,255,0.1); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,0.15); }
.glass-dark { background:rgba(9,9,11,0.85); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,0.08); }
.glass-light { background:rgba(255,255,255,0.7); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid rgba(255,255,255,0.5); }
.gradient-radial { background:radial-gradient(circle, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-top { background:radial-gradient(ellipse at top, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-bottom { background:radial-gradient(ellipse at bottom, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-tl { background:radial-gradient(ellipse at top left, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-tr { background:radial-gradient(ellipse at top right, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-bl { background:radial-gradient(ellipse at bottom left, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
.gradient-radial-br { background:radial-gradient(ellipse at bottom right, var(--grad-from,#6366f1) 0%, var(--grad-to,transparent) 70%); }
@keyframes santy-spin-ccw { from{transform:rotate(0deg)} to{transform:rotate(-360deg)} }
.animate-spin-slow { animation:santy-spin 3s linear infinite; }
.animate-spin-fast { animation:santy-spin 0.4s linear infinite; }
.animate-spin-cw { animation:santy-spin 1s linear infinite; }
.animate-spin-ccw { animation:santy-spin-ccw 1s linear infinite; }
.animate-spin-slow-cw { animation:santy-spin 3s linear infinite; }
.animate-spin-slow-ccw { animation:santy-spin-ccw 3s linear infinite; }
.animate-spin-xslow-cw { animation:santy-spin 8s linear infinite; }
.animate-spin-xslow-ccw { animation:santy-spin-ccw 8s linear infinite; }
@keyframes santy-pulse-dot { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.45;transform:scale(.75)} }
.animate-pulse-dot { animation:santy-pulse-dot 2s ease-in-out infinite; }
.skill-bar-animated { transition:width 1.2s cubic-bezier(.4,0,.2,1); }
/* ─────────────────────────────────────────────────────────────────────────────
🦇 CREATURE ANIMATIONS v2.0 — Premium Free
10 hand-crafted creature animations: bat, butterfly, firefly, spider, fish,
jellyfish, bird-flock, bee, snake, dragon.
───────────────────────────────────────────────────────────────────────────── */
/* 1 ── Bat flying ──────────────────────────────────────────────────────────── */
@keyframes santy-bat-fly {
0% { transform: translate(-28px, 0px) rotate(-6deg); }
15% { transform: translate(-14px, -16px) rotate(4deg); }
30% { transform: translate(0px, 4px) rotate(-8deg); }
45% { transform: translate(14px, -14px) rotate(5deg); }
60% { transform: translate(26px, 2px) rotate(-6deg); }
75% { transform: translate(14px, -10px) rotate(4deg); }
90% { transform: translate(0px, 6px) rotate(-5deg); }
100% { transform: translate(-28px, 0px) rotate(-6deg); }
}
@keyframes santy-bat-wing-l {
0%, 100% { transform: rotate(-15deg) scaleY(1); }
50% { transform: rotate(50deg) scaleY(0.35); }
}
@keyframes santy-bat-wing-r {
0%, 100% { transform: rotate(15deg) scaleY(1); }
50% { transform: rotate(-50deg) scaleY(0.35); }
}
/* Legacy single-class wing shorthand */
@keyframes santy-bat-wings {
0%, 100% { transform: scaleY(1); }
50% { transform: scaleY(0.2) rotate(6deg); }
}
.animate-bat-fly { animation: santy-bat-fly 1.6s ease-in-out infinite; }
.animate-bat-wings { animation: santy-bat-wings 0.22s ease-in-out infinite; }
/* CSS bat component — use with <div class="bat-creature animate-bat-fly"> */
.bat-creature {
position: relative; display: inline-block;
width: 64px; height: 28px; color: #6d28d9;
perspective: 120px;
}
.bat-creature .bat-wing-l,
.bat-creature .bat-wing-r {
position: absolute; top: 0;
width: 28px; height: 100%;
background: currentColor;
}
.bat-creature .bat-wing-l {
left: 0;
border-radius: 80% 0 40% 40%;
transform-origin: right center;
animation: santy-bat-wing-l 0.28s ease-in-out infinite;
}
.bat-creature .bat-wing-r {
right: 0;
border-radius: 0 80% 40% 40%;
transform-origin: left center;
animation: santy-bat-wing-r 0.28s ease-in-out infinite;
}
.bat-creature .bat-body {
position: absolute; z-index: 2;
width: 16px; height: 14px;
background: currentColor;
border-radius: 50%;
top: 50%; left: 50%;
transform: translate(-50%, -40%);
}
.bat-creature .bat-ear-l,
.bat-creature .bat-ear-r {
position: absolute; top: 2px; z-index: 3;
width: 0; height: 0; border-style: solid;
}
.bat-creature .bat-ear-l {
left: 22px;
border-width: 0 5px 8px 0;
border-color: transparent currentColor transparent transparent;
}
.bat-creature .bat-ear-r {
right: 22px;
border-width: 0 0 8px 5px;
border-color: transparent transparent transparent currentColor;
}
/* 1b ── Bat pixel art ──────────────────────────────────────────────────────── */
/* Colors: #54556b = outline, #202020 = body, #fff = eyes */
@keyframes bat-pixel-anim {
0% {
box-shadow:
33px 6px #54556b,34px 6px #54556b,35px 6px #54556b,36px 6px #54556b,
20px 7px #54556b,21px 7px #54556b,22px 7px #54556b,23px 7px #54556b,33px 7px #54556b,34px 7px #54556b,35px 7px #202020,36px 7px #202020,37px 7px #54556b,38px 7px #54556b,39px 7px #54556b,43px 7px #54556b,
20px 8px #54556b,21px 8px #54556b,22px 8px #54556b,23px 8px #54556b,33px 8px #54556b,34px 8px #54556b,35px 8px #202020,36px 8px #202020,37px 8px #54556b,38px 8px #54556b,39px 8px #54556b,43px 8px #54556b,
17px 9px #54556b,18px 9px #54556b,19px 9px #54556b,20px 9px #54556b,35px 9px #54556b,36px 9px #202020,37px 9px #202020,38px 9px #202020,39px 9px #202020,40px 9px #54556b,41px 9px #54556b,42px 9px #54556b,43px 9px #202020,44px 9px #54556b,45px 9px #54556b,
16px 10px #54556b,17px 10px #202020,18px 10px #202020,19px 10px #202020,20px 10px #54556b,36px 10px #54556b,37px 10px #202020,38px 10px #202020,39px 10px #202020,40px 10px #202020,41px 10px #202020,42px 10px #202020,43px 10px #202020,44px 10px #54556b,45px 10px #54556b,
16px 11px #54556b,17px 11px #202020,18px 11px #202020,19px 11px #202020,20px 11px #54556b,36px 11px #54556b,37px 11px #202020,38px 11px #202020,39px 11px #202020,40px 11px #202020,41px 11px #202020,42px 11px #202020,43px 11px #202020,44px 11px #54556b,45px 11px #54556b,
13px 12px #54556b,14px 12px #54556b,15px 12px #54556b,16px 12px #202020,17px 12px #202020,18px 12px #54556b,19px 12px #54556b,20px 12px #54556b,36px 12px #54556b,37px 12px #54556b,38px 12px #54556b,39px 12px #202020,40px 12px #202020,41px 12px #202020,42px 12px #202020,43px 12px #202020,44px 12px #54556b,45px 12px #54556b,
12px 13px #54556b,13px 13px #202020,14px 13px #202020,15px 13px #202020,16px 13px #202020,17px 13px #202020,18px 13px #54556b,19px 13px #54556b,37px 13px #54556b,38px 13px #54556b,39px 13px #202020,40px 13px #202020,41px 13px #202020,42px 13px #202020,43px 13px #202020,44px 13px #202020,45px 13px #202020,46px 13px #54556b,
10px 14px #54556b,11px 14px #54556b,12px 14px #202020,13px 14px #202020,14px 14px #202020,15px 14px #202020,16px 14px #202020,17px 14px #54556b,36px 14px #54556b,37px 14px #54556b,38px 14px #54556b,39px 14px #202020,40px 14px #202020,41px 14px #202020,42px 14px #202020,43px 14px #202020,44px 14px #202020,45px 14px #202020,46px 14px #202020,47px 14px #54556b,
10px 15px #54556b,11px 15px #54556b,12px 15px #202020,13px 15px #202020,14px 15px #202020,15px 15px #202020,16px 15px #202020,17px 15px #54556b,36px 15px #54556b,37px 15px #54556b,38px 15px #54556b,39px 15px #202020,40px 15px #202020,41px 15px #202020,42px 15px #202020,43px 15px #202020,44px 15px #202020,45px 15px #202020,46px 15px #202020,47px 15px #54556b,
10px 16px #54556b,11px 16px #54556b,12px 16px #202020,13px 16px #202020,14px 16px #202020,15px 16px #202020,16px 16px #202020,17px 16px #54556b,35px 16px #54556b,36px 16px #54556b,37px 16px #202020,38px 16px #202020,39px 16px #202020,40px 16px #202020,41px 16px #202020,42px 16px #202020,43px 16px #202020,44px 16px #202020,45px 16px #202020,46px 16px #202020,47px 16px #54556b,
9px 17px #54556b,10px 17px #202020,11px 17px #202020,12px 17px #202020,13px 17px #202020,14px 17px #202020,15px 17px #202020,16px 17px #202020,17px 17px #54556b,37px 17px #54556b,38px 17px #54556b,39px 17px #202020,40px 17px #202020,41px 17px #202020,42px 17px #202020,43px 17px #202020,44px 17px #202020,45px 17px #202020,46px 17px #202020,47px 17px #202020,48px 17px #54556b,49px 17px #54556b,51px 17px #54556b,
7px 18px #54556b,8px 18px #54556b,9px 18px #54556b,10px 18px #202020,11px 18px #202020,12px 18px #202020,13px 18px #202020,14px 18px #202020,15px 18px #202020,16px 18px #202020,17px 18px #54556b,20px 18px #54556b,37px 18px #54556b,38px 18px #54556b,39px 18px #202020,40px 18px #202020,41px 18px #202020,42px 18px #202020,43px 18px #202020,44px 18px #202020,45px 18px #202020,46px 18px #202020,47px 18px #202020,48px 18px #54556b,49px 18px #54556b,51px 18px #202020,
7px 19px #54556b,8px 19px #54556b,9px 19px #54556b,10px 19px #202020,11px 19px #202020,12px 19px #202020,13px 19px #202020,14px 19px #202020,15px 19px #202020,16px 19px #202020,17px 19px #54556b,20px 19px #54556b,37px 19px #54556b,38px 19px #54556b,39px 19px #202020,40px 19px #202020,41px 19px #202020,42px 19px #202020,43px 19px #202020,44px 19px #202020,45px 19px #202020,46px 19px #202020,47px 19px #202020,48px 19px #54556b,49px 19px #54556b,51px 19px #202020,
7px 20px #54556b,8px 20px #54556b,9px 20px #202020,10px 20px #202020,11px 20px #202020,12px 20px #202020,13px 20px #202020,14px 20px #202020,15px 20px #202020,16px 20px #202020,17px 20px #202020,18px 20px #54556b,19px 20px #54556b,20px 20px #202020,21px 20px #54556b,36px 20px #54556b,37px 20px #202020,38px 20px #202020,39px 20px #202020,40px 20px #202020,41px 20px #202020,42px 20px #202020,43px 20px #202020,44px 20px #202020,45px 20px #202020,46px 20px #202020,47px 20px #202020,48px 20px #54556b,49px 20px #54556b,54px 20px #54556b,55px 20px #54556b,
9px 21px #54556b,10px 21px #202020,11px 21px #202020,12px 21px #202020,13px 21px #202020,14px 21px #202020,15px 21px #202020,16px 21px #202020,17px 21px #202020,18px 21px #202020,19px 21px #202020,20px 21px #202020,21px 21px #54556b,35px 21px #54556b,36px 21px #54556b,37px 21px #202020,38px 21px #202020,39px 21px #202020,40px 21px #202020,41px 21px #202020,42px 21px #202020,43px 21px #202020,44px 21px #202020,45px 21px #202020,46px 21px #202020,47px 21px #202020,48px 21px #54556b,49px 21px #54556b,52px 21px #54556b,53px 21px #54556b,54px 21px #202020,55px 21px #202020,56px 21px #54556b,57px 21px #54556b,
9px 22px #54556b,10px 22px #202020,11px 22px #202020,12px 22px #202020,13px 22px #202020,14px 22px #202020,15px 22px #202020,16px 22px #202020,17px 22px #202020,18px 22px #202020,19px 22px #202020,20px 22px #54556b,32px 22px #54556b,33px 22px #54556b,34px 22px #54556b,35px 22px #202020,36px 22px #202020,37px 22px #202020,38px 22px #202020,39px 22px #202020,40px 22px #202020,41px 22px #202020,42px 22px #202020,43px 22px #202020,44px 22px #202020,45px 22px #202020,46px 22px #202020,47px 22px #54556b,48px 22px #54556b,49px 22px #54556b,50px 22px #54556b,52px 22px #54556b,53px 22px #54556b,54px 22px #202020,55px 22px #202020,56px 22px #54556b,57px 22px #54556b,
9px 23px #54556b,10px 23px #202020,11px 23px #202020,12px 23px #202020,13px 23px #202020,14px 23px #202020,15px 23px #202020,16px 23px #202020,17px 23px #202020,18px 23px #202020,19px 23px #202020,20px 23px #54556b,32px 23px #54556b,33px 23px #54556b,34px 23px #54556b,35px 23px #202020,36px 23px #202020,37px 23px #202020,38px 23px #202020,39px 23px #202020,40px 23px #202020,41px 23px #202020,42px 23px #202020,43px 23px #202020,44px 23px #202020,45px 23px #202020,46px 23px #202020,47px 23px #54556b,48px 23px #54556b,49px 23px #54556b,50px 23px #54556b,52px 23px #54556b,53px 23px #54556b,54px 23px #202020,55px 23px #202020,56px 23px #54556b,57px 23px #54556b,
9px 24px #54556b,10px 24px #202020,11px 24px #202020,12px 24px #202020,13px 24px #202020,14px 24px #202020,15px 24px #202020,16px 24px #202020,17px 24px #202020,18px 24px #54556b,19px 24px #54556b,32px 24px #54556b,33px 24px #202020,34px 24px #202020,35px 24px #202020,36px 24px #202020,37px 24px #202020,38px 24px #202020,39px 24px #202020,40px 24px #202020,41px 24px #202020,42px 24px #202020,43px 24px #202020,44px 24px #202020,45px 24px #202020,46px 24px #202020,47px 24px #54556b,48px 24px #202020,49px 24px #202020,50px 24px #54556b,54px 24px #54556b,55px 24px #54556b,
7px 25px #54556b,8px 25px #54556b,9px 25px #202020,10px 25px #202020,11px 25px #202020,12px 25px #202020,13px 25px #202020,14px 25px #202020,15px 25px #202020,16px 25px #202020,17px 25px #202020,18px 25px #54556b,19px 25px #54556b,21px 25px #54556b,28px 25px #54556b,33px 25px #54556b,34px 25px #54556b,35px 25px #202020,36px 25px #202020,37px 25px #202020,38px 25px #202020,39px 25px #202020,40px 25px #202020,41px 25px #202020,42px 25px #202020,43px 25px #202020,44px 25px #202020,45px 25px #202020,46px 25px #202020,47px 25px #202020,48px 25px #202020,49px 25px #202020,50px 25px #54556b,54px 25px #202020,
7px 26px #54556b,8px 26px #54556b,9px 26px #202020,10px 26px #202020,11px 26px #202020,12px 26px #202020,13px 26px #202020,14px 26px #202020,15px 26px #202020,16px 26px #202020,17px 26px #202020,18px 26px #54556b,19px 26px #54556b,21px 26px #54556b,28px 26px #54556b,33px 26px #54556b,34px 26px #54556b,35px 26px #202020,36px 26px #202020,37px 26px #202020,38px 26px #202020,39px 26px #202020,40px 26px #202020,41px 26px #202020,42px 26px #202020,43px 26px #202020,44px 26px #202020,45px 26px #202020,46px 26px #202020,47px 26px #202020,48px 26px #202020,49px 26px #202020,50px 26px #54556b,54px 26px #202020,
3px 27px #54556b,4px 27px #54556b,5px 27px #54556b,9px 27px #54556b,10px 27px #202020,11px 27px #202020,12px 27px #202020,13px 27px #202020,14px 27px #202020,15px 27px #202020,16px 27px #202020,17px 27px #54556b,20px 27px #54556b,21px 27px #202020,22px 27px #54556b,23px 27px #54556b,27px 27px #54556b,28px 27px #202020,35px 27px #54556b,36px 27px #202020,37px 27px #202020,38px 27px #202020,39px 27px #202020,40px 27px #202020,41px 27px #202020,42px 27px #202020,43px 27px #202020,44px 27px #202020,45px 27px #202020,46px 27px #202020,47px 27px #202020,48px 27px #54556b,49px 27px #54556b,
1px 28px #54556b,2px 28px #54556b,3px 28px #202020,4px 28px #202020,5px 28px #202020,6px 28px #54556b,9px 28px #54556b,10px 28px #54556b,11px 28px #54556b,12px 28px #202020,13px 28px #202020,14px 28px #202020,15px 28px #202020,16px 28px #202020,17px 28px #54556b,20px 28px #54556b,21px 28px #202020,22px 28px #54556b,23px 28px #54556b,25px 28px #54556b,26px 28px #54556b,27px 28px #202020,28px 28px #202020,29px 28px #54556b,30px 28px #54556b,33px 28px #54556b,34px 28px #54556b,35px 28px #54556b,36px 28px #202020,37px 28px #202020,38px 28px #202020,39px 28px #202020,40px 28px #202020,41px 28px #202020,42px 28px #202020,43px 28px #202020,44px 28px #202020,45px 28px #202020,46px 28px #202020,47px 28px #202020,48px 28px #54556b,49px 28px #54556b,
1px 29px #54556b,2px 29px #54556b,3px 29px #202020,4px 29px #202020,5px 29px #202020,6px 29px #54556b,10px 29px #54556b,11px 29px #54556b,12px 29px #202020,13px 29px #202020,14px 29px #202020,15px 29px #202020,16px 29px #202020,17px 29px #54556b,18px 29px #54556b,19px 29px #54556b,20px 29px #202020,21px 29px #202020,22px 29px #202020,23px 29px #202020,24px 29px #54556b,25px 29px #54556b,26px 29px #54556b,27px 29px #202020,28px 29px #202020,29px 29px #202020,30px 29px #202020,31px 29px #54556b,32px 29px #54556b,33px 29px #54556b,34px 29px #54556b,35px 29px #202020,36px 29px #202020,37px 29px #202020,38px 29px #202020,39px 29px #202020,40px 29px #202020,41px 29px #202020,42px 29px #202020,43px 29px #202020,44px 29px #202020,45px 29px #202020,46px 29px #202020,47px 29px #54556b,52px 29px #54556b,53px 29px #54556b,54px 29px #54556b,
1px 30px #54556b,2px 30px #54556b,3px 30px #202020,4px 30px #202020,5px 30px #202020,6px 30px #54556b,10px 30px #54556b,11px 30px #54556b,12px 30px #202020,13px 30px #202020,14px 30px #202020,15px 30px #202020,16px 30px #202020,17px 30px #54556b,18px 30px #54556b,19px 30px #54556b,20px 30px #202020,21px 30px #202020,22px 30px #202020,23px 30px #202020,24px 30px #54556b,25px 30px #54556b,26px 30px #54556b,27px 30px #202020,28px 30px #202020,29px 30px #202020,30px 30px #202020,31px 30px #54556b,32px 30px #54556b,33px 30px #54556b,34px 30px #54556b,35px 30px #202020,36px 30px #202020,37px 30px #202020,38px 30px #202020,39px 30px #202020,40px 30px #202020,41px 30px #202020,42px 30px #202020,43px 30px #202020,44px 30px #202020,45px 30px #202020,46px 30px #202020,47px 30px #54556b,52px 30px #54556b,53px 30px #54556b,54px 30px #54556b,
3px 31px #54556b,4px 31px #54556b,5px 31px #54556b,7px 31px #202020,8px 31px #202020,9px 31px #202020,10px 31px #54556b,11px 31px #54556b,12px 31px #202020,13px 31px #202020,14px 31px #202020,15px 31px #202020,16px 31px #202020,17px 31px #54556b,18px 31px #202020,19px 31px #202020,20px 31px #202020,21px 31px #202020,22px 31px #202020,23px 31px #202020,24px 31px #54556b,25px 31px #202020,26px 31px #202020,27px 31px #202020,28px 31px #202020,29px 31px #202020,30px 31px #202020,31px 31px #202020,32px 31px #54556b,33px 31px #54556b,34px 31px #54556b,35px 31px #202020,36px 31px #202020,37px 31px #202020,38px 31px #202020,39px 31px #202020,40px 31px #202020,41px 31px #202020,42px 31px #202020,43px 31px #202020,44px 31px #202020,45px 31px #202020,46px 31px #202020,47px 31px #54556b,52px 31px #202020,53px 31px #202020,54px 31px #202020,
7px 32px #202020,8px 32px #202020,9px 32px #54556b,12px 32px #54556b,13px 32px #202020,14px 32px #202020,15px 32px #202020,16px 32px #202020,17px 32px #202020,18px 32px #202020,19px 32px #202020,20px 32px #202020,21px 32px #202020,22px 32px #202020,23px 32px #202020,24px 32px #202020,25px 32px #202020,26px 32px #202020,27px 32px #202020,28px 32px #202020,29px 32px #202020,30px 32px #202020,31px 32px #202020,32px 32px #202020,33px 32px #202020,34px 32px #202020,35px 32px #202020,36px 32px #202020,37px 32px #202020,38px 32px #202020,39px 32px #202020,40px 32px #202020,41px 32px #202020,42px 32px #202020,43px 32px #202020,44px 32px #202020,45px 32px #202020,46px 32px #54556b,51px 32px #54556b,52px 32px #202020,53px 32px #202020,54px 32px #54556b,
13px 33px #54556b,14px 33px #202020,15px 33px #202020,16px 33px #202020,17px 33px #202020,18px 33px #202020,19px 33px #202020,20px 33px #202020,21px 33px #202020,22px 33px #202020,23px 33px #202020,24px 33px #202020,25px 33px #202020,26px 33px #202020,27px 33px #202020,28px 33px #202020,29px 33px #202020,30px 33px #202020,31px 33px #202020,32px 33px #202020,33px 33px #202020,34px 33px #202020,35px 33px #202020,36px 33px #202020,37px 33px #202020,38px 33px #202020,39px 33px #202020,40px 33px #202020,41px 33px #202020,42px 33px #202020,43px 33px #54556b,44px 33px #54556b,45px 33px #54556b,
13px 34px #54556b,14px 34px #202020,15px 34px #202020,16px 34px #202020,17px 34px #202020,18px 34px #202020,19px 34px #202020,20px 34px #202020,21px 34px #202020,22px 34px #202020,23px 34px #202020,24px 34px #202020,25px 34px #202020,26px 34px #202020,27px 34px #202020,28px 34px #202020,29px 34px #202020,30px 34px #202020,31px 34px #202020,32px 34px #202020,33px 34px #202020,34px 34px #202020,35px 34px #202020,36px 34px #202020,37px 34px #202020,38px 34px #202020,39px 34px #202020,40px 34px #202020,41px 34px #202020,42px 34px #202020,43px 34px #54556b,44px 34px #54556b,45px 34px #54556b,
13px 35px #54556b,14px 35px #54556b,15px 35px #54556b,16px 35px #54556b,17px 35px #202020,18px 35px #202020,19px 35px #202020,20px 35px #202020,21px 35px #202020,22px 35px #202020,23px 35px #202020,24px 35px #202020,25px 35px #202020,26px 35px #202020,27px 35px #202020,28px 35px #202020,29px 35px #202020,30px 35px #202020,31px 35px #202020,32px 35px #202020,33px 35px #202020,34px 35px #202020,35px 35px #202020,36px 35px #202020,37px 35px #202020,38px 35px #202020,39px 35px #54556b,40px 35px #54556b,41px 35px #54556b,42px 35px #54556b,
7px 36px #54556b,8px 36px #54556b,9px 36px #54556b,12px 36px #202020,14px 36px #54556b,15px 36px #54556b,16px 36px #54556b,17px 36px #202020,18px 36px #202020,19px 36px #202020,20px 36px #202020,21px 36px #202020,22px 36px #202020,23px 36px #202020,24px 36px #202020,25px 36px #202020,26px 36px #202020,27px 36px #202020,28px 36px #202020,29px 36px #202020,30px 36px #202020,31px 36px #202020,32px 36px #202020,33px 36px #202020,34px 36px #202020,35px 36px #202020,36px 36px #202020,37px 36px #54556b,38px 36px #54556b,39px 36px #54556b,
6px 37px #54556b,7px 37px #202020,8px 37px #202020,9px 37px #202020,10px 37px #202020,11px 37px #202020,16px 37px #54556b,17px 37px #202020,18px 37px #202020,19px 37px #202020,20px 37px #fff,21px 37px #202020,22px 37px #202020,23px 37px #202020,24px 37px #202020,25px 37px #fff,26px 37px #fff,27px 37px #fff,28px 37px #202020,29px 37px #202020,30px 37px #202020,31px 37px #202020,32px 37px #202020,33px 37px #202020,34px 37px #202020,35px 37px #202020,36px 37px #54556b,37px 37px #202020,38px 37px #202020,39px 37px #54556b,40px 37px #54556b,41px 37px #54556b,42px 37px #54556b,43px 37px #54556b,44px 37px #202020,45px 37px #202020,46px 37px #54556b,
6px 38px #54556b,7px 38px #202020,8px 38px #202020,9px 38px #202020,10px 38px #202020,11px 38px #202020,16px 38px #54556b,17px 38px #202020,18px 38px #202020,19px 38px #202020,20px 38px #fff,21px 38px #202020,22px 38px #202020,23px 38px #202020,24px 38px #202020,25px 38px #fff,26px 38px #fff,27px 38px #fff,28px 38px #202020,29px 38px #202020,30px 38px #202020,31px 38px #202020,32px 38px #202020,33px 38px #202020,34px 38px #202020,35px 38px #202020,36px 38px #54556b,37px 38px #202020,38px 38px #202020,39px 38px #54556b,40px 38px #54556b,41px 38px #54556b,42px 38px #54556b,43px 38px #54556b,44px 38px #202020,45px 38px #202020,46px 38px #54556b,
7px 39px #202020,8px 39px #202020,9px 39px #202020,10px 39px #54556b,11px 39px #54556b,13px 39px #202020,17px 39px #54556b,18px 39px #202020,19px 39px #202020,20px 39px #fff,21px 39px #202020,22px 39px #202020,23px 39px #202020,24px 39px #202020,25px 39px #fff,26px 39px #fff,27px 39px #fff,28px 39px #202020,29px 39px #202020,30px 39px #202020,31px 39px #202020,32px 39px #202020,33px 39px #202020,34px 39px #202020,35px 39px #202020,36px 39px #202020,37px 39px #202020,38px 39px #202020,39px 39px #202020,40px 39px #202020,41px 39px #202020,42px 39px #202020,43px 39px #202020,44px 39px #54556b,45px 39px #54556b,
17px 40px #54556b,18px 40px #202020,19px 40px #202020,20px 40px #202020,21px 40px #202020,22px 40px #202020,23px 40px #202020,24px 40px #202020,25px 40px #202020,26px 40px #202020,27px 40px #202020,28px 40px #202020,29px 40px #202020,30px 40px #202020,31px 40px #202020,32px 40px #202020,33px 40px #202020,34px 40px #202020,35px 40px #202020,36px 40px #202020,37px 40px #202020,38px 40px #202020,39px 40px #202020,40px 40px #202020,41px 40px #54556b,42px 40px #54556b,43px 40px #54556b,
18px 41px #54556b,19px 41px #54556b,20px 41px #202020,21px 41px #202020,22px 41px #202020,23px 41px #202020,24px 41px #202020,25px 41px #202020,26px 41px #202020,27px 41px #202020,28px 41px #202020,29px 41px #202020,30px 41px #202020,31px 41px #202020,32px 41px #202020,33px 41px #202020,34px 41px #202020,35px 41px #202020,36px 41px #54556b,37px 41px #54556b,38px 41px #54556b,39px 41px #54556b,40px 41px #54556b,
18px 42px #54556b,19px 42px #54556b,20px 42px #202020,21px 42px #202020,22px 42px #202020,23px 42px #202020,24px 42px #202020,25px 42px #202020,26px 42px #202020,27px 42px #202020,28px 42px #202020,29px 42px #202020,30px 42px #202020,31px 42px #202020,32px 42px #202020,33px 42px #202020,34px 42px #202020,35px 42px #202020,36px 42px #54556b,37px 42px #54556b,38px 42px #54556b,39px 42px #54556b,40px 42px #54556b,
20px 43px #54556b,21px 43px #54556b,22px 43px #202020,23px 43px #202020,24px 43px #202020,25px 43px #202020,26px 43px #202020,27px 43px #202020,28px 43px #202020,29px 43px #202020,30px 43px #202020,31px 43px #202020,32px 43px #54556b,33px 43px #54556b,34px 43px #54556b,35px 43px #54556b,36px 43px #54556b,
22px 44px #54556b,23px 44px #54556b,24px 44px #54556b,25px 44px #54556b,26px 44px #54556b,27px 44px #54556b,28px 44px #54556b,29px 44px #54556b,30px 44px #54556b,31px 44px #54556b,32px 44px #54556b,
22px 45px #54556b,23px 45px #54556b,24px 45px #54556b,25px 45px #54556b,26px 45px #54556b,27px 45px #54556b,28px 45px #54556b,29px 45px #54556b,30px 45px #54556b,31px 45px #54556b,32px 45px #54556b,
52px 46px #202020,53px 46px #202020,51px 47px #202020,52px 47px #202020,53px 47px #202020,21px 50px #202020,21px 51px #202020;
}
33% {
box-shadow:
17px 7px #54556b,37px 7px #54556b,38px 7px #54556b,
17px 8px #54556b,37px 8px #54556b,38px 8px #54556b,
16px 9px #54556b,17px 9px #202020,18px 9px #54556b,19px 9px #54556b,36px 9px #54556b,37px 9px #202020,38px 9px #202020,39px 9px #54556b,43px 9px #54556b,44px 9px #54556b,45px 9px #54556b,
14px 10px #54556b,15px 10px #54556b,16px 10px #202020,17px 10px #54556b,37px 10px #54556b,38px 10px #54556b,39px 10px #202020,40px 10px #54556b,43px 10px #54556b,44px 10px #202020,45px 10px #202020,46px 10px #54556b,
14px 11px #54556b,15px 11px #54556b,16px 11px #202020,17px 11px #54556b,37px 11px #54556b,38px 11px #54556b,39px 11px #202020,40px 11px #