All checks were successful
Build & Push Docker Image / test-and-build (push) Successful in 1m3s
- layout.css: add button.ic-btn-reset rule so all icon buttons (bell, back, close, retry, etc.) get proper background:none reset instead of browser-default white/grey appearance in dark mode - instagram-extractor.ts: auto-convert secrets/auth.json (Playwright storage format) to Netscape cookies.txt at runtime whenever auth.json is newer; ensures sessionid and all Instagram session cookies are passed to yt-dlp, fixing empty media response Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
173 lines
5.1 KiB
CSS
173 lines
5.1 KiB
CSS
/* ─── InstaChef design system ─────────────────────────────────────────────── */
|
|
|
|
/* Brand + shared tokens (theme-independent) */
|
|
:root {
|
|
--grad-1: #833AB4;
|
|
--grad-2: #C13584;
|
|
--grad-3: #E1306C;
|
|
--grad-4: #FD7E14;
|
|
--grad-5: #FCAF45;
|
|
--brand-gradient: linear-gradient(135deg, var(--grad-1) 0%, var(--grad-3) 45%, var(--grad-4) 75%, var(--grad-5) 100%);
|
|
--brand-gradient-soft: linear-gradient(135deg, #FCE9F3 0%, #FFEAD8 100%);
|
|
|
|
--purple: #833AB4;
|
|
--pink: #E1306C;
|
|
--orange: #FD7E14;
|
|
--yellow: #FCAF45;
|
|
--berry: #C13584;
|
|
|
|
--status-pending: #FCAF45;
|
|
--status-success: #2EA56A;
|
|
--status-error: #E64B4B;
|
|
|
|
--font-display: "Lilita One", "Caprasimo", system-ui, sans-serif;
|
|
--font-body: "DM Sans", -apple-system, system-ui, sans-serif;
|
|
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
}
|
|
|
|
/* Light theme */
|
|
.ic-root[data-theme="light"] {
|
|
--bg: #FFF8F5;
|
|
--bg-tint: #FFEFE4;
|
|
--surface: #FFFFFF;
|
|
--surface-2: #FDF1EC;
|
|
--surface-3: #F7E5DC;
|
|
--ink: #1A0B1F;
|
|
--ink-2: #3A2A40;
|
|
--muted: #7A6B7D;
|
|
--muted-2: #A8989C;
|
|
--border: rgba(26, 11, 31, 0.08);
|
|
--border-strong: rgba(26, 11, 31, 0.14);
|
|
--shadow-sm: 0 1px 2px rgba(26, 11, 31, 0.04), 0 2px 8px rgba(26, 11, 31, 0.04);
|
|
--shadow-md: 0 4px 12px rgba(26, 11, 31, 0.06), 0 12px 32px rgba(26, 11, 31, 0.05);
|
|
--shadow-lg: 0 12px 28px rgba(193, 53, 132, 0.18), 0 24px 60px rgba(131, 58, 180, 0.15);
|
|
}
|
|
|
|
/* Dark theme */
|
|
.ic-root[data-theme="dark"] {
|
|
--bg: #110510;
|
|
--bg-tint: #1A0A1F;
|
|
--surface: #1F0F24;
|
|
--surface-2: #2A1730;
|
|
--surface-3: #371E3E;
|
|
--ink: #FCEFE5;
|
|
--ink-2: #E0D2DA;
|
|
--muted: #A38FA8;
|
|
--muted-2: #6E5A73;
|
|
--border: rgba(255, 235, 245, 0.08);
|
|
--border-strong: rgba(255, 235, 245, 0.16);
|
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.4), 0 12px 32px rgba(0, 0, 0, 0.3);
|
|
--shadow-lg: 0 12px 28px rgba(225, 48, 108, 0.35), 0 24px 60px rgba(131, 58, 180, 0.3);
|
|
}
|
|
|
|
/* ─── Base reset ──────────────────────────────────────────────────────────── */
|
|
*, *::before, *::after { box-sizing: border-box; }
|
|
|
|
html, body {
|
|
margin: 0;
|
|
padding: 0;
|
|
height: 100%;
|
|
}
|
|
|
|
.ic-root {
|
|
font-family: var(--font-body);
|
|
color: var(--ink);
|
|
background: var(--bg);
|
|
-webkit-font-smoothing: antialiased;
|
|
min-height: 100dvh;
|
|
}
|
|
|
|
/* ─── Utility classes ─────────────────────────────────────────────────────── */
|
|
.ic-display {
|
|
font-family: var(--font-display);
|
|
font-weight: 400;
|
|
letter-spacing: -0.005em;
|
|
line-height: 1;
|
|
}
|
|
|
|
.ic-grad-text {
|
|
background: var(--brand-gradient);
|
|
-webkit-background-clip: text;
|
|
background-clip: text;
|
|
color: transparent;
|
|
}
|
|
|
|
.ic-scroll {
|
|
scrollbar-width: none;
|
|
-ms-overflow-style: none;
|
|
}
|
|
.ic-scroll::-webkit-scrollbar { display: none; }
|
|
|
|
button.ic-btn,
|
|
button.ic-btn-reset {
|
|
background: none;
|
|
border: 0;
|
|
padding: 0;
|
|
cursor: pointer;
|
|
font: inherit;
|
|
color: inherit;
|
|
-webkit-tap-highlight-color: transparent;
|
|
}
|
|
|
|
/* ─── Animations ──────────────────────────────────────────────────────────── */
|
|
@keyframes ic-steam {
|
|
0% { transform: translateY(0) translateX(0) scale(0.6); opacity: 0; }
|
|
25% { opacity: 0.85; }
|
|
100% { transform: translateY(-44px) translateX(var(--drift, 4px)) scale(1.4); opacity: 0; }
|
|
}
|
|
.ic-steam {
|
|
animation: ic-steam 2.4s ease-out infinite;
|
|
animation-delay: var(--delay, 0s);
|
|
}
|
|
|
|
@keyframes ic-bubble {
|
|
0%, 100% { transform: translateY(0) scale(1); }
|
|
50% { transform: translateY(-2px) scale(1.05); }
|
|
}
|
|
.ic-bubble { animation: ic-bubble 1.6s ease-in-out infinite; }
|
|
|
|
@keyframes ic-chop {
|
|
0%, 100% { transform: rotate(-30deg) translateY(0); }
|
|
50% { transform: rotate(-8deg) translateY(-2px); }
|
|
}
|
|
.ic-chop { animation: ic-chop 0.9s cubic-bezier(.7,0,.3,1) infinite; transform-origin: bottom right; }
|
|
|
|
@keyframes ic-shimmer {
|
|
0% { transform: translateX(-100%); }
|
|
100% { transform: translateX(200%); }
|
|
}
|
|
.ic-shimmer { animation: ic-shimmer 2s ease-in-out infinite; }
|
|
|
|
@keyframes ic-pulse {
|
|
0%, 100% { opacity: 1; transform: scale(1); }
|
|
50% { opacity: 0.55; transform: scale(0.95); }
|
|
}
|
|
.ic-pulse { animation: ic-pulse 1.4s ease-in-out infinite; }
|
|
|
|
@keyframes ic-slide-up {
|
|
from { transform: translateY(100%); }
|
|
to { transform: translateY(0); }
|
|
}
|
|
.ic-slide-up { animation: ic-slide-up 0.32s cubic-bezier(.2,.7,.2,1); }
|
|
|
|
@keyframes ic-fade {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
.ic-fade { animation: ic-fade 0.24s ease-out; }
|
|
|
|
@keyframes ic-pop {
|
|
0% { transform: scale(0.6); opacity: 0; }
|
|
60% { transform: scale(1.08); opacity: 1; }
|
|
100% { transform: scale(1); }
|
|
}
|
|
.ic-pop { animation: ic-pop 0.4s cubic-bezier(.2,1.4,.4,1); }
|
|
|
|
@keyframes ic-live {
|
|
0%, 100% { opacity: 1; }
|
|
50% { opacity: 0.3; }
|
|
}
|
|
.ic-live { animation: ic-live 1.4s ease-in-out infinite; }
|
|
|