UNPKG

sanctum-ui

Version:

CSS Framework inspired by Elden Ring aesthetics

1,020 lines (883 loc) 16 kB
@charset "UTF-8"; @import url("https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Cinzel+Decorative:wght@400;700&display=swap"); @keyframes card-shine { 0% { left: -100%; } 100% { left: 100%; } } :root { --er-gold: #d4af37; --er-gold-light: #f4d03f; --er-gold-dark: #b8860b; --er-bg-primary: #0a0a0a; --er-bg-secondary: #1a1a1a; --er-bg-tertiary: #2d2d2d; --er-text-primary: #e8e6e3; --er-text-secondary: #c7c5c0; --er-text-muted: #8a8883; --er-red: #8b1538; --er-blue: #2c5aa0; --er-green: #4a5d23; --er-purple: #4a2c5a; --er-shadow: 0 4px 20px rgba(0, 0, 0, 0.7); --er-glow-gold: 0 0 20px rgba(212, 175, 55, 0.3); --er-border-gold: 1px solid var(--er-gold); --er-spacing-xs: 0.25rem; --er-spacing-sm: 0.5rem; --er-spacing-md: 1rem; --er-spacing-lg: 1.5rem; --er-spacing-xl: 2rem; } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: "Cinzel", "Times New Roman", serif; background: var(--er-bg-primary); color: var(--er-text-primary); line-height: 1.6; background-image: radial-gradient(circle at 25% 25%, rgba(212, 175, 55, 0.1) 0%, transparent 50%), radial-gradient(circle at 75% 75%, rgba(139, 21, 56, 0.1) 0%, transparent 50%); } html { font-size: 16px; scroll-behavior: smooth; } h1, h2, h3, h4, h5, h6 { font-family: "Cinzel Decorative", "Times New Roman", serif; color: var(--er-gold); text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); margin-bottom: var(--er-spacing-md); } h1.glowing, h2.glowing, h3.glowing, h4.glowing, h5.glowing, h6.glowing { text-shadow: 0 0 10px var(--er-gold), 2px 2px 4px rgba(0, 0, 0, 0.8); } h1 { font-size: 2.5rem; } h2 { font-size: 2rem; } h3 { font-size: 1.75rem; } h4 { font-size: 1.5rem; } h5 { font-size: 1.25rem; } h6 { font-size: 1rem; } p { margin-bottom: var(--er-spacing-md); color: var(--er-text-secondary); } a { color: var(--er-gold); text-decoration: none; transition: all 0.3s ease; } a:hover { color: var(--er-gold-light); text-shadow: var(--er-glow-gold); } a.runic { border-bottom: 1px dotted var(--er-gold); } a.runic:hover { border-bottom-style: solid; } ul, ol { padding-left: var(--er-spacing-lg); margin-bottom: var(--er-spacing-md); } ul li, ol li { margin-bottom: var(--er-spacing-xs); color: var(--er-text-secondary); } blockquote { border-left: 3px solid var(--er-gold); padding: var(--er-spacing-md) var(--er-spacing-lg); margin: var(--er-spacing-lg) 0; background: var(--er-bg-secondary); font-style: italic; position: relative; } blockquote::before { content: '"'; font-size: 3rem; color: var(--er-gold); position: absolute; left: var(--er-spacing-sm); top: -10px; opacity: 0.5; } code { background: var(--er-bg-tertiary); padding: 2px 6px; border-radius: 3px; font-family: "Courier New", monospace; color: var(--er-gold-light); border: 1px solid rgba(212, 175, 55, 0.3); } pre { background: var(--er-bg-secondary); padding: var(--er-spacing-md); border-radius: 8px; border: var(--er-border-gold); overflow-x: auto; margin: var(--er-spacing-md) 0; } pre code { background: none; border: none; padding: 0; } .form-group { margin-bottom: var(--er-spacing-lg); } label { display: block; color: var(--er-gold); font-weight: bold; margin-bottom: var(--er-spacing-sm); text-transform: uppercase; font-size: 0.9rem; letter-spacing: 1px; } input[type=text], input[type=email], input[type=password], input[type=number], textarea, select { width: 100%; padding: var(--er-spacing-sm) var(--er-spacing-md); background: var(--er-bg-secondary); border: 2px solid var(--er-bg-tertiary); border-radius: 4px; color: var(--er-text-primary); font-family: inherit; transition: all 0.3s ease; } input[type=text]:focus, input[type=email]:focus, input[type=password]:focus, input[type=number]:focus, textarea:focus, select:focus { outline: none; border-color: var(--er-gold); box-shadow: var(--er-glow-gold); background: var(--er-bg-primary); } input[type=text]::placeholder, input[type=email]::placeholder, input[type=password]::placeholder, input[type=number]::placeholder, textarea::placeholder, select::placeholder { color: var(--er-text-muted); font-style: italic; } input[type=text].enchanted, input[type=email].enchanted, input[type=password].enchanted, input[type=number].enchanted, textarea.enchanted, select.enchanted { border-color: var(--er-gold); box-shadow: inset 0 0 10px rgba(212, 175, 55, 0.1); } textarea { resize: vertical; min-height: 120px; } input[type=checkbox], input[type=radio] { appearance: none; width: 20px; height: 20px; border: 2px solid var(--er-gold); background: var(--er-bg-secondary); margin-right: var(--er-spacing-sm); position: relative; cursor: pointer; } input[type=checkbox]:checked, input[type=radio]:checked { background: var(--er-gold); } input[type=checkbox]:checked::before, input[type=radio]:checked::before { content: "✓"; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: var(--er-bg-primary); font-weight: bold; font-size: 12px; } input[type=radio] { border-radius: 50%; } input[type=radio]:checked::before { content: ""; width: 8px; height: 8px; background: var(--er-bg-primary); border-radius: 50%; top: 4px; left: 4px; transform: none; } .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } .text-gold { color: var(--er-gold); } .text-light { color: var(--er-text-primary); } .text-muted { color: var(--er-text-muted); } .bg-primary { background: var(--er-bg-primary); } .bg-secondary { background: var(--er-bg-secondary); } .bg-tertiary { background: var(--er-bg-tertiary); } .m-0 { margin: 0rem; } .mt-0 { margin-top: 0rem; } .mb-0 { margin-bottom: 0rem; } .ml-0 { margin-left: 0rem; } .mr-0 { margin-right: 0rem; } .p-0 { padding: 0rem; } .pt-0 { padding-top: 0rem; } .pb-0 { padding-bottom: 0rem; } .pl-0 { padding-left: 0rem; } .pr-0 { padding-right: 0rem; } .m-1 { margin: 0.5rem; } .mt-1 { margin-top: 0.5rem; } .mb-1 { margin-bottom: 0.5rem; } .ml-1 { margin-left: 0.5rem; } .mr-1 { margin-right: 0.5rem; } .p-1 { padding: 0.5rem; } .pt-1 { padding-top: 0.5rem; } .pb-1 { padding-bottom: 0.5rem; } .pl-1 { padding-left: 0.5rem; } .pr-1 { padding-right: 0.5rem; } .m-2 { margin: 1rem; } .mt-2 { margin-top: 1rem; } .mb-2 { margin-bottom: 1rem; } .ml-2 { margin-left: 1rem; } .mr-2 { margin-right: 1rem; } .p-2 { padding: 1rem; } .pt-2 { padding-top: 1rem; } .pb-2 { padding-bottom: 1rem; } .pl-2 { padding-left: 1rem; } .pr-2 { padding-right: 1rem; } .m-3 { margin: 1.5rem; } .mt-3 { margin-top: 1.5rem; } .mb-3 { margin-bottom: 1.5rem; } .ml-3 { margin-left: 1.5rem; } .mr-3 { margin-right: 1.5rem; } .p-3 { padding: 1.5rem; } .pt-3 { padding-top: 1.5rem; } .pb-3 { padding-bottom: 1.5rem; } .pl-3 { padding-left: 1.5rem; } .pr-3 { padding-right: 1.5rem; } .m-4 { margin: 2rem; } .mt-4 { margin-top: 2rem; } .mb-4 { margin-bottom: 2rem; } .ml-4 { margin-left: 2rem; } .mr-4 { margin-right: 2rem; } .p-4 { padding: 2rem; } .pt-4 { padding-top: 2rem; } .pb-4 { padding-bottom: 2rem; } .pl-4 { padding-left: 2rem; } .pr-4 { padding-right: 2rem; } .m-5 { margin: 2.5rem; } .mt-5 { margin-top: 2.5rem; } .mb-5 { margin-bottom: 2.5rem; } .ml-5 { margin-left: 2.5rem; } .mr-5 { margin-right: 2.5rem; } .p-5 { padding: 2.5rem; } .pt-5 { padding-top: 2.5rem; } .pb-5 { padding-bottom: 2.5rem; } .pl-5 { padding-left: 2.5rem; } .pr-5 { padding-right: 2.5rem; } .d-none { display: none; } .d-block { display: block; } .d-inline { display: inline; } .d-inline-block { display: inline-block; } .d-flex { display: flex; } .d-grid { display: grid; } .flex-column { flex-direction: column; } .flex-row { flex-direction: row; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .align-center { align-items: center; } .glow { box-shadow: var(--er-glow-gold); } .shadow { box-shadow: var(--er-shadow); } .rounded { border-radius: 8px; } .rounded-full { border-radius: 50%; } .border-gold { border: var(--er-border-gold); } .border-thin { border: 1px solid var(--er-bg-tertiary); } .opacity-50 { opacity: 0.5; } .opacity-75 { opacity: 0.75; } .transition { transition: all 0.3s ease; } @keyframes flame-flicker { 0%, 100% { text-shadow: 0 0 10px var(--er-gold), 0 0 20px var(--er-gold), 0 0 30px var(--er-gold); } 50% { text-shadow: 0 0 5px var(--er-gold), 0 0 15px var(--er-gold), 0 0 25px var(--er-gold); } } .flame-text { animation: flame-flicker 2s infinite; } @keyframes rune-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } .rune-pulse { animation: rune-pulse 3s infinite; } .btn { display: inline-block; padding: var(--er-spacing-sm) var(--er-spacing-lg); background: var(--er-bg-secondary); border: 2px solid var(--er-gold); color: var(--er-gold); font-family: "Cinzel", serif; font-weight: bold; text-transform: uppercase; letter-spacing: 1px; cursor: pointer; transition: all 0.3s ease; text-decoration: none; border-radius: 4px; } .btn:hover { background: var(--er-gold); color: var(--er-bg-primary); box-shadow: var(--er-glow-gold); transform: translateY(-2px); } .btn:active { transform: translateY(0); } .btn:disabled { opacity: 0.5; cursor: not-allowed; } .btn:disabled:hover { background: var(--er-bg-secondary); color: var(--er-gold); transform: none; box-shadow: none; } .btn.btn-secondary { border-color: var(--er-text-muted); color: var(--er-text-muted); } .btn.btn-secondary:hover { background: var(--er-text-muted); color: var(--er-bg-primary); } .btn.btn-danger { border-color: var(--er-red); color: var(--er-red); } .btn.btn-danger:hover { background: var(--er-red); color: var(--er-text-primary); } .btn.btn-large { padding: var(--er-spacing-md) var(--er-spacing-xl); font-size: 1.1rem; } .btn.btn-small { padding: var(--er-spacing-xs) var(--er-spacing-sm); font-size: 0.9rem; } .card { background: var(--er-bg-secondary); border: 1px solid var(--er-bg-tertiary); box-shadow: var(--er-shadow); border-radius: 8px; padding: var(--er-spacing-lg); position: relative; overflow: hidden; } .card::before { content: ""; position: absolute; top: 0; left: -100%; width: 100%; height: 2px; background: linear-gradient(90deg, transparent, var(--er-gold), transparent); animation: card-shine 3s infinite; } .card.card-bordered { border: 2px solid var(--er-gold); box-shadow: inset 0 0 10px rgba(212, 175, 55, 0.1), 0 0 10px rgba(212, 175, 55, 0.2); } .panel { background: var(--er-bg-secondary); border: 1px solid var(--er-bg-tertiary); box-shadow: var(--er-shadow); border-radius: 8px; padding: var(--er-spacing-lg); } .container { max-width: 1200px; margin: 0 auto; padding: 0 var(--er-spacing-md); } @media (max-width: 768px) { .container { padding: 0 var(--er-spacing-sm); } } .row { display: flex; flex-wrap: wrap; margin: 0 -var(--er-spacing-sm); } .col { flex: 1; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col { flex: 100%; } } .col-1 { flex: 0 0 8.3333333333%; max-width: 8.3333333333%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-1 { flex: 100%; max-width: 100%; } } .col-2 { flex: 0 0 16.6666666667%; max-width: 16.6666666667%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-2 { flex: 100%; max-width: 100%; } } .col-3 { flex: 0 0 25%; max-width: 25%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-3 { flex: 100%; max-width: 100%; } } .col-4 { flex: 0 0 33.3333333333%; max-width: 33.3333333333%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-4 { flex: 100%; max-width: 100%; } } .col-5 { flex: 0 0 41.6666666667%; max-width: 41.6666666667%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-5 { flex: 100%; max-width: 100%; } } .col-6 { flex: 0 0 50%; max-width: 50%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-6 { flex: 100%; max-width: 100%; } } .col-7 { flex: 0 0 58.3333333333%; max-width: 58.3333333333%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-7 { flex: 100%; max-width: 100%; } } .col-8 { flex: 0 0 66.6666666667%; max-width: 66.6666666667%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-8 { flex: 100%; max-width: 100%; } } .col-9 { flex: 0 0 75%; max-width: 75%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-9 { flex: 100%; max-width: 100%; } } .col-10 { flex: 0 0 83.3333333333%; max-width: 83.3333333333%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-10 { flex: 100%; max-width: 100%; } } .col-11 { flex: 0 0 91.6666666667%; max-width: 91.6666666667%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-11 { flex: 100%; max-width: 100%; } } .col-12 { flex: 0 0 100%; max-width: 100%; padding: 0 var(--er-spacing-sm); } @media (max-width: 768px) { .col-12 { flex: 100%; max-width: 100%; } } .navbar { background: rgba(10, 10, 10, 0.95); backdrop-filter: blur(10px); border-bottom: 1px solid var(--er-gold); padding: var(--er-spacing-md) 0; } .navbar .nav-brand { color: var(--er-gold); text-shadow: 0 0 10px var(--er-gold), 2px 2px 4px rgba(0, 0, 0, 0.8); font-family: "Cinzel Decorative", serif; font-size: 1.5rem; text-decoration: none; } .navbar .nav-links { display: flex; list-style: none; gap: var(--er-spacing-lg); } .navbar .nav-links a { padding: var(--er-spacing-sm) var(--er-spacing-md); border-radius: 4px; transition: all 0.3s ease; } .navbar .nav-links a:hover { background: rgba(212, 175, 55, 0.1); } .hero { text-align: center; padding: calc(var(--er-spacing-xl) * 3) 0; background: radial-gradient(ellipse at center, rgba(212, 175, 55, 0.1) 0%, transparent 70%), linear-gradient(180deg, var(--er-bg-primary) 0%, var(--er-bg-secondary) 100%); } .hero h1 { font-size: 3.5rem; margin-bottom: var(--er-spacing-lg); } @media (max-width: 768px) { .hero h1 { font-size: 2.5rem; } } .hero p { font-size: 1.2rem; max-width: 600px; margin: 0 auto var(--er-spacing-xl); } .table { width: 100%; border-collapse: collapse; background: var(--er-bg-secondary); border: var(--er-border-gold); border-radius: 8px; overflow: hidden; } .table th, .table td { padding: var(--er-spacing-sm) var(--er-spacing-md); text-align: left; border-bottom: 1px solid var(--er-bg-tertiary); } .table th { background: var(--er-bg-tertiary); color: var(--er-gold); font-weight: bold; text-transform: uppercase; font-size: 0.9rem; letter-spacing: 1px; } .table tr:hover td { background: rgba(212, 175, 55, 0.05); } .alert { background: var(--er-bg-secondary); border: 1px solid var(--er-bg-tertiary); box-shadow: var(--er-shadow); border-radius: 8px; padding: var(--er-spacing-lg); border-left: 4px solid var(--er-gold); } .alert.alert-danger { border-left-color: var(--er-red); } .alert.alert-danger .alert-title { color: var(--er-red); } .alert.alert-success { border-left-color: var(--er-green); } .alert.alert-success .alert-title { color: var(--er-green); } .alert .alert-title { color: var(--er-gold); font-weight: bold; margin-bottom: var(--er-spacing-sm); } /*# sourceMappingURL=sanctum-ui.css.map */