Files
DEKRA_sponsor_seite/WebApp/styles.css
2026-02-26 09:09:56 +01:00

638 lines
23 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.
/* ═══════════════════════════════════════════════════
TRUCK & COUNTRY Festival Guide
Spec v2: Overlay lighter · Hover pull-in · Guide section
═══════════════════════════════════════════════════ */
:root {
--c-bg: #1A1208;
--c-bg2: #2C2010;
--c-accent: #D4820A;
--c-accent-light: #F5A623;
--c-text: #F5F0E8;
--c-muted: #A89880;
--c-surface: #241908;
--c-border: rgba(212,130,10,0.22);
--c-truck-bg: #0A1F09;
--c-family-bg: #2A1200;
--radius: 4px;
--radius-lg: 10px;
--t-fast: 0.22s cubic-bezier(0.4,0,0.2,1);
--t-med: 0.35s cubic-bezier(0.4,0,0.2,1);
}
/* ── Reset ── */
*,*::before,*::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: 'Barlow', 'Segoe UI', sans-serif;
background: var(--c-bg);
color: var(--c-text);
min-height: 100dvh;
overflow-x: hidden;
-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--c-accent-light); text-decoration: none; transition: color var(--t-fast); }
a:hover { color: var(--c-text); }
button { cursor: pointer; font-family: inherit; border: none; background: none; }
:focus-visible { outline: 2px solid var(--c-accent); outline-offset: 3px; }
/* ══════════════ HEADER ══════════════ */
.site-header {
position: sticky; top: 0; z-index: 100;
background: rgba(26,18,8,0.94);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
border-bottom: 1px solid var(--c-border);
}
.header-inner {
max-width: 1200px; margin: 0 auto;
padding: 10px 20px;
display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.header-brand {
display: flex; align-items: center; gap: 12px;
background: rgba(245, 240, 232, 0.95);
padding: 8px 12px;
border-radius: 8px;
}
.hdr-logo { height: 38px; width: auto; object-fit: contain; }
.hdr-event-meta { display: flex; flex-direction: column; line-height: 1.2; }
.hdr-event-name {
font-family: 'Bebas Neue', sans-serif;
font-size: 1.1rem; letter-spacing: 0.07em; color: var(--c-accent-light);
}
.hdr-event-dates {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.65rem; font-weight: 300; letter-spacing: 0.1em;
color: #000; text-transform: uppercase;
}
/* #4: optional center hook */
.hdr-hook {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.75rem; font-weight: 600; letter-spacing: 0.12em;
text-transform: uppercase; color: var(--c-muted);
display: none;
}
@media (min-width: 860px) { .hdr-hook { display: block; } }
.header-sponsor {
display: flex; align-items: center; gap: 10px;
background: rgba(245, 240, 232, 0.95);
padding: 8px 12px;
border-radius: 8px;
}
.hdr-presented {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.62rem; font-weight: 300; letter-spacing: 0.14em;
color: #000; text-transform: uppercase; white-space: nowrap;
}
.hdr-sponsor-logo { height: 30px; width: auto; object-fit: contain; opacity: 0.85; }
/* ══════════════ HERO SPLIT ══════════════ */
.hero {
position: relative;
display: flex;
height: calc(100svh - 61px);
min-height: 480px;
max-height: 900px;
overflow: hidden;
}
/* #2.2/#2.3: Panels reagieren auf Hover des jeweils anderen */
.hero-half {
position: relative;
flex: 1;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
cursor: pointer;
text-align: left;
color: var(--c-text);
/* Reset */
border: none;
padding: 0;
transition:
flex var(--t-med),
filter var(--t-med),
opacity var(--t-med);
}
/* Wenn ANDERE Seite gehovered: abdunkeln */
.hero:has(.hero-half--truck:hover) .hero-half--family,
.hero:has(.hero-half--truck:focus-within) .hero-half--family {
flex: 0.82;
opacity: 0.75;
filter: brightness(0.7);
}
.hero:has(.hero-half--family:hover) .hero-half--truck,
.hero:has(.hero-half--family:focus-within) .hero-half--truck {
flex: 0.82;
opacity: 0.75;
filter: brightness(0.7);
}
/* Aktive Seite wächst */
.hero:has(.hero-half--truck:hover) .hero-half--truck,
.hero:has(.hero-half--truck:focus-within) .hero-half--truck { flex: 1.18; }
.hero:has(.hero-half--family:hover) .hero-half--family,
.hero:has(.hero-half--family:focus-within) .hero-half--family { flex: 1.18; }
/* #2.4: Mobile tap */
.hero-half:active { transform: scale(0.985); transition: transform 0.1s; }
/* Eigenfarbe ohne Foto */
.hero-half--truck { background: linear-gradient(160deg, #0A1F09 0%, #1E4A1A 50%, #2A6E22 100%); }
.hero-half--family { background: linear-gradient(200deg, #2A1200 0%, #5C2E00 50%, #8B4500 100%); }
/* Bild-Layer */
.half-img {
position: absolute; inset: 0;
background-size: cover;
background-position: center;
transition: transform var(--t-med);
will-change: transform;
}
/* #2.2: Bild beim Hover leicht reinzoomen */
.hero-half:hover .half-img,
.hero-half:focus-within .half-img { transform: scale(1.05); }
/* #1.1: Overlay reduziert Bild bleibt sichtbar */
.half-overlay {
position: absolute; inset: 0;
pointer-events: none;
transition: opacity var(--t-med);
}
.half-overlay--truck {
background: linear-gradient(
160deg,
rgba(0,0,0,0.42) 0%,
rgba(10,31,9,0.38) 50%,
rgba(0,0,0,0.52) 100%
);
}
.half-overlay--family {
background: linear-gradient(
200deg,
rgba(0,0,0,0.42) 0%,
rgba(42,18,0,0.38) 50%,
rgba(0,0,0,0.52) 100%
);
}
/* #1.2: Card weniger schwarz, mehr Bildwirkung */
.half-content {
position: relative; z-index: 2;
width: min(360px, 80%);
padding: clamp(22px, 3.5vw, 38px) clamp(20px, 3.5vw, 36px);
background: rgba(10,10,10,0.58);
backdrop-filter: blur(10px) saturate(1.3);
-webkit-backdrop-filter: blur(10px) saturate(1.3);
border: 1px solid rgba(255,255,255,0.08);
border-radius: var(--radius-lg);
box-shadow: 0 4px 40px rgba(0,0,0,0.35);
/* #2.2: Card hebt sich beim Hover */
transition: transform var(--t-fast), box-shadow var(--t-fast);
}
.hero-half:hover .half-content,
.hero-half:focus-within .half-content {
transform: translateY(-4px);
box-shadow: 0 12px 50px rgba(0,0,0,0.5);
}
.half-tag {
display: inline-block;
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.68rem; font-weight: 600; letter-spacing: 0.15em;
text-transform: uppercase; padding: 3px 10px;
border-radius: 2px; margin-bottom: 10px;
}
.hero-half--truck .half-tag {
background: rgba(74,138,66,0.22); border: 1px solid rgba(74,138,66,0.4); color: #A8E0A0;
}
.hero-half--family .half-tag {
background: rgba(196,122,30,0.22); border: 1px solid rgba(196,122,30,0.45); color: #F5C878;
}
.half-title {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(2.6rem, 5.5vw, 4.4rem);
line-height: 0.9; letter-spacing: 0.03em;
margin-bottom: 14px;
/* Text-Shadow statt Card-Opacity für Lesbarkeit */
text-shadow: 0 2px 16px rgba(0,0,0,0.7), 0 0 40px rgba(0,0,0,0.4);
}
.hero-half--truck .half-title { color: #C8F0C0; }
.hero-half--family .half-title { color: #FFE4B0; }
.half-highlights {
list-style: none; margin-bottom: 20px;
display: flex; flex-direction: column; gap: 5px;
}
.half-highlights li {
font-family: 'Barlow Condensed', sans-serif;
font-size: clamp(0.76rem, 1.8vw, 0.9rem);
font-weight: 300; letter-spacing: 0.04em;
color: rgba(245,240,232,0.8);
padding-left: 14px; position: relative;
}
.half-highlights li::before {
content: ''; position: absolute; left: 0;
font-size: 1rem; line-height: 1;
}
.hero-half--truck .half-highlights li::before { color: #5AAA50; }
.hero-half--family .half-highlights li::before { color: #D4820A; }
.half-cta {
display: flex; align-items: center; justify-content: space-between; gap: 10px;
width: 100%; padding: 13px 18px;
border-radius: var(--radius);
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(0.88rem, 2vw, 1.1rem);
letter-spacing: 0.1em;
transition: transform var(--t-fast), box-shadow var(--t-fast), filter var(--t-fast);
}
.hero-half--truck .half-cta {
background: #5AAA50; color: #061206;
box-shadow: 0 4px 16px rgba(74,138,66,0.35);
}
.hero-half--family .half-cta {
background: var(--c-accent); color: #1F1005;
box-shadow: 0 4px 16px rgba(212,130,10,0.4);
}
.hero-half:hover .half-cta,
.hero-half:focus-within .half-cta { filter: brightness(1.1); }
.half-arrow { transition: transform var(--t-fast); font-size: 1.1em; }
.hero-half:hover .half-arrow,
.hero-half:focus-within .half-arrow { transform: translateX(5px); }
/* Trennlinie links/rechts zwischen Panels */
.hero-half--truck { border-right: 1px solid rgba(255,255,255,0.06); }
.hero-half--family { border-left: 1px solid rgba(255,255,255,0.06); }
/* #3: Mittlerer Divider "WAS PASST ZU DIR?" */
.hero-seam {
position: absolute;
top: 0; bottom: 0; left: 50%;
transform: translateX(-50%);
z-index: 10;
pointer-events: none;
display: flex; flex-direction: column; align-items: center;
width: 0; overflow: visible;
}
.seam-line {
flex: 1; width: 1px;
background: linear-gradient(to bottom, transparent, rgba(255,255,255,0.12), transparent);
}
.seam-or-pill {
flex-shrink: 0;
background: rgba(0,0,0,0.55);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 20px;
padding: 8px 16px;
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.68rem; font-weight: 600;
letter-spacing: 0.16em; text-transform: uppercase;
color: rgba(245,240,232,0.6);
white-space: nowrap;
text-align: center;
line-height: 1.4;
animation: pill-in 0.5s 0.3s ease both;
}
@keyframes pill-in {
from { opacity: 0; transform: scale(0.8); }
to { opacity: 1; transform: scale(1); }
}
/* ── Mobile ── */
@media (max-width: 640px) {
.hero { flex-direction: column; height: auto; max-height: none; }
.hero-half { min-height: 46svh; flex: none !important;
filter: none !important; opacity: 1 !important; }
.hero-half:hover .half-img { transform: none; }
.hero-half:active { transform: scale(0.985); }
.half-content { width: min(340px, 88%); }
.hero-seam {
position: relative; top: auto; left: auto; transform: none;
width: 100%; height: auto; flex-direction: row;
background: var(--c-bg); border-top: 1px solid var(--c-border);
border-bottom: 1px solid var(--c-border);
justify-content: center; align-items: center; padding: 10px 0;
overflow: visible;
}
.seam-line { display: none; }
.seam-or-pill {
background: transparent; border: none; backdrop-filter: none;
padding: 0; font-size: 0.72rem; color: var(--c-muted);
}
.hdr-presented { display: none; }
}
/* ══════════════ EVENT STRIP ══════════════ */
.event-strip {
background: var(--c-surface);
border-bottom: 1px solid var(--c-border);
padding: 9px 20px;
display: flex; flex-wrap: wrap; align-items: center;
justify-content: center; gap: 10px;
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.76rem; letter-spacing: 0.1em; text-transform: uppercase;
}
.event-strip-name { color: var(--c-accent-light); font-weight: 600; }
.event-strip-dates,
.event-strip-loc { color: var(--c-muted); font-weight: 300; }
.event-strip-sep { color: rgba(168,152,128,0.3); }
/* ══════════════ GUIDE PREVIEW (#8) ══════════════ */
.guide-preview {
padding: clamp(48px, 7vw, 80px) 20px;
background: var(--c-bg);
border-bottom: 1px solid var(--c-border);
}
.guide-preview-inner { max-width: 980px; margin: 0 auto; }
.guide-preview-header { text-align: center; margin-bottom: 40px; }
.guide-preview-eyebrow {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.7rem; font-weight: 600; letter-spacing: 0.2em;
text-transform: uppercase; color: var(--c-accent);
margin-bottom: 8px;
}
.guide-preview-title {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(1.8rem, 4vw, 2.8rem); letter-spacing: 0.05em; color: var(--c-text);
}
.guide-preview-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 16px;
}
.guide-card {
background: var(--c-surface);
border: 1px solid var(--c-border);
border-radius: var(--radius-lg);
overflow: hidden;
}
.guide-card-q {
padding: 14px 16px;
background: rgba(212,130,10,0.08);
border-bottom: 1px solid var(--c-border);
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.82rem; font-weight: 600;
letter-spacing: 0.04em; color: var(--c-accent-light);
}
.guide-card-q::before { content: '👤 '; }
.guide-card-a {
padding: 14px 16px;
font-size: 0.82rem; line-height: 1.6; color: var(--c-muted);
}
.guide-card-a::before {
content: '🤖 ';
font-size: 0.9em;
}
/* ══════════════ BENEFITS ══════════════ */
.benefits-section {
padding: clamp(40px, 6vw, 72px) 20px;
background: var(--c-bg2);
border-bottom: 1px solid var(--c-border);
}
.benefits-inner { max-width: 1000px; margin: 0 auto; }
.benefits-list {
display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 20px; list-style: none;
}
.benefit-card {
background: var(--c-surface); border: 1px solid var(--c-border);
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
transition: transform var(--t-fast), box-shadow var(--t-fast), border-color var(--t-fast);
position: relative; overflow: hidden;
}
.benefit-card::before {
content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px;
background: linear-gradient(90deg, transparent, var(--c-accent), transparent);
opacity: 0; transition: opacity var(--t-fast);
}
.benefit-card:hover { transform: translateY(-4px);
box-shadow: 0 8px 32px rgba(0,0,0,0.35); border-color: rgba(212,130,10,0.4); }
.benefit-card:hover::before { opacity: 1; }
.benefit-icon { font-size: 2.4rem; line-height: 1; margin-bottom: 14px; display: block; }
.benefit-title {
font-family: 'Bebas Neue', sans-serif;
font-size: 1.3rem; letter-spacing: 0.1em;
color: var(--c-accent-light); margin-bottom: 8px;
}
.benefit-text { font-size: 0.82rem; line-height: 1.6; color: var(--c-muted); }
/* ══════════════ OFFICIAL SECTION ══════════════ */
.official-section {
padding: clamp(48px, 7vw, 88px) 20px;
background: var(--c-bg); text-align: center;
}
.official-inner { max-width: 640px; margin: 0 auto; }
.official-headline {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(1.8rem, 5vw, 2.8rem); letter-spacing: 0.06em;
color: var(--c-text); margin-bottom: 12px;
}
.official-text { font-size: 0.88rem; line-height: 1.65; color: var(--c-muted); margin-bottom: 28px; }
.official-btns { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.official-btn {
display: inline-flex; align-items: center; gap: 6px;
padding: 12px 26px; border-radius: var(--radius);
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.9rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
transition: transform var(--t-fast), box-shadow var(--t-fast);
}
.official-btn:hover { transform: translateY(-2px); }
.official-btn--primary {
background: var(--c-accent); color: #1A1208;
box-shadow: 0 4px 20px rgba(212,130,10,0.3);
}
.official-btn--primary:hover {
background: var(--c-accent-light); box-shadow: 0 6px 28px rgba(212,130,10,0.45); color: #1A1208;
}
.official-btn--secondary {
background: transparent; color: var(--c-accent-light); border: 1px solid var(--c-accent);
}
.official-btn--secondary:hover { background: rgba(212,130,10,0.1); color: var(--c-text); }
/* ══════════════ FOOTER ══════════════ */
.site-footer {
padding: 20px; background: #100C05;
border-top: 1px solid var(--c-border);
}
.footer-inner {
max-width: 1000px; margin: 0 auto;
display: flex; align-items: center; justify-content: flex-end;
}
.footer-legal {
display: flex; align-items: center; gap: 10px;
font-size: 0.72rem; color: var(--c-muted);
}
.footer-legal a { color: var(--c-muted); transition: color var(--t-fast); }
.footer-legal a:hover { color: var(--c-text); }
/* ══════════════ CHAT MODAL ══════════════ */
.chat-modal {
position: fixed; inset: 0; z-index: 200;
display: flex; align-items: flex-end; justify-content: center;
}
.chat-modal[hidden] { display: none; }
.chat-modal-backdrop {
position: absolute; inset: 0;
background: rgba(10,6,2,0.72);
backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
animation: bdFadeIn 0.25s ease both;
}
@keyframes bdFadeIn { from { opacity:0; } to { opacity:1; } }
.chat-modal-panel {
position: relative; z-index: 1;
width: 100%; max-width: 520px;
max-height: min(82vh, 700px);
margin: 0 12px 12px;
background: var(--c-bg2);
border: 1px solid var(--c-border);
border-radius: var(--radius-lg) var(--radius-lg) var(--radius) var(--radius);
box-shadow: 0 -8px 60px rgba(0,0,0,0.6);
display: flex; flex-direction: column; overflow: hidden;
animation: panelUp 0.32s cubic-bezier(0.22,1,0.36,1) both;
}
@keyframes panelUp {
from { transform: translateY(40px); opacity: 0; }
to { transform: translateY(0); opacity: 1; }
}
.chat-modal-header {
display: flex; align-items: center; justify-content: space-between;
padding: 14px 16px 14px 18px;
border-bottom: 1px solid var(--c-border);
background: rgba(16,12,5,0.7); flex-shrink: 0;
}
.chat-modal-title-row { display: flex; align-items: center; gap: 10px; }
.chat-status-dot {
width: 8px; height: 8px; border-radius: 50%;
background: #4CAF50; box-shadow: 0 0 6px rgba(76,175,80,0.7);
animation: pulse 2s infinite;
}
@keyframes pulse {
0%,100% { opacity:1; transform:scale(1); }
50% { opacity:0.6; transform:scale(0.9); }
}
.chat-modal-title {
font-family: 'Bebas Neue', sans-serif;
font-size: 1.15rem; letter-spacing: 0.1em; color: var(--c-accent-light);
}
.chat-modal-header-actions { display: flex; align-items: center; gap: 10px; }
.chat-header-ticket-btn {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.72rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
color: #1A1208; background: var(--c-accent);
padding: 5px 12px; border-radius: var(--radius);
transition: background var(--t-fast), transform var(--t-fast);
}
.chat-header-ticket-btn:hover { background: var(--c-accent-light); transform: translateY(-1px); color: #1A1208; }
.chat-close-btn {
width: 30px; height: 30px; display: flex; align-items: center; justify-content: center;
border-radius: var(--radius); color: var(--c-muted); font-size: 0.9rem;
transition: background var(--t-fast), color var(--t-fast);
}
.chat-close-btn:hover { background: rgba(255,255,255,0.08); color: var(--c-text); }
.chat-messages {
flex: 1; overflow-y: auto;
padding: 16px; display: flex; flex-direction: column; gap: 12px;
scroll-behavior: smooth;
}
.chat-messages::-webkit-scrollbar { width: 4px; }
.chat-messages::-webkit-scrollbar-track { background: transparent; }
.chat-messages::-webkit-scrollbar-thumb { background: var(--c-border); border-radius: 2px; }
.chat-bubble {
max-width: 82%; padding: 10px 14px;
border-radius: 12px; font-size: 0.85rem; line-height: 1.55;
word-break: break-word;
animation: bubbleIn 0.22s ease both;
}
@keyframes bubbleIn {
from { opacity:0; transform:scale(0.94) translateY(6px); }
to { opacity:1; transform:scale(1) translateY(0); }
}
.chat-bubble--bot {
align-self: flex-start;
background: var(--c-surface); border: 1px solid var(--c-border);
color: var(--c-text); border-bottom-left-radius: 3px;
}
.chat-bubble--user {
align-self: flex-end;
background: linear-gradient(135deg, var(--c-accent) 0%, #A86208 100%);
color: #1A1208; font-weight: 600; border-bottom-right-radius: 3px;
}
.chat-bubble--error {
align-self: flex-start;
background: rgba(180,50,30,0.15); border: 1px solid rgba(180,50,30,0.3);
color: #F5C0B0; border-bottom-left-radius: 3px;
}
.chat-typing {
align-self: flex-start; display: flex; gap: 4px; padding: 12px 14px;
background: var(--c-surface); border: 1px solid var(--c-border);
border-radius: 12px; border-bottom-left-radius: 3px;
}
.chat-typing span {
width: 6px; height: 6px; border-radius: 50%;
background: var(--c-muted); animation: typingDot 1.2s infinite;
}
.chat-typing span:nth-child(2) { animation-delay: 0.2s; }
.chat-typing span:nth-child(3) { animation-delay: 0.4s; }
@keyframes typingDot {
0%,60%,100% { opacity:0.3; transform:translateY(0); }
30% { opacity:1; transform:translateY(-3px); }
}
.chat-fallback-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.chat-fallback-link {
font-size: 0.78rem; font-family: 'Barlow Condensed', sans-serif;
font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
color: var(--c-accent-light); border: 1px solid rgba(212,130,10,0.4);
padding: 5px 12px; border-radius: var(--radius);
transition: background var(--t-fast), color var(--t-fast);
}
.chat-fallback-link:hover { background: rgba(212,130,10,0.12); color: var(--c-text); }
.chat-footer-bar {
border-top: 1px solid var(--c-border); padding: 10px 14px 12px;
background: rgba(16,12,5,0.7); flex-shrink: 0;
}
.chat-info-row { display: flex; justify-content: flex-end; margin-bottom: 8px; }
.chat-info-link {
font-family: 'Barlow Condensed', sans-serif;
font-size: 0.68rem; font-weight: 600; letter-spacing: 0.1em;
text-transform: uppercase; color: var(--c-muted); transition: color var(--t-fast);
}
.chat-info-link:hover { color: var(--c-accent-light); }
.chat-input-row { display: flex; gap: 8px; align-items: center; }
.chat-input {
flex: 1; background: var(--c-bg);
border: 1px solid var(--c-border); border-radius: var(--radius);
color: var(--c-text); font-family: 'Barlow', sans-serif;
font-size: 0.88rem; padding: 10px 14px; outline: none;
transition: border-color var(--t-fast), box-shadow var(--t-fast);
caret-color: var(--c-accent);
}
.chat-input::placeholder { color: var(--c-muted); opacity: 0.7; }
.chat-input:focus { border-color: var(--c-accent); box-shadow: 0 0 0 3px rgba(212,130,10,0.12); }
.chat-send-btn {
width: 40px; height: 40px; flex-shrink: 0;
display: flex; align-items: center; justify-content: center;
background: var(--c-accent); border-radius: var(--radius); color: #1A1208;
transition: background var(--t-fast), transform var(--t-fast), box-shadow var(--t-fast);
}
.chat-send-btn:hover { background: var(--c-accent-light); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(212,130,10,0.35); }
.chat-send-btn:active { transform: translateY(0); }
.chat-send-btn:disabled { opacity: 0.4; cursor: not-allowed; transform: none; box-shadow: none; }
@media (max-width: 480px) {
.chat-modal-panel { max-height: 90svh; margin: 0; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
}