teqo-backup/src/app/(frontend)/styles.css
Francisco Ignácio Fontoura Solla 198de05c18 Add campaign app shell with a light shadcn sidebar.
Gives authenticated /campanha pages a navigable rail (logo, nav, user/Sair)
so the internal area feels like a real app instead of a bare layout.
2026-07-15 23:17:51 -03:00

343 lines
10 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@import 'tailwindcss';
@plugin 'tailwindcss-animate';
@import 'tw-animate-css';
@import 'tw-animate-css';
@import 'shadcn/tailwind.css';
@custom-variant dark (&:is(.dark *));
@source "../../**/*.{js,ts,jsx,tsx,mdx}";
@theme {
--breakpoint-2xs: 23.75rem;
--breakpoint-xs: 26.25rem;
}
* {
box-sizing: border-box;
}
html {
-webkit-font-smoothing: antialiased;
color-scheme: light;
}
html,
body,
#app {
height: 100%;
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-sans);
--font-mono: var(--font-geist-mono);
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar: var(--sidebar);
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--color-ring: var(--ring);
--color-input: var(--input);
--color-border: var(--border);
--color-destructive: var(--destructive);
--color-accent-foreground: var(--accent-foreground);
--color-accent: var(--accent);
--color-muted-foreground: var(--muted-foreground);
--color-muted: var(--muted);
--color-secondary-foreground: var(--secondary-foreground);
--color-secondary: var(--secondary);
--color-primary-foreground: var(--primary-foreground);
--color-primary: var(--primary);
--color-popover-foreground: var(--popover-foreground);
--color-popover: var(--popover);
--color-card-foreground: var(--card-foreground);
--color-card: var(--card);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--radius-2xl: calc(var(--radius) + 8px);
--radius-3xl: calc(var(--radius) + 12px);
--radius-4xl: calc(var(--radius) + 16px);
}
:root {
--card: oklch(0.25 0.025 171);
--card-foreground: oklch(0.98 0.004 197.1);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.18 0.01 223.9);
--primary: oklch(0.9 0.14 143);
--primary-foreground: oklch(0.2 0.015 171);
--secondary: oklch(0.31 0.02 171);
--secondary-foreground: oklch(0.98 0.004 197.1);
--muted: oklch(0.29 0.02 171);
--muted-foreground: oklch(0.9 0.01 197.1);
--accent: oklch(0.34 0.025 171);
--accent-foreground: oklch(0.98 0.004 197.1);
--destructive: oklch(0.577 0.245 27.325);
--border: oklch(0.7 0.015 197.1 / 20%);
--input: oklch(0.7 0.015 197.1 / 20%);
--ring: oklch(0.9 0.14 143);
--chart-1: oklch(0.81 0.117 11.638);
--chart-2: oklch(0.645 0.246 16.439);
--chart-3: oklch(0.586 0.253 17.585);
--chart-4: oklch(0.514 0.222 16.935);
--chart-5: oklch(0.455 0.188 13.697);
--radius: 0.875rem;
--sidebar: oklch(0.25 0.025 171);
--sidebar-foreground: oklch(0.98 0.004 197.1);
--sidebar-primary: oklch(0.9 0.14 143);
--sidebar-primary-foreground: oklch(0.2 0.015 171);
--sidebar-accent: oklch(0.31 0.02 171);
--sidebar-accent-foreground: oklch(0.98 0.004 197.1);
--sidebar-border: oklch(0.7 0.015 197.1 / 20%);
--sidebar-ring: oklch(0.9 0.14 143);
--background: #ae1603;
--foreground: oklch(0.98 0.004 197.1);
--field-background: #ffffff;
--field-foreground: #000000;
--field-placeholder: rgb(0 0 0 / 80%);
--field-border: rgb(255 255 255 / 80%);
--field-disabled-background: rgb(255 255 255 / 70%);
--field-disabled-foreground: rgb(0 0 0 / 70%);
--field-icon: rgb(0 0 0 / 60%);
/* Brand header bar. Defined on :root so it is inherited by every theme
(including "editorial") and stays the same red regardless of palette. */
--site-header: #ae1603;
--site-header-foreground: #fff8f2;
--site-header-muted: rgb(255 248 242 / 72%);
--site-header-border: rgb(255 255 255 / 18%);
}
/* Light, neutral editorial palette for the public Posts pages (listings +
article). Mirrors the shadcn token contract with a brand-red primary. */
[data-theme='editorial'] {
--background: #f6f4f3;
--foreground: #201b1a;
--card: #ffffff;
--card-foreground: #201b1a;
--popover: #ffffff;
--popover-foreground: #201b1a;
--primary: #c51414;
--primary-foreground: #ffffff;
--secondary: #efe9e7;
--secondary-foreground: #4a3f3d;
--muted: #efe9e7;
--muted-foreground: #6c615e;
--accent: #f3edeb;
--accent-foreground: #201b1a;
--destructive: #b42318;
--border: rgb(32 27 26 / 12%);
--input: rgb(32 27 26 / 16%);
--ring: #c51414;
}
[data-theme='petition'] {
--background: #fff8f2;
--foreground: #2c2522;
--card: #ffffff;
--card-foreground: #2c2522;
--popover: #ffffff;
--popover-foreground: #2c2522;
--primary: #c51414;
--primary-foreground: #ffffff;
--secondary: #ffe8df;
--secondary-foreground: #5f1715;
--muted: #f4e7de;
--muted-foreground: #675c56;
--accent: #ffcf2e;
--accent-foreground: #332300;
--border: rgb(189 119 104 / 24%);
--input: rgb(189 119 104 / 32%);
--ring: #c51414;
--destructive: #b42318;
--petition-hero: #b6120f;
--petition-hero-foreground: #fffaf5;
--petition-hero-muted: #ffe2d6;
--petition-hero-chip: rgb(255 255 255 / 12%);
--petition-hero-chip-foreground: #fff7ed;
--petition-hero-glow: rgb(255 207 46 / 24%);
--petition-hero-depth: rgb(122 0 0 / 35%);
--petition-hero-cta: #ffcf2e;
--petition-hero-cta-foreground: #332300;
--petition-form-section: #f6ebe4;
--field-background: #ffffff;
--field-foreground: #2c2522;
--field-placeholder: rgb(44 37 34 / 58%);
--field-border: #ddc7bc;
--field-disabled-background: #ece0d9;
--field-disabled-foreground: rgb(44 37 34 / 55%);
--field-icon: rgb(44 37 34 / 58%);
}
/* Clean, neutral light palette for the internal /campanha area (login +
management panel). Mirrors the shadcn token contract with a brand-red
primary and defines the --field-* tokens so the custom Input renders with a
visible border on the white card. Applied via data-theme="campaign" on the
(campanha) layout, so it never affects the public (frontend) pages. */
[data-theme='campaign'] {
--background: #ffffff;
--foreground: #1c1917;
--card: #ffffff;
--card-foreground: #1c1917;
--popover: #ffffff;
--popover-foreground: #1c1917;
--primary: #c51414;
--primary-foreground: #ffffff;
--secondary: #f5f5f4;
--secondary-foreground: #292524;
--muted: #f4f4f5;
--muted-foreground: #6b7280;
--accent: #f4f4f5;
--accent-foreground: #1c1917;
--destructive: #b42318;
--border: rgb(28 25 23 / 12%);
--input: rgb(28 25 23 / 16%);
--ring: #c51414;
--field-background: #ffffff;
--field-foreground: #1c1917;
--field-placeholder: rgb(28 25 23 / 50%);
--field-border: #d6d3d1;
--field-disabled-background: #f5f5f4;
--field-disabled-foreground: rgb(28 25 23 / 55%);
--field-icon: rgb(28 25 23 / 55%);
/* Light rail for the campaign app shell (not the public-site dark sidebar). */
--sidebar: #fafaf9;
--sidebar-foreground: #1c1917;
--sidebar-primary: #c51414;
--sidebar-primary-foreground: #ffffff;
--sidebar-accent: #f5f5f4;
--sidebar-accent-foreground: #1c1917;
--sidebar-border: rgb(28 25 23 / 12%);
--sidebar-ring: #c51414;
}
/*
* Cropped full-width Solla mark for the campaign sidebar.
* Source SVG viewBox is 430.9×300.5 but ink sits roughly in y 134–188 —
* size the box to ink height and pin the mask on the ink’s vertical center.
*/
.campaign-logo {
aspect-ratio: 430.9 / 64;
mask-image: url(/LOGO_SOLLA_BRANCO.svg);
mask-size: 100% auto;
mask-repeat: no-repeat;
/* Ink vertical center ≈ (134.4 + 187.8) / 2 / 300.5 */
mask-position: center 53.6%;
-webkit-mask-image: url(/LOGO_SOLLA_BRANCO.svg);
-webkit-mask-size: 100% auto;
-webkit-mask-repeat: no-repeat;
-webkit-mask-position: center 53.6%;
}
.dark {
--background: oklch(0.148 0.004 228.8);
--foreground: oklch(0.987 0.002 197.1);
--card: oklch(0.218 0.008 223.9);
--card-foreground: oklch(0.987 0.002 197.1);
--popover: oklch(0.218 0.008 223.9);
--popover-foreground: oklch(0.987 0.002 197.1);
--primary: oklch(0.925 0.005 214.3);
--primary-foreground: oklch(0.218 0.008 223.9);
--secondary: oklch(0.275 0.011 216.9);
--secondary-foreground: oklch(0.987 0.002 197.1);
--muted: oklch(0.275 0.011 216.9);
--muted-foreground: oklch(0.723 0.014 214.4);
--accent: oklch(0.275 0.011 216.9);
--accent-foreground: oklch(0.987 0.002 197.1);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
--ring: oklch(0.56 0.021 213.5);
--chart-1: oklch(0.81 0.117 11.638);
--chart-2: oklch(0.645 0.246 16.439);
--chart-3: oklch(0.586 0.253 17.585);
--chart-4: oklch(0.514 0.222 16.935);
--chart-5: oklch(0.455 0.188 13.697);
--sidebar: oklch(0.218 0.008 223.9);
--sidebar-foreground: oklch(0.987 0.002 197.1);
--sidebar-primary: oklch(0.488 0.243 264.376);
--sidebar-primary-foreground: oklch(0.987 0.002 197.1);
--sidebar-accent: oklch(0.275 0.011 216.9);
--sidebar-accent-foreground: oklch(0.987 0.002 197.1);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.56 0.021 213.5);
}
@layer base {
* {
@apply border-border outline-ring/50;
}
body {
@apply text-foreground;
background-color: var(--background);
background-image: linear-gradient(to top, #ae1603 0%, #c86112 100%);
}
h1 {
@apply scroll-m-20 text-center text-4xl font-extrabold tracking-tight text-balance;
}
h2 {
@apply scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0;
}
h3 {
@apply scroll-m-20 text-2xl font-semibold tracking-tight;
}
h4 {
@apply scroll-m-20 text-xl font-semibold tracking-tight;
}
p {
@apply leading-7 [&:not(:first-child)]:mt-6;
}
blockquote {
@apply mt-6 border-l-2 pl-6 italic;
}
ul {
@apply my-6 ml-6 list-disc [&>li]:mt-2;
}
code {
@apply bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm font-semibold;
}
small {
@apply text-sm leading-none font-medium;
}
button,
select {
cursor: pointer;
}
html {
@apply font-sans;
}
}
@layer utilities {
.scrollbar-hide {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}
.scrollbar-hide::-webkit-scrollbar {
display: none; /* Chrome, Safari */
}
}