Files
insta-recipe/src/routes/layout.css
Giancarmine Salucci 040ae17c12
All checks were successful
Build & Push Docker Image / test-and-build (push) Successful in 1m3s
fix(ui): add ic-btn-reset CSS + auto-convert auth.json to cookies.txt
- 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>
2026-05-12 22:29:12 +02:00

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; }