← back to Restaurant Directory
public/css/site.css
197 lines
/* LA County Eats — site styles */
:root {
--bg: #fdf9ee; /* cream, same as bubbesblock palette */
--ink: #1a1814;
--ink-soft: #5a564d;
--ink-faint: #8a8579;
--line: rgba(26, 24, 20, 0.10);
--hover-bg: #f6efd8;
--card-bg: #ffffff;
--coral: #d9534f;
--grade-a: #1f6f3e; /* deep green */
--grade-b: #b8860b; /* dark gold */
--grade-c: #b94a48; /* warning red */
--grade-none: #888;
}
[data-theme="dark"] {
--bg: #14110d; /* deep ink, slightly warmer than pure black to match cream lineage */
--ink: #f3ecd8; /* cream as text */
--ink-soft: #b6ad99;
--ink-faint: #7a7363;
--line: rgba(243, 236, 216, 0.14);
--hover-bg: #1f1a13;
--card-bg: #1c1812;
--grade-a: #4ea16f;
--grade-b: #d4a13a;
--grade-c: #d27773;
}
html { background: var(--bg); color-scheme: light dark; }
html[data-theme="dark"] { color-scheme: dark; }
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
background: var(--bg);
color: var(--ink);
line-height: 1.5;
font-size: 16px;
}
a { color: var(--ink); text-decoration: none; }
a:hover { color: var(--coral); }
.site-header {
display: flex; align-items: baseline; justify-content: space-between;
padding: 1.25rem 2rem; border-bottom: 1px solid var(--line);
max-width: 1100px; margin: 0 auto;
}
.brand {
font-family: 'Playfair Display', Georgia, serif;
font-size: 1.4rem; font-weight: 700; letter-spacing: -0.01em;
}
.site-header nav { display: flex; align-items: center; }
.site-header nav a { margin-left: 1.5rem; font-size: 0.9rem; color: var(--ink-soft); }
.theme-toggle { margin-left: 1.5rem; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; background: transparent; border: 1px solid var(--line); border-radius: 50%; color: var(--ink-soft); cursor: pointer; transition: color 0.15s, border-color 0.15s, background 0.15s; }
.theme-toggle:hover { color: var(--ink); border-color: var(--ink); background: var(--hover-bg); }
.theme-toggle:focus-visible { outline: 2px solid var(--coral); outline-offset: 2px; }
.theme-toggle .icon-sun { display: none; }
.theme-toggle .icon-moon { display: inline-block; }
[data-theme="dark"] .theme-toggle .icon-sun { display: inline-block; }
[data-theme="dark"] .theme-toggle .icon-moon { display: none; }
.container { max-width: 1100px; margin: 0 auto; padding: 2rem; }
.hero h1 {
font-family: 'Playfair Display', Georgia, serif;
font-size: clamp(2rem, 5vw, 3.5rem); margin: 0 0 0.5rem;
letter-spacing: -0.02em; line-height: 1.05;
}
.hero .lede { font-style: italic; color: var(--ink-soft); margin: 0 0 1.5rem; font-size: 1.1rem; }
.filters { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; padding: 1rem 0 0.5rem; border-top: 1px solid var(--line); }
.filters input, .filters select, .filters button {
font: inherit; padding: 0.5rem 0.75rem; border: 1px solid var(--line); background: var(--card-bg); color: var(--ink); border-radius: 4px;
}
.filters input { flex: 1; min-width: 200px; }
.filters button { background: var(--ink); color: var(--bg); border-color: var(--ink); cursor: pointer; }
.filters .clear { font-size: 0.85rem; color: var(--ink-soft); }
.rest-list { list-style: none; padding: 0; margin: 1.5rem 0; }
.rest-list li { border-bottom: 1px solid var(--line); }
.rest-card {
display: grid; grid-template-columns: 1fr auto; gap: 1.5rem; align-items: center;
padding: 1rem 0; transition: background 0.1s;
}
.rest-card:hover { background: var(--hover-bg); padding-left: 0.5rem; padding-right: 0.5rem; margin-left: -0.5rem; margin-right: -0.5rem; }
.rest-main h2 {
font-family: 'Playfair Display', Georgia, serif;
font-size: 1.3rem; margin: 0 0 0.25rem; font-weight: 700; letter-spacing: -0.01em;
}
.rest-main .addr { margin: 0; color: var(--ink-soft); font-size: 0.9rem; }
.rest-main .pe { margin: 0.25rem 0 0; font-size: 0.75rem; color: var(--ink-faint); text-transform: uppercase; letter-spacing: 0.08em; }
.rest-main .cuisine, .detail-head .cuisine {
display: inline-block; margin: 0.4rem 0 0;
padding: 0.15rem 0.6rem; background: var(--ink); color: var(--bg);
font-size: 0.72rem; font-weight: 600; letter-spacing: 0.04em;
text-transform: uppercase; border-radius: 3px;
}
.rest-meta { display: flex; flex-direction: column; align-items: center; gap: 0.15rem; min-width: 70px; }
.grade {
display: inline-block; width: 38px; height: 38px; line-height: 38px; text-align: center;
font-family: 'Playfair Display', Georgia, serif; font-weight: 700; font-size: 1.5rem;
color: white; border-radius: 6px;
}
.grade-A { background: var(--grade-a); }
.grade-B { background: var(--grade-b); }
.grade-C { background: var(--grade-c); }
.grade-none { background: transparent; color: var(--ink-faint); font-weight: 400; font-size: 1.5rem; }
.rest-meta .score { font-size: 0.75rem; color: var(--ink-soft); margin: 0; font-variant-numeric: tabular-nums; }
.rest-meta .last { font-size: 0.7rem; color: var(--ink-faint); margin: 0; font-family: ui-monospace, Menlo, monospace; }
.empty { text-align: center; padding: 3rem 0; color: var(--ink-soft); font-style: italic; }
.pager { display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; border-top: 1px solid var(--line); margin-top: 1rem; }
.pager span { color: var(--ink-soft); font-size: 0.9rem; }
/* Detail page */
.crumbs { font-size: 0.85rem; color: var(--ink-soft); margin: 0 0 1rem; }
.detail-head h1 { font-family: 'Playfair Display', Georgia, serif; font-size: clamp(1.8rem, 4vw, 2.8rem); letter-spacing: -0.02em; margin: 0 0 0.25rem; line-height: 1.05; }
.detail-head .addr { margin: 0; color: var(--ink-soft); font-size: 1rem; }
.detail-head .pe { margin: 0.25rem 0 0; font-size: 0.75rem; color: var(--ink-faint); text-transform: uppercase; letter-spacing: 0.08em; }
.grade-block { display: flex; gap: 2rem; align-items: center; padding: 1.5rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin: 1.5rem 0; }
.big-grade {
width: 88px; height: 88px; line-height: 88px; text-align: center;
font-family: 'Playfair Display', Georgia, serif; font-weight: 700; font-size: 4rem;
color: white; border-radius: 12px; flex-shrink: 0;
}
.grade-meta .score { font-size: 1.4rem; font-weight: 600; margin: 0; font-variant-numeric: tabular-nums; }
.grade-meta .last { color: var(--ink-soft); margin: 0.25rem 0 0; font-size: 0.9rem; }
.map-block { margin: 1.5rem 0; }
#mini-map, #big-map { width: 100%; height: 360px; border-radius: 6px; border: 1px solid var(--line); }
.map-page #big-map { height: 70vh; }
.inspections h2 { font-family: 'Playfair Display', Georgia, serif; font-size: 1.5rem; margin: 2rem 0 0.5rem; }
.inspections table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.inspections th, .inspections td { text-align: left; padding: 0.6rem 0.5rem; border-bottom: 1px solid var(--line); }
.inspections th { font-weight: 600; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-soft); }
.grade-pill { display: inline-block; padding: 0.1rem 0.5rem; color: white; font-weight: 700; border-radius: 3px; font-size: 0.85rem; }
/* Newest-openings hero */
.newest-hero { margin: 2rem 0 1rem; padding: 1.25rem 0 0.5rem; border-top: 1px solid var(--line); }
.newest-hero h2 { font-family: 'Playfair Display', Georgia, serif; font-size: 1.4rem; margin: 0 0 0.25rem; letter-spacing: -0.01em; }
.newest-hero ul { list-style: none; padding: 0; margin: 0.75rem 0 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 0.75rem; }
.newest-hero .newest-card { display: block; padding: 0.85rem 0.95rem; background: var(--card-bg); border: 1px solid var(--line); border-radius: 6px; transition: background 0.1s, border-color 0.1s; position: relative; }
.newest-hero .newest-card:hover { background: var(--hover-bg); border-color: var(--ink); color: var(--ink); }
.newest-hero h3 { font-family: 'Playfair Display', Georgia, serif; font-size: 1.05rem; margin: 0 0 0.2rem; font-weight: 700; letter-spacing: -0.01em; padding-right: 3rem; }
.newest-hero .addr { margin: 0; color: var(--ink-soft); font-size: 0.82rem; }
.newest-hero .cuisine { display: inline-block; margin: 0.4rem 0 0; padding: 0.1rem 0.5rem; background: var(--ink); color: var(--bg); font-size: 0.65rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; border-radius: 3px; }
.newest-hero .opened { margin: 0.3rem 0 0; font-size: 0.72rem; color: var(--ink-faint); font-family: ui-monospace, Menlo, monospace; text-transform: uppercase; letter-spacing: 0.05em; }
.badge-new { position: absolute; top: 0.6rem; right: 0.6rem; background: var(--coral); color: white; font-size: 0.62rem; font-weight: 700; letter-spacing: 0.08em; padding: 0.15rem 0.45rem; border-radius: 3px; }
/* Cuisine browse hero */
.cuisine-hero { margin: 2rem 0 1rem; padding: 1.25rem 0 0.5rem; border-top: 1px solid var(--line); }
.cuisine-hero h2 { font-family: 'Playfair Display', Georgia, serif; font-size: 1.4rem; margin: 0 0 0.75rem; letter-spacing: -0.01em; }
.cuisine-hero ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0.5rem; }
.cuisine-hero li a {
display: flex; justify-content: space-between; align-items: baseline;
padding: 0.55rem 0.8rem; background: var(--card-bg); border: 1px solid var(--line); border-radius: 4px;
transition: background 0.1s, border-color 0.1s;
}
.cuisine-hero li a:hover { background: var(--hover-bg); border-color: var(--ink); color: var(--ink); }
.cuisine-hero .ch-name { font-weight: 500; }
.cuisine-hero .ch-n { font-family: ui-monospace, Menlo, monospace; font-size: 0.78rem; color: var(--ink-faint); }
/* City landing page grade row */
.grade-row { display: flex; gap: 0.75rem; margin-top: 1.25rem; flex-wrap: wrap; }
.grade-stat {
display: flex; align-items: center; gap: 0.5rem;
padding: 0.5rem 0.85rem; background: var(--card-bg); border: 1px solid var(--line); border-radius: 4px;
transition: background 0.1s, border-color 0.1s;
}
.grade-stat:hover { background: var(--hover-bg); border-color: var(--ink); color: var(--ink); }
.grade-stat .n { font-family: ui-monospace, Menlo, monospace; font-variant-numeric: tabular-nums; }
.grade-pill.grade-A { background: var(--grade-a); }
.grade-pill.grade-B { background: var(--grade-b); }
.grade-pill.grade-C { background: var(--grade-c); }
.violation-block { border-top: 1px solid var(--line); padding: 0.75rem 0; }
.violation-block summary { cursor: pointer; padding: 0.25rem 0; font-size: 0.95rem; display: flex; align-items: center; gap: 0.75rem; }
.violation-block summary .muted { color: var(--ink-faint); font-size: 0.85rem; }
.violation-list { list-style: none; padding: 0.5rem 0 0.25rem 0; margin: 0; }
.violation-list li { display: flex; gap: 0.5rem; padding: 0.5rem 0; border-bottom: 1px solid var(--line); align-items: baseline; font-size: 0.88rem; line-height: 1.4; }
.violation-list li:last-child { border-bottom: none; }
.violation-list .points { color: var(--coral); font-weight: 600; font-variant-numeric: tabular-nums; min-width: 32px; }
.violation-list .vcode { font-family: ui-monospace, Menlo, monospace; font-size: 0.75rem; color: var(--ink-faint); min-width: 60px; }
.violation-list .vdesc { color: var(--ink); flex: 1; }
.violation-list .vstatus { font-size: 0.7rem; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.05em; padding: 0.05rem 0.4rem; background: rgba(0,0,0,0.04); border-radius: 3px; }
.meta dl { display: grid; grid-template-columns: max-content 1fr; gap: 0.5rem 1.5rem; margin: 2rem 0; font-size: 0.9rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.meta dt { color: var(--ink-soft); text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.08em; align-self: center; }
.meta dd { margin: 0; }
.site-footer { max-width: 1100px; margin: 4rem auto 2rem; padding: 2rem; border-top: 1px solid var(--line); font-size: 0.85rem; color: var(--ink-soft); }
.site-footer .muted { color: var(--ink-faint); }
.site-footer .small { font-size: 0.75rem; margin-top: 1.5rem; }