231 lines
4.7 KiB
CSS
231 lines
4.7 KiB
CSS
/* ==========================================================================
|
||
Date-Planer – Shared mobile-first stylesheet
|
||
Base color: love-rose, complemented by warm peach and gold tones.
|
||
========================================================================== */
|
||
|
||
:root {
|
||
--color-rose: #e0577e;
|
||
--color-rose-dark: #b83a5e;
|
||
--color-rose-light: #ffd1dc;
|
||
--color-peach: #ffb4a2;
|
||
--color-gold: #ffd166;
|
||
--color-bg: #fff5f7;
|
||
--color-bg-gradient: linear-gradient(160deg, #fff5f7 0%, #ffe8ec 45%, #ffe3d6 100%);
|
||
--color-text: #4a2c3d;
|
||
--color-text-light: #7a5568;
|
||
--color-white: #fffdfd;
|
||
|
||
--font-heading: "Quicksand", "Segoe UI", sans-serif;
|
||
--font-body: "Nunito", "Segoe UI", sans-serif;
|
||
|
||
--radius-lg: 24px;
|
||
--radius-md: 16px;
|
||
--shadow-soft: 0 8px 24px rgba(184, 58, 94, 0.2);
|
||
--shadow-strong: 0 12px 32px rgba(184, 58, 94, 0.32);
|
||
}
|
||
|
||
* {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
html {
|
||
min-height: 100%;
|
||
}
|
||
|
||
body {
|
||
margin: 0;
|
||
min-height: 100vh;
|
||
min-height: 100dvh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
font-family: var(--font-body);
|
||
font-size: clamp(1rem, 3.6vw, 1.15rem);
|
||
line-height: 1.5;
|
||
color: var(--color-text);
|
||
background: var(--color-bg-gradient);
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
h1,
|
||
h2,
|
||
h3 {
|
||
font-family: var(--font-heading);
|
||
font-weight: 700;
|
||
margin: 0 0 0.5em;
|
||
color: var(--color-rose-dark);
|
||
}
|
||
|
||
h1 {
|
||
font-size: clamp(1.75rem, 7vw, 2.5rem);
|
||
}
|
||
|
||
p {
|
||
margin: 0 0 1em;
|
||
}
|
||
|
||
.container {
|
||
width: 100%;
|
||
max-width: 480px;
|
||
margin: 0 auto;
|
||
padding: 20px 20px 32px;
|
||
flex: 1;
|
||
}
|
||
|
||
/* Buttons -------------------------------------------------------------- */
|
||
|
||
.btn {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 8px;
|
||
min-height: 56px;
|
||
padding: 14px 28px;
|
||
border: none;
|
||
border-radius: var(--radius-lg);
|
||
font-family: var(--font-heading);
|
||
font-size: clamp(1.05rem, 4.5vw, 1.25rem);
|
||
font-weight: 700;
|
||
cursor: pointer;
|
||
touch-action: manipulation;
|
||
transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.2s ease, opacity 0.2s ease;
|
||
}
|
||
|
||
.btn:active {
|
||
transform: scale(0.96);
|
||
}
|
||
|
||
.btn-yes {
|
||
background: linear-gradient(135deg, var(--color-rose) 0%, var(--color-rose-dark) 100%);
|
||
color: var(--color-white);
|
||
box-shadow: var(--shadow-soft);
|
||
}
|
||
|
||
.btn-no {
|
||
background: var(--color-white);
|
||
color: var(--color-text-light);
|
||
box-shadow: var(--shadow-soft);
|
||
}
|
||
|
||
.btn-primary {
|
||
width: 100%;
|
||
background: linear-gradient(135deg, var(--color-rose) 0%, var(--color-rose-dark) 100%);
|
||
color: var(--color-white);
|
||
box-shadow: var(--shadow-soft);
|
||
}
|
||
|
||
.btn-primary:disabled {
|
||
background: #e6d3d8;
|
||
color: #b39aa4;
|
||
box-shadow: none;
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
/* Heart-shaped decorative background (reused across pages) -------------- */
|
||
|
||
.heart-background {
|
||
position: fixed;
|
||
inset: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
z-index: 0;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.heart-shape {
|
||
position: relative;
|
||
width: 62vmin;
|
||
height: 56vmin;
|
||
}
|
||
|
||
.heart-shape::before,
|
||
.heart-shape::after {
|
||
content: "";
|
||
position: absolute;
|
||
top: 0;
|
||
width: 31vmin;
|
||
height: 50vmin;
|
||
background: linear-gradient(135deg, var(--color-rose-light) 0%, var(--color-peach) 100%);
|
||
border-radius: 31vmin 31vmin 0 0;
|
||
opacity: 0.55;
|
||
}
|
||
|
||
.heart-shape::before {
|
||
left: 31vmin;
|
||
transform: rotate(45deg);
|
||
transform-origin: 0 100%;
|
||
}
|
||
|
||
.heart-shape::after {
|
||
left: 0;
|
||
transform: rotate(-45deg);
|
||
transform-origin: 100% 100%;
|
||
}
|
||
|
||
/* Fixed bottom bar for a primary continue action ------------------------- */
|
||
|
||
body.has-continue-bar main.container {
|
||
padding-bottom: calc(110px + env(safe-area-inset-bottom));
|
||
}
|
||
|
||
.continue-bar {
|
||
position: fixed;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
z-index: 100;
|
||
padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
|
||
background: linear-gradient(180deg, rgba(255, 245, 247, 0) 0%, var(--color-bg) 50%);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.continue-bar .container {
|
||
padding: 0;
|
||
max-width: 480px;
|
||
}
|
||
|
||
.continue-bar .btn {
|
||
pointer-events: auto;
|
||
}
|
||
|
||
@media (min-width: 768px) {
|
||
.container {
|
||
flex: none;
|
||
}
|
||
|
||
body.has-continue-bar main.container {
|
||
padding-bottom: 12px;
|
||
}
|
||
|
||
.continue-bar {
|
||
position: static;
|
||
padding: 0 20px 40px;
|
||
background: none;
|
||
pointer-events: auto;
|
||
}
|
||
}
|
||
|
||
/* Back link --------------------------------------------------------------- */
|
||
|
||
.back-link {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
margin-bottom: 12px;
|
||
color: var(--color-text-light);
|
||
font-family: var(--font-heading);
|
||
font-weight: 700;
|
||
text-decoration: none;
|
||
}
|
||
|
||
/* Utility ---------------------------------------------------------------- */
|
||
|
||
.visually-hidden {
|
||
position: absolute;
|
||
width: 1px;
|
||
height: 1px;
|
||
overflow: hidden;
|
||
clip: rect(0 0 0 0);
|
||
white-space: nowrap;
|
||
}
|