Design: Antique Hogwarts parchment letter with light marbling, realistic shading, sketched seal, and handwriting font

This commit is contained in:
kobold-ai
2026-09-21 16:33:11 +02:00
parent b1d88da681
commit 8d8018347c
6 changed files with 396 additions and 98 deletions
+303 -82
View File
@@ -232,109 +232,330 @@ body {
}
/* =========================================
ENVELOPE INTRO ANIMATION
ANTIQUE HOGWARTS PARCHMENT LETTER & SKETCHED SEAL
========================================= */
.intro-card {
text-align: center;
.intro-parchment-wrapper {
background: transparent !important;
border: none !important;
box-shadow: none !important;
padding: 0 !important;
max-width: 600px;
margin: 0 auto;
}
.intro-envelope {
.hogwarts-parchment-letter {
position: relative;
width: min(220px, 70vw);
height: min(140px, 45vw);
margin: 15px auto 25px;
perspective: 800px;
}
.envelope-body {
width: 100%;
height: 100%;
background: #e8dbc3;
margin: 10px auto 25px;
background-color: #f5eedb;
background-image:
radial-gradient(ellipse at 50% 30%, rgba(255, 255, 255, 0.4) 0%, rgba(140, 100, 50, 0.18) 100%),
url('/static/img/parchment_texture.jpg');
background-size: cover;
background-position: center;
border-radius: 6px;
border: 2px solid var(--gold);
position: relative;
box-shadow: 0 8px 20px rgba(0,0,0,0.5);
border: 2px solid #8e6c43;
padding: 34px 28px 28px;
box-shadow:
0 18px 45px rgba(0, 0, 0, 0.75),
0 4px 14px rgba(0, 0, 0, 0.45),
inset 0 0 50px rgba(110, 75, 30, 0.28),
inset 0 0 100px rgba(80, 50, 20, 0.12);
transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.6s ease;
overflow: visible;
}
.envelope-flap {
/* Three-dimensional trifold crease shading */
.parchment-texture-layer {
position: absolute;
top: 0;
left: 0;
inset: 0;
pointer-events: none;
border-radius: 5px;
background: linear-gradient(
to bottom,
rgba(0, 0, 0, 0.02) 0%,
rgba(255, 255, 255, 0.1) 29%,
rgba(100, 68, 25, 0.12) 32%,
rgba(0, 0, 0, 0.03) 34%,
rgba(255, 255, 255, 0.09) 64%,
rgba(100, 68, 25, 0.12) 67%,
rgba(0, 0, 0, 0.04) 70%,
rgba(0, 0, 0, 0.06) 100%
);
mix-blend-mode: multiply;
}
/* Aged vignette and marbling contour */
.parchment-vignette {
position: absolute;
inset: 0;
pointer-events: none;
border-radius: 5px;
box-shadow:
inset 0 0 35px rgba(100, 65, 25, 0.35),
inset 0 0 8px rgba(60, 35, 10, 0.4);
}
/* Hand-drawn double sketched border */
.parchment-sketch-border {
position: absolute;
inset: 10px;
border: 1.5px dashed rgba(120, 85, 45, 0.55);
border-radius: 4px;
pointer-events: none;
outline: 1px solid rgba(140, 105, 60, 0.25);
outline-offset: -4px;
}
/* Sketched Wax Seal */
.sketched-wax-seal {
position: absolute;
top: -24px;
right: 24px;
width: 78px;
height: 78px;
border-radius: 50%;
cursor: pointer;
z-index: 10;
transform: rotate(-4deg);
transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.35s ease, opacity 0.5s ease;
box-shadow:
0 8px 20px rgba(0, 0, 0, 0.65),
0 2px 6px rgba(0, 0, 0, 0.45);
}
.sketched-wax-seal:hover {
transform: rotate(0deg) scale(1.08);
box-shadow:
0 12px 28px rgba(0, 0, 0, 0.75),
0 0 16px rgba(218, 165, 32, 0.4);
}
.seal-crest-img {
width: 100%;
height: 100%;
background: #d8c9ad;
clip-path: polygon(0 0, 50% 55%, 100% 0);
transform-origin: top;
transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 3;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
.wax-seal {
position: absolute;
top: 45%;
left: 50%;
transform: translate(-50%, -50%);
width: 42px;
height: 42px;
background: radial-gradient(circle, #a81c1c 40%, #680d0d 100%);
border-radius: 50%;
border: 2px solid #500606;
color: #ffd700;
font-weight: bold;
font-size: 1.3rem;
display: flex;
align-items: center;
justify-content: center;
z-index: 4;
box-shadow: 0 4px 8px rgba(0,0,0,0.5);
transition: opacity 0.4s ease;
object-fit: cover;
display: block;
border: 3px solid #4a0d0d;
box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.7);
}
.letter-preview {
.seal-emboss-ring {
position: absolute;
bottom: 4px;
left: 50%;
transform: translateX(-50%);
width: 90%;
height: 80%;
background: #fffdfa;
border: 1px solid #d4c5a9;
border-radius: 4px;
padding: 8px;
z-index: 2;
transition: transform 0.7s ease 0.2s;
}
.letter-text {
font-size: 0.65rem;
color: #443;
text-align: center;
font-style: italic;
line-height: 1.3;
}
/* Open state */
.envelope-opened .envelope-flap {
transform: rotateX(180deg);
z-index: 1;
}
.envelope-opened .wax-seal {
opacity: 0;
inset: 2px;
border-radius: 50%;
border: 1.5px solid rgba(255, 215, 0, 0.25);
box-shadow: inset 0 2px 4px rgba(255, 255, 255, 0.2), inset 0 -3px 6px rgba(0, 0, 0, 0.6);
pointer-events: none;
}
.envelope-opened .letter-preview {
transform: translate(-50%, -30px);
.seal-glow {
position: absolute;
inset: -6px;
border-radius: 50%;
background: radial-gradient(circle, rgba(255, 215, 0, 0.35) 0%, transparent 70%);
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
}
.intro-text {
font-size: clamp(0.95rem, 3.5vw, 1.15rem);
line-height: 1.6;
margin-bottom: 20px;
.sketched-wax-seal:hover .seal-glow {
opacity: 1;
}
/* Letter Inner Layout */
.letter-inner {
position: relative;
z-index: 2;
text-align: center;
}
/* Header */
.letter-header {
margin-bottom: 16px;
}
.letter-crest-box {
width: 60px;
height: 60px;
margin: 0 auto 8px;
border-radius: 50%;
overflow: hidden;
box-shadow: 0 3px 8px rgba(90, 60, 20, 0.25);
border: 1px solid rgba(139, 105, 60, 0.3);
}
.letter-crest-sketch {
width: 100%;
height: 100%;
object-fit: cover;
filter: sepia(0.65) contrast(1.15) brightness(0.92);
}
.letter-school-name {
font-family: 'MedievalSharp', Georgia, serif;
font-size: clamp(1.1rem, 3.2vw, 1.4rem);
color: #2c1a0c;
text-transform: uppercase;
letter-spacing: 1.5px;
font-weight: 700;
margin-bottom: 4px;
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.6);
}
.letter-headmaster {
font-family: 'Caveat', 'Georgia', cursive;
font-size: 1.05rem;
color: #4a331c;
font-style: italic;
line-height: 1.35;
margin-bottom: 10px;
}
.letter-headmaster span {
font-size: 0.88rem;
color: #6a4c28;
}
.letter-ornament-line {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
color: #8c6838;
margin: 8px auto 14px;
max-width: 320px;
}
.ornament-rule {
flex: 1;
height: 1px;
background: linear-gradient(to right, transparent, #8c6838, transparent);
}
.ornament-leaf, .ornament-shield {
font-size: 0.95rem;
}
/* Handwritten Body in Emerald Ink */
.letter-body-handwritten {
font-family: 'Marck Script', 'Caveat', cursive;
color: #0f3d24; /* Authentic Hogwarts Emerald Ink */
text-align: left;
padding: 0 8px;
line-height: 1.65;
text-shadow: 0 0 1px rgba(15, 61, 36, 0.25);
}
.letter-salutation {
font-size: clamp(1.35rem, 4vw, 1.6rem);
font-weight: 700;
margin-bottom: 12px;
color: #0a301c;
}
.letter-paragraph {
font-size: clamp(1.18rem, 3.5vw, 1.35rem);
margin-bottom: 14px;
text-indent: 1.5em;
}
.letter-paragraph strong {
color: #052414;
font-weight: 700;
}
/* Signature Block */
.letter-signature-block {
margin-top: 18px;
text-align: right;
padding-right: 12px;
font-family: 'Marck Script', 'Caveat', cursive;
color: #0f3d24;
}
.letter-closing {
font-size: 1.25rem;
font-style: italic;
color: #2b4533;
margin-bottom: 4px;
}
.letter-signature-ink {
font-size: clamp(1.6rem, 5vw, 2.05rem);
font-weight: 700;
color: #082816;
letter-spacing: 0.5px;
transform: rotate(-2deg);
display: inline-block;
margin-bottom: 2px;
text-shadow: 0 0 1px rgba(8, 40, 22, 0.35);
}
.letter-sign-title {
font-size: 0.95rem;
color: #4a6352;
font-style: italic;
}
/* Controls Below Parchment */
.intro-controls-panel {
margin-top: 15px;
text-align: center;
}
.intro-subnote {
font-size: 0.92rem;
color: var(--text-muted);
line-height: 1.5;
margin-bottom: 12px;
}
.btn-break-seal {
font-size: 1.12rem;
padding: 14px 28px;
box-shadow: 0 6px 20px rgba(201, 168, 106, 0.4);
transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.btn-break-seal:hover {
transform: translateY(-2px) scale(1.02);
box-shadow: 0 10px 28px rgba(201, 168, 106, 0.6);
}
/* Animation on start */
.envelope-opened .sketched-wax-seal {
animation: breakSealAnim 0.8s forwards;
}
.envelope-opened.hogwarts-parchment-letter {
box-shadow: 0 0 35px rgba(201, 168, 106, 0.5), 0 20px 50px rgba(0, 0, 0, 0.8);
transform: scale(0.98);
}
@keyframes breakSealAnim {
0% { transform: rotate(-4deg) scale(1); opacity: 1; filter: none; }
50% { transform: rotate(10deg) scale(1.2); opacity: 0.8; filter: drop-shadow(0 0 25px #ffd700); }
100% { transform: rotate(25deg) scale(0.4); opacity: 0; filter: drop-shadow(0 0 40px #ffd700); }
}
@media (max-width: 480px) {
.hogwarts-parchment-letter {
padding: 28px 18px 20px;
}
.sketched-wax-seal {
top: -18px;
right: 12px;
width: 64px;
height: 64px;
}
.letter-body-handwritten {
padding: 0;
}
.letter-paragraph {
text-indent: 1em;
}
}
.difficulty-selection {