Homepage (site/index.html): integration-v14 promoted, Writings section integrated with 33 pieces clustered by type (stories/essays/miscellany), Writings welcome lightbox, content frame at 98% opacity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
922 lines
30 KiB
HTML
922 lines
30 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Bubblicorn Style Reference | E-Girl Aesthetic 🦄✨</title>
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@400;500;600;700&family=Nunito:wght@400;500;600;700&family=Noto+Emoji:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
<style>
|
|
/* ============================================
|
|
BUBBLICORN STYLE REFERENCE
|
|
E-Girl Aesthetic | Rounded Corners | Pastel Vibes
|
|
============================================ */
|
|
|
|
/* ===== 1. CSS RESET ===== */
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* ===== 2. CSS VARIABLES ===== */
|
|
:root {
|
|
/* --- BACKGROUND GRADIENT ---
|
|
4-stop vertical gradient for page background */
|
|
--bg-gradient-1: #1a0a1f; /* Deep purple */
|
|
--bg-gradient-2: #2d1435; /* Dark magenta */
|
|
--bg-gradient-3: #0f1a2a; /* Dark blue */
|
|
--bg-gradient-4: #0a1f1f; /* Deep teal */
|
|
|
|
/* --- SURFACE BACKGROUNDS --- */
|
|
--bg-elevated: rgba(255,182,255,0.06); /* Subtle pink lift */
|
|
--bg-card: rgba(255,182,255,0.18); /* Standard cards */
|
|
--bg-darker: rgba(102,0,153,0.25); /* Nested in elevated */
|
|
--bg-solid-dark: #1a0a1f; /* Opaque dark */
|
|
--bg-solid-header: #2d1435; /* Opaque magenta */
|
|
|
|
/* --- BORDERS --- */
|
|
--border-color: #FF69B4;
|
|
--border-width: 2px;
|
|
--border-width-thick: 4px;
|
|
|
|
/* --- BORDER RADIUS --- */
|
|
--radius-sm: 8px;
|
|
--radius-md: 12px;
|
|
--radius-lg: 16px;
|
|
--radius-xl: 20px;
|
|
--radius-full: 9999px;
|
|
|
|
/* --- GLOW SYSTEM ---
|
|
Bubblegum: Primary actions, highlights
|
|
Sparkle: Success, achievements
|
|
Neon: Warnings, attention */
|
|
--glow-bubblegum-1: #FF69B4; /* Hot pink */
|
|
--glow-bubblegum-2: #FF1493; /* Deep pink */
|
|
--glow-sparkle-1: #B0FFE8; /* Mint */
|
|
--glow-sparkle-2: #00FFFF; /* Cyan */
|
|
--glow-neon-1: #FF10F0; /* Neon pink */
|
|
--glow-neon-2: #FFE66D; /* Sparkle yellow */
|
|
|
|
/* --- TYPOGRAPHY COLORS --- */
|
|
--text-primary: #FFE6FF;
|
|
--text-white: #FFFFFF;
|
|
--text-h1-gradient: linear-gradient(135deg, #FF1493 0%, #E6B3FF 25%, #00FFFF 50%, #E6B3FF 75%, #FF1493 100%);
|
|
--text-h2: #FF69B4; /* Hot pink */
|
|
--text-h3: #E6B3FF; /* Lavender */
|
|
--text-h4: #B0FFE8; /* Mint */
|
|
--text-h5: #CCCCFF; /* Periwinkle */
|
|
--text-h6: #FFE6FF; /* Primary */
|
|
|
|
/* --- BUTTON GRADIENTS --- */
|
|
--btn-special-gradient: linear-gradient(135deg, #FF1493 0%, #E6B3FF 50%, #00FFFF 100%);
|
|
--btn-default-gradient: linear-gradient(180deg, #FF69B4 0%, #E6B3FF 50%, #00FFFF 100%);
|
|
|
|
/* --- KAWAII GRADIENT BORDER ---
|
|
Used for .card-kawaii pseudo-element border */
|
|
--kawaii-gradient: linear-gradient(135deg, #FF69B4 0%, #E6B3FF 50%, #00FFFF 100%);
|
|
|
|
/* --- FONTS --- */
|
|
--font-header: 'Quicksand', sans-serif;
|
|
--font-body: 'Nunito', 'Noto Emoji', sans-serif;
|
|
--font-mono: 'JetBrains Mono', monospace;
|
|
}
|
|
|
|
/* ===== 3. BASE STYLES ===== */
|
|
body {
|
|
font-family: var(--font-body);
|
|
background: linear-gradient(180deg,
|
|
var(--bg-gradient-1) 0%,
|
|
var(--bg-gradient-2) 33%,
|
|
var(--bg-gradient-3) 66%,
|
|
var(--bg-gradient-4) 100%);
|
|
background-attachment: fixed;
|
|
color: var(--text-primary);
|
|
line-height: 1.7;
|
|
min-height: 100vh;
|
|
padding: 20px;
|
|
}
|
|
|
|
/* ===== 4. LAYOUT ===== */
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.grid {
|
|
display: grid;
|
|
gap: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.grid-2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
|
|
.grid-3 { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
|
|
.grid-4 { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
|
|
|
|
/* ===== 5. TYPOGRAPHY ===== */
|
|
h1 {
|
|
font-size: clamp(2rem, 5vw, 3rem);
|
|
font-weight: 700;
|
|
margin-bottom: 1rem;
|
|
background: var(--text-h1-gradient);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
h2 {
|
|
font-size: clamp(1.5rem, 4vw, 2rem);
|
|
font-weight: 700;
|
|
color: var(--text-h2);
|
|
margin-bottom: 1rem;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
h3 {
|
|
font-size: clamp(1.25rem, 3vw, 1.5rem);
|
|
font-weight: 600;
|
|
color: var(--text-h3);
|
|
margin-bottom: 0.75rem;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
h4 {
|
|
font-size: clamp(1.1rem, 2.5vw, 1.25rem);
|
|
font-weight: 600;
|
|
color: var(--text-h4);
|
|
margin-bottom: 0.75rem;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
h5 {
|
|
font-size: 1.1rem;
|
|
font-weight: 600;
|
|
color: var(--text-h5);
|
|
margin-bottom: 0.5rem;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
h6 {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
color: var(--text-h6);
|
|
margin-bottom: 0.5rem;
|
|
font-family: var(--font-header);
|
|
}
|
|
|
|
p {
|
|
margin-bottom: 1rem;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
strong {
|
|
color: var(--glow-bubblegum-1);
|
|
font-weight: 600;
|
|
}
|
|
|
|
em {
|
|
color: var(--glow-sparkle-1);
|
|
font-style: italic;
|
|
}
|
|
|
|
code {
|
|
font-family: var(--font-mono);
|
|
background: var(--bg-elevated);
|
|
padding: 0.2rem 0.4rem;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: var(--radius-sm);
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
pre {
|
|
font-family: var(--font-mono);
|
|
background: var(--bg-elevated);
|
|
padding: 1rem;
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
overflow-x: auto;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
pre code {
|
|
background: transparent;
|
|
border: none;
|
|
padding: 0;
|
|
}
|
|
|
|
blockquote {
|
|
border-left: var(--border-width-thick) solid var(--border-color);
|
|
padding-left: 1.5rem;
|
|
margin: 1.5rem 0;
|
|
font-style: italic;
|
|
color: var(--text-h3);
|
|
}
|
|
|
|
ul, ol {
|
|
margin-bottom: 1.5rem;
|
|
margin-left: 2rem;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
li {
|
|
margin-bottom: 0.5rem;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
dl {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
dt {
|
|
font-weight: 600;
|
|
color: var(--glow-bubblegum-1);
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
dd {
|
|
margin-left: 2rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
/* ===== BUTTONS ===== */
|
|
.btn {
|
|
display: inline-block;
|
|
padding: 0.875rem 2rem;
|
|
text-decoration: none;
|
|
font-weight: 600;
|
|
font-size: 1rem;
|
|
transition: transform 0.3s, box-shadow 0.3s;
|
|
cursor: pointer;
|
|
border: var(--border-width) solid var(--border-color);
|
|
font-family: var(--font-body);
|
|
border-radius: var(--radius-full);
|
|
}
|
|
|
|
.btn-special {
|
|
background: var(--btn-special-gradient);
|
|
color: var(--text-white);
|
|
box-shadow: 0 4px 14px rgba(255, 20, 147, 0.4), 0 0 20px rgba(255, 105, 180, 0.3);
|
|
border: none;
|
|
}
|
|
|
|
.btn-special:hover {
|
|
transform: translateY(-4px) scale(1.05);
|
|
box-shadow: 0 8px 24px rgba(255, 20, 147, 0.6), 0 0 30px rgba(255, 105, 180, 0.5);
|
|
}
|
|
|
|
.btn-default {
|
|
background: var(--text-primary);
|
|
color: var(--bg-solid-dark);
|
|
border-color: var(--glow-bubblegum-1);
|
|
}
|
|
|
|
.btn-default:hover {
|
|
transform: translateY(-2px) scale(1.03);
|
|
box-shadow: 0 4px 12px rgba(255, 105, 180, 0.4);
|
|
}
|
|
|
|
.btn-nav {
|
|
background: transparent;
|
|
color: var(--text-primary);
|
|
border-color: var(--glow-sparkle-1);
|
|
}
|
|
|
|
.btn-nav:hover {
|
|
border-color: var(--glow-bubblegum-1);
|
|
background: rgba(255, 105, 180, 0.1);
|
|
}
|
|
|
|
.btn-sparkle {
|
|
background: var(--bg-solid-dark);
|
|
color: var(--text-primary);
|
|
border-color: var(--glow-sparkle-1);
|
|
box-shadow: 0 0 20px rgba(176, 255, 232, 0.4);
|
|
}
|
|
|
|
.btn-sparkle:hover {
|
|
transform: translateY(-2px) scale(1.03);
|
|
box-shadow: 0 0 30px rgba(176, 255, 232, 0.6);
|
|
}
|
|
|
|
.btn-neon {
|
|
background: var(--bg-solid-dark);
|
|
color: var(--text-primary);
|
|
border-color: var(--glow-neon-1);
|
|
box-shadow: 0 0 20px rgba(255, 16, 240, 0.4);
|
|
}
|
|
|
|
.btn-neon:hover {
|
|
transform: translateY(-2px) scale(1.03);
|
|
box-shadow: 0 0 30px rgba(255, 16, 240, 0.6);
|
|
}
|
|
|
|
/* ===== CARDS & PANELS ===== */
|
|
.card {
|
|
background: var(--bg-card);
|
|
backdrop-filter: blur(10px);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-lg);
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.card-elevated {
|
|
background: var(--bg-elevated);
|
|
backdrop-filter: blur(10px);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-lg);
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.card-solid {
|
|
background: var(--bg-solid-header);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-lg);
|
|
padding: 1.5rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.card-glow-bubblegum {
|
|
box-shadow: 0 0 30px rgba(255, 105, 180, 0.5), 0 0 60px rgba(255, 20, 147, 0.3);
|
|
}
|
|
|
|
.card-glow-sparkle {
|
|
box-shadow: 0 0 30px rgba(176, 255, 232, 0.5), 0 0 60px rgba(0, 255, 255, 0.3);
|
|
}
|
|
|
|
.card-glow-neon {
|
|
box-shadow: 0 0 30px rgba(255, 16, 240, 0.5), 0 0 60px rgba(255, 230, 109, 0.3);
|
|
}
|
|
|
|
/* FIXED: Gradient border with rounded corners using pseudo-element */
|
|
.card-kawaii {
|
|
position: relative;
|
|
background: rgba(255, 255, 255, 0.92);
|
|
border-radius: var(--radius-xl);
|
|
color: #2d1435;
|
|
padding: 2rem;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.card-kawaii::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: var(--radius-xl);
|
|
padding: var(--border-width-thick);
|
|
background: var(--kawaii-gradient);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.card-kawaii h1,
|
|
.card-kawaii h2,
|
|
.card-kawaii h3,
|
|
.card-kawaii h4,
|
|
.card-kawaii h5,
|
|
.card-kawaii h6 {
|
|
color: #8B008B;
|
|
background: none;
|
|
-webkit-text-fill-color: #8B008B;
|
|
}
|
|
|
|
.card-kawaii p,
|
|
.card-kawaii li,
|
|
.card-kawaii td,
|
|
.card-kawaii dd {
|
|
color: #2d1435;
|
|
}
|
|
|
|
.card-kawaii strong {
|
|
color: #FF1493;
|
|
}
|
|
|
|
.card-kawaii em {
|
|
color: #00CED1;
|
|
}
|
|
|
|
.card-kawaii code {
|
|
background: rgba(255, 105, 180, 0.15);
|
|
border-color: #FF69B4;
|
|
color: #8B008B;
|
|
}
|
|
|
|
/* ===== TABLES ===== */
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
margin-bottom: 1.5rem;
|
|
background: var(--bg-card);
|
|
overflow: hidden;
|
|
}
|
|
|
|
thead {
|
|
background: var(--bg-solid-header);
|
|
color: var(--text-white);
|
|
}
|
|
|
|
th {
|
|
padding: 1rem;
|
|
text-align: left;
|
|
font-weight: 600;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
td {
|
|
padding: 0.875rem 1rem;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
tbody tr:nth-child(odd) {
|
|
background: var(--bg-darker);
|
|
}
|
|
|
|
tbody tr:hover {
|
|
background: rgba(255, 105, 180, 0.1);
|
|
}
|
|
|
|
/* ===== FORMS ===== */
|
|
input[type="text"],
|
|
input[type="email"],
|
|
input[type="password"],
|
|
input[type="number"],
|
|
input[type="search"],
|
|
input[type="tel"],
|
|
input[type="url"],
|
|
input[type="date"],
|
|
textarea,
|
|
select {
|
|
width: 100%;
|
|
padding: 0.875rem 1rem;
|
|
background: var(--bg-elevated);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-primary);
|
|
font-family: var(--font-body);
|
|
font-size: 1rem;
|
|
transition: border-color 0.3s, box-shadow 0.3s;
|
|
}
|
|
|
|
input:focus,
|
|
textarea:focus,
|
|
select:focus {
|
|
outline: none;
|
|
border-color: var(--glow-bubblegum-1);
|
|
box-shadow: 0 0 15px rgba(255, 105, 180, 0.3);
|
|
}
|
|
|
|
textarea {
|
|
min-height: 120px;
|
|
resize: vertical;
|
|
}
|
|
|
|
label {
|
|
display: block;
|
|
margin-bottom: 0.5rem;
|
|
font-weight: 600;
|
|
color: var(--text-h3);
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
appearance: none;
|
|
width: 20px;
|
|
height: 20px;
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-sm);
|
|
background: var(--bg-elevated);
|
|
cursor: pointer;
|
|
position: relative;
|
|
transition: background 0.3s, border-color 0.3s;
|
|
}
|
|
|
|
input[type="checkbox"]:checked {
|
|
background: var(--glow-bubblegum-1);
|
|
border-color: var(--glow-bubblegum-1);
|
|
}
|
|
|
|
input[type="checkbox"]:checked::after {
|
|
content: '✓';
|
|
position: absolute;
|
|
color: white;
|
|
font-size: 14px;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
input[type="radio"] {
|
|
appearance: none;
|
|
width: 20px;
|
|
height: 20px;
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: 50%;
|
|
background: var(--bg-elevated);
|
|
cursor: pointer;
|
|
position: relative;
|
|
transition: border-color 0.3s;
|
|
}
|
|
|
|
input[type="radio"]:checked {
|
|
border-color: var(--glow-sparkle-1);
|
|
}
|
|
|
|
input[type="radio"]:checked::after {
|
|
content: '';
|
|
position: absolute;
|
|
width: 10px;
|
|
height: 10px;
|
|
background: var(--glow-sparkle-1);
|
|
border-radius: 50%;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
/* ===== BADGES & PILLS ===== */
|
|
.badge {
|
|
display: inline-block;
|
|
padding: 0.375rem 0.875rem;
|
|
border-radius: var(--radius-full);
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
border: var(--border-width) solid var(--border-color);
|
|
}
|
|
|
|
.badge-bubblegum {
|
|
background: var(--bg-elevated);
|
|
color: var(--glow-bubblegum-1);
|
|
border-color: var(--glow-bubblegum-1);
|
|
}
|
|
|
|
.badge-sparkle {
|
|
background: var(--bg-elevated);
|
|
color: var(--glow-sparkle-1);
|
|
border-color: var(--glow-sparkle-1);
|
|
}
|
|
|
|
.badge-neon {
|
|
background: var(--bg-elevated);
|
|
color: var(--glow-neon-1);
|
|
border-color: var(--glow-neon-1);
|
|
}
|
|
|
|
.badge-solid {
|
|
background: var(--bg-solid-header);
|
|
color: var(--text-white);
|
|
}
|
|
|
|
/* ===== TABS ===== */
|
|
.tabs {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
margin-bottom: 1.5rem;
|
|
border-bottom: var(--border-width) solid var(--border-color);
|
|
}
|
|
|
|
.tab-button {
|
|
padding: 0.875rem 1.5rem;
|
|
background: transparent;
|
|
border: none;
|
|
border-bottom: var(--border-width-thick) solid transparent;
|
|
color: var(--text-secondary);
|
|
cursor: pointer;
|
|
font-family: var(--font-body);
|
|
font-weight: 600;
|
|
font-size: 1rem;
|
|
transition: color 0.3s, border-color 0.3s;
|
|
border-radius: var(--radius-md) var(--radius-md) 0 0;
|
|
}
|
|
|
|
.tab-button:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.tab-button.active {
|
|
color: var(--glow-bubblegum-1);
|
|
border-bottom-color: var(--glow-bubblegum-1);
|
|
}
|
|
|
|
.tab-content {
|
|
display: none;
|
|
}
|
|
|
|
.tab-content.active {
|
|
display: block;
|
|
}
|
|
|
|
/* ===== ALERTS ===== */
|
|
.alert {
|
|
padding: 1rem 1.5rem;
|
|
border-radius: var(--radius-md);
|
|
border: var(--border-width) solid;
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.alert-sparkle {
|
|
background: rgba(176, 255, 232, 0.1);
|
|
border-color: var(--glow-sparkle-1);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.alert-bubblegum {
|
|
background: rgba(255, 105, 180, 0.1);
|
|
border-color: var(--glow-bubblegum-1);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.alert-neon {
|
|
background: rgba(255, 16, 240, 0.1);
|
|
border-color: var(--glow-neon-1);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.alert-info {
|
|
background: rgba(139, 149, 168, 0.1);
|
|
border-color: var(--text-muted);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* ===== PROGRESS BARS ===== */
|
|
progress {
|
|
width: 100%;
|
|
height: 30px;
|
|
appearance: none;
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
overflow: hidden;
|
|
background: var(--bg-elevated);
|
|
}
|
|
|
|
progress::-webkit-progress-bar {
|
|
background: var(--bg-elevated);
|
|
}
|
|
|
|
progress::-webkit-progress-value {
|
|
background: var(--btn-special-gradient);
|
|
}
|
|
|
|
progress::-moz-progress-bar {
|
|
background: var(--btn-special-gradient);
|
|
}
|
|
|
|
/* ===== UTILITY CLASSES ===== */
|
|
.text-center { text-align: center; }
|
|
.text-left { text-align: left; }
|
|
.text-right { text-align: right; }
|
|
|
|
.mt-1 { margin-top: 0.5rem; }
|
|
.mt-2 { margin-top: 1rem; }
|
|
.mt-3 { margin-top: 1.5rem; }
|
|
.mb-1 { margin-bottom: 0.5rem; }
|
|
.mb-2 { margin-bottom: 1rem; }
|
|
.mb-3 { margin-bottom: 1.5rem; }
|
|
|
|
.p-1 { padding: 0.5rem; }
|
|
.p-2 { padding: 1rem; }
|
|
.p-3 { padding: 1.5rem; }
|
|
|
|
/* ===== HORIZONTAL RULE ===== */
|
|
hr {
|
|
border: none;
|
|
height: var(--border-width);
|
|
background: var(--border-color);
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.section-divider {
|
|
margin: 3rem 0;
|
|
background: linear-gradient(to right, transparent, var(--border-color), transparent);
|
|
}
|
|
|
|
/* ===== TIMELINE ===== */
|
|
.timeline {
|
|
position: relative;
|
|
padding-left: 2rem;
|
|
}
|
|
|
|
.timeline::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: var(--border-width);
|
|
background: var(--border-color);
|
|
}
|
|
|
|
.timeline-item {
|
|
position: relative;
|
|
padding-bottom: 2rem;
|
|
}
|
|
|
|
.timeline-item::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: -2.375rem;
|
|
top: 0.25rem;
|
|
width: 12px;
|
|
height: 12px;
|
|
border-radius: 50%;
|
|
background: var(--glow-bubblegum-1);
|
|
border: var(--border-width) solid var(--bg-solid-dark);
|
|
}
|
|
|
|
.timeline-content {
|
|
background: var(--bg-card);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
padding: 1rem;
|
|
}
|
|
|
|
/* ===== CHART BARS ===== */
|
|
.chart-bar {
|
|
margin-bottom: 1.5rem;
|
|
}
|
|
|
|
.chart-label {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
margin-bottom: 0.5rem;
|
|
font-weight: 600;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.chart-bar-fill {
|
|
width: 100%;
|
|
height: 30px;
|
|
background: var(--bg-elevated);
|
|
border: var(--border-width) solid var(--border-color);
|
|
border-radius: var(--radius-md);
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.chart-bar-value {
|
|
height: 100%;
|
|
background: var(--btn-special-gradient);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
padding-right: 1rem;
|
|
font-weight: 600;
|
|
color: white;
|
|
transition: width 1s ease;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<!-- HEADER -->
|
|
<header class="text-center mb-3">
|
|
<h1>Bubblicorn Style Reference 🦄</h1>
|
|
<p style="font-size: 1.25rem; color: var(--text-h3);">E-Girl Aesthetic | Rounded Corners | Pastel Vibes ✨</p>
|
|
</header>
|
|
|
|
<hr class="section-divider">
|
|
|
|
<!-- KAWAII CARD SHOWCASE -->
|
|
<section class="mb-3">
|
|
<h2>Fixed: Kawaii Gradient Border 💖</h2>
|
|
<div class="card-kawaii">
|
|
<h3>Gradient Border with Rounded Corners ✨</h3>
|
|
<p>This card now has <strong>properly rendered gradient borders</strong> with rounded corners! The previous version used <code>border-image</code> which doesn't work with <code>border-radius</code>.</p>
|
|
<p><strong>Solution:</strong> Using a pseudo-element (<code>::before</code>) with gradient background and mask-composite to create the border effect while preserving rounded corners.</p>
|
|
<p><em>The gradient flows smoothly around all corners!</em> 🌈</p>
|
|
</div>
|
|
</section>
|
|
|
|
<hr class="section-divider">
|
|
|
|
<!-- IMPLEMENTATION GUIDE -->
|
|
<section class="mb-3">
|
|
<h2>Implementation Guide 📚</h2>
|
|
|
|
<div class="card">
|
|
<h3>Fixed Gradient Border Technique ✨</h3>
|
|
<p><strong>Problem:</strong> <code>border-image</code> and <code>border-radius</code> don't work together</p>
|
|
<p><strong>Solution:</strong> Pseudo-element with gradient + mask-composite</p>
|
|
<pre><code>/* Gradient border with rounded corners */
|
|
.card-kawaii {
|
|
position: relative;
|
|
background: rgba(255, 255, 255, 0.92);
|
|
border-radius: var(--radius-xl);
|
|
color: #2d1435;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.card-kawaii::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
border-radius: var(--radius-xl);
|
|
padding: var(--border-width-thick);
|
|
background: var(--kawaii-gradient);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box,
|
|
linear-gradient(#fff 0 0);
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}</code></pre>
|
|
</div>
|
|
|
|
<div class="grid grid-2 mt-2">
|
|
<div class="card">
|
|
<h3>Key Improvements ⭐</h3>
|
|
<ul>
|
|
<li><strong>Rounded corners work!</strong> All corners are properly rounded</li>
|
|
<li><strong>Smooth gradient:</strong> No jagged edges or breaks</li>
|
|
<li><strong>Performance:</strong> Uses modern CSS mask technique</li>
|
|
<li><strong>Extensible:</strong> Change gradient via CSS variable</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h3>Browser Support 🌐</h3>
|
|
<p><strong>Excellent:</strong> Chrome, Edge, Safari, Firefox</p>
|
|
<p><strong>Fallback:</strong> Older browsers show solid border</p>
|
|
<p><strong>Note:</strong> Uses <code>-webkit-mask</code> for compatibility</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="alert alert-info mt-2">
|
|
<h3 style="color: var(--text-primary); margin-bottom: 0.5rem;">Technical Notes 💡</h3>
|
|
<ul style="margin-left: 1.5rem; margin-top: 0.5rem;">
|
|
<li><strong>Pseudo-element:</strong> Uses <code>::before</code> to create gradient border layer</li>
|
|
<li><strong>Mask-composite:</strong> <code>exclude</code> cuts out the center, leaving only the border</li>
|
|
<li><strong>Pointer-events:</strong> Set to <code>none</code> so clicks pass through to content</li>
|
|
<li><strong>Inset:</strong> Shorthand for <code>top: 0; right: 0; bottom: 0; left: 0</code></li>
|
|
<li><strong>Padding on mask:</strong> Creates the border width effect</li>
|
|
</ul>
|
|
</div>
|
|
</section>
|
|
|
|
<hr class="section-divider">
|
|
|
|
<!-- COLOR PALETTE -->
|
|
<section class="mb-3">
|
|
<h2>Color Palette 🎨</h2>
|
|
<div class="grid grid-3">
|
|
<div class="card" style="background: #FF69B4; color: white;">
|
|
<h4 style="color: white;">Bubblegum Pink</h4>
|
|
<code style="background: rgba(0,0,0,0.2); color: white; border-color: white;">#FF69B4</code>
|
|
</div>
|
|
<div class="card" style="background: #E6B3FF; color: #2d1435;">
|
|
<h4 style="color: #2d1435;">Lavender</h4>
|
|
<code style="background: rgba(0,0,0,0.1); color: #2d1435; border-color: #2d1435;">#E6B3FF</code>
|
|
</div>
|
|
<div class="card" style="background: #B0FFE8; color: #2d1435;">
|
|
<h4 style="color: #2d1435;">Mint</h4>
|
|
<code style="background: rgba(0,0,0,0.1); color: #2d1435; border-color: #2d1435;">#B0FFE8</code>
|
|
</div>
|
|
<div class="card" style="background: #00FFFF; color: #2d1435;">
|
|
<h4 style="color: #2d1435;">Cyan</h4>
|
|
<code style="background: rgba(0,0,0,0.1); color: #2d1435; border-color: #2d1435;">#00FFFF</code>
|
|
</div>
|
|
<div class="card" style="background: #FF10F0; color: white;">
|
|
<h4 style="color: white;">Neon Pink</h4>
|
|
<code style="background: rgba(0,0,0,0.2); color: white; border-color: white;">#FF10F0</code>
|
|
</div>
|
|
<div class="card" style="background: #FFE66D; color: #2d1435;">
|
|
<h4 style="color: #2d1435;">Sparkle Yellow</h4>
|
|
<code style="background: rgba(0,0,0,0.1); color: #2d1435; border-color: #2d1435;">#FFE66D</code>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<hr class="section-divider">
|
|
|
|
<!-- BUTTONS -->
|
|
<section class="mb-3">
|
|
<h2>Button Styles 🎀</h2>
|
|
<div class="grid grid-2">
|
|
<div class="card">
|
|
<h3>Primary Buttons</h3>
|
|
<button class="btn btn-special">Special Button ✨</button>
|
|
<button class="btn btn-default mt-2">Default Button 💕</button>
|
|
<button class="btn btn-nav mt-2">Navigation Button 🦄</button>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h3>Accent Buttons</h3>
|
|
<button class="btn btn-sparkle">Sparkle Button ⭐</button>
|
|
<button class="btn btn-neon mt-2">Neon Button ⚡</button>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- FOOTER -->
|
|
<footer class="card-solid text-center mt-3" style="padding: 2rem;">
|
|
<h2 style="color: var(--text-white);">Bubblicorn Style Complete! 🦄✨</h2>
|
|
<p style="color: var(--text-white); margin-top: 1rem;">Gradient borders fixed | All rounded corners working | Maximum cuteness achieved 💖</p>
|
|
</footer>
|
|
</div>
|
|
</body>
|
|
</html>
|