/* ========================================================================== Dialysezentrum Berlin-Mahlsdorf - Modern Responsive Stylesheet Design Language: Modern Medical / Clean Nephrology Aesthetic ========================================================================== */ @font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; src: url('/fonts/GoogleOpenSans.ttf') format('truetype'); font-display: swap; } :root { /* Medical Brand Palette */ --primary: #0b4f6c; --primary-dark: #07384d; --primary-light: #e6f4f8; --primary-hover: #0e6285; --accent: #0277b5; --accent-hover: #0369a1; --accent-light: #e0f2fe; --accent-dark: #075985; --secondary: #0d9488; --secondary-light: #ccfbf1; /* Neutral Palette */ --bg-body: #f8fafc; --bg-card: #ffffff; --bg-alt: #f1f5f9; --text-main: #1e293b; --text-muted: #475569; --text-light: #94a3b8; --text-white: #ffffff; --border: #e2e8f0; --border-focus: #0277b5; /* State Colors */ --success: #166534; --success-bg: #dcfce7; --success-border: #86efac; --danger: #b91c1c; --danger-bg: #fee2e2; --danger-border: #fca5a5; --warning: #b45309; --warning-bg: #fef3c7; /* Shadows */ --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05); --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.08), 0 2px 4px -2px rgba(0, 0, 0, 0.04); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.08), 0 4px 6px -4px rgba(0, 0, 0, 0.03); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04); /* Border Radius */ --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-xl: 24px; --radius-full: 9999px; /* Spacing & Transitions */ --transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); --container-max: 1200px; } /* ========================================================================== Dark Mode Theme Variables & Overrides ========================================================================== */ [data-theme="dark"] { --primary: #15658a; --primary-dark: #e2f1f8; --primary-light: #1a3650; --primary-hover: #1b7aa6; --accent: #38bdf8; --accent-hover: #7dd3fc; --accent-light: #1e3a52; --accent-dark: #bae6fd; --secondary: #14b8a6; --secondary-light: #134e4a; --bg-body: #0b1520; --bg-card: #122130; --bg-alt: #182b3e; --text-main: #e2e8f0; --text-muted: #94a3b8; --text-light: #64748b; --text-white: #ffffff; --border: #23394f; --border-focus: #38bdf8; --success: #86efac; --success-bg: #064e3b; --success-border: #059669; --danger: #fca5a5; --danger-bg: #450a0a; --danger-border: #dc2626; --warning: #fcd34d; --warning-bg: #451a03; --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.35); --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.45), 0 1px 2px rgba(0, 0, 0, 0.3); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.5), 0 2px 4px -2px rgba(0, 0, 0, 0.35); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.55), 0 4px 6px -4px rgba(0, 0, 0, 0.4); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.6), 0 8px 10px -6px rgba(0, 0, 0, 0.45); color-scheme: dark; } /* ========================================================================== Reset & Base Styles ========================================================================== */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } body { font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; color: var(--text-main); background-color: var(--bg-body); line-height: 1.65; font-weight: 400; min-height: 100vh; display: flex; flex-direction: column; overflow-x: hidden; } img { max-width: 100%; height: auto; display: block; } a { color: var(--accent); text-decoration: none; transition: var(--transition); } a:hover { color: var(--accent-hover); text-decoration: underline; } /* Accessibility: Skip Link & Screen-Reader Utility */ .skip-link { position: absolute; top: -100px; left: 1rem; z-index: 9999; background-color: var(--primary-dark); color: #ffffff; padding: 0.75rem 1.25rem; border-radius: var(--radius-md); font-weight: 700; box-shadow: var(--shadow-lg); border: 2px solid #ffffff; text-decoration: none; } .skip-link:focus { top: 0.75rem; color: #ffffff; outline: 3px solid var(--accent-light); outline-offset: 2px; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Accessibility: Keyboard Focus Visible */ a:focus-visible, button:focus-visible, .btn:focus-visible, .nav-link:focus-visible, .nav-toggle:focus-visible, .gallery-item:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; } .top-bar a:focus-visible, .site-footer a:focus-visible, .hero-banner .btn:focus-visible { outline: 3px solid #bae6fd; outline-offset: 2px; } p { margin-bottom: 1.15rem; } p:last-child { margin-bottom: 0; } h1, h2, h3, h4, h5, h6 { color: var(--primary-dark); font-weight: 700; line-height: 1.25; margin-bottom: 1rem; } h1, .h1-style { font-size: 2rem; letter-spacing: -0.02em; position: relative; padding-bottom: 0.75rem; margin-top: 0; margin-bottom: 1.5rem; } h1::after, .h1-style::after { content: ''; position: absolute; bottom: 0; left: 0; width: 50px; height: 4px; background: linear-gradient(90deg, var(--accent), var(--secondary)); border-radius: var(--radius-full); } h2 { font-size: 1.5rem; margin-top: 1.75rem; margin-bottom: 0.85rem; letter-spacing: -0.01em; } h3 { font-size: 1.25rem; margin-bottom: 0.75rem; } ul, ol { margin-bottom: 1.25rem; padding-left: 1.5rem; } li { margin-bottom: 0.4rem; } .clear { clear: both; } /* ========================================================================== Container & Layout Structure ========================================================================== */ #outer-container { width: 100%; min-height: 100vh; display: flex; flex-direction: column; } .container { width: 100%; max-width: var(--container-max); margin-left: auto; margin-right: auto; padding-left: 1.25rem; padding-right: 1.25rem; } .site-main { flex: 1 0 auto; padding: 2.5rem 0 3.5rem; } /* ========================================================================== Top Header Bar ========================================================================== */ .top-bar { background-color: var(--primary-dark); color: #d1e5ed; font-size: 0.82rem; padding: 0.45rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.08); white-space: nowrap; } .top-bar .container { max-width: 1400px; } .top-bar-inner { display: flex; justify-content: center; align-items: center; flex-wrap: nowrap; gap: 2rem; width: 100%; } .top-bar-left { display: flex; align-items: center; gap: 1.25rem; flex-shrink: 0; white-space: nowrap; } .top-bar-right { display: flex; align-items: center; gap: 1.25rem; flex-shrink: 0; margin-left: 0; white-space: nowrap; } .top-bar a { color: #e2f1f8; display: inline-flex; align-items: center; gap: 0.4rem; text-decoration: none; font-weight: 500; white-space: nowrap; } .top-bar a:hover { color: #ffffff; text-decoration: underline; } .top-bar-item { display: inline-flex; align-items: center; gap: 0.4rem; white-space: nowrap; flex-shrink: 0; } .top-bar-icon { width: 14px; height: 14px; fill: currentColor; opacity: 0.85; flex-shrink: 0; } /* Anti-Spam Email Obfuscation (RTL Bidi Fallback) */ .c-rev { unicode-bidi: bidi-override; direction: rtl; display: inline; } /* ========================================================================== Main Header & Navigation ========================================================================== */ .site-header { background-color: var(--bg-card); box-shadow: var(--shadow-sm); position: sticky; top: 0; z-index: 1000; transition: var(--transition); } .header-inner { display: flex; align-items: center; justify-content: space-between; padding: 0.6rem 0; gap: 1rem; } /* Logo */ .site-logo { display: inline-flex; align-items: center; text-decoration: none; line-height: 1; transition: opacity 0.2s ease; } .site-logo:hover { text-decoration: none; opacity: 0.9; } .site-logo-img { height: 73px; width: auto; max-width: 390px; object-fit: contain; display: block; } .site-logo-dark { display: none; } [data-theme="dark"] .site-logo-light { display: none; } [data-theme="dark"] .site-logo-dark { display: block; } .logo-badge { width: 44px; height: 44px; background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: #fff; flex-shrink: 0; box-shadow: 0 4px 10px rgba(11, 79, 108, 0.25); } .logo-badge svg { width: 26px; height: 26px; fill: currentColor; } .logo-text { display: flex; flex-direction: column; } .logo-title { font-size: 1.2rem; font-weight: 800; color: var(--primary-dark); line-height: 1.15; letter-spacing: -0.01em; } .logo-title span { color: var(--accent); } .logo-sub { font-size: 0.72rem; color: var(--text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-top: 2px; } /* Navigation Links */ .nav-menu { display: flex; align-items: center; gap: 0.25rem; list-style: none; margin: 0; padding: 0; } .nav-item { display: inline-block; } .nav-link { display: block; padding: 0.55rem 0.95rem; color: var(--text-main); font-size: 0.95rem; font-weight: 600; border-radius: var(--radius-full); text-decoration: none; transition: var(--transition); position: relative; white-space: nowrap; } .nav-link:hover { color: var(--accent); background-color: var(--primary-light); text-decoration: none; } .nav-link.active { color: #ffffff; background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); box-shadow: 0 2px 8px rgba(2, 132, 199, 0.3); text-decoration: none; } /* Header Actions */ .header-actions { display: flex; align-items: center; gap: 0.65rem; } .lang-switch { display: inline-flex; align-items: center; background-color: var(--bg-alt); border: 1px solid var(--border); border-radius: var(--radius-full); padding: 0.18rem; gap: 0.15rem; flex-shrink: 0; } .lang-link { display: inline-flex; align-items: center; justify-content: center; padding: 0.3rem 0.55rem; font-size: 0.78rem; font-weight: 700; color: var(--text-muted); border-radius: var(--radius-full); text-decoration: none; line-height: 1; transition: var(--transition); } .lang-link:hover { color: var(--primary-dark); text-decoration: none; } .lang-link.active { background-color: var(--primary); color: #ffffff; box-shadow: 0 1px 4px rgba(11, 79, 108, 0.2); } .header-cta-btn { display: inline-flex; align-items: center; gap: 0.45rem; background-color: var(--accent); color: #fff; padding: 0.55rem 1.1rem; border-radius: var(--radius-full); font-size: 0.9rem; font-weight: 600; text-decoration: none; transition: var(--transition); box-shadow: 0 2px 8px rgba(2, 132, 199, 0.25); white-space: nowrap; flex-shrink: 0; } .header-cta-btn:hover { background-color: var(--accent-hover); color: #fff; text-decoration: none; transform: translateY(-1px); } .header-cta-btn svg { width: 16px; height: 16px; fill: currentColor; flex-shrink: 0; } /* Mobile Toggle Hamburger */ .nav-toggle { display: none; background: none; border: 1px solid var(--border); padding: 0.5rem; border-radius: var(--radius-md); cursor: pointer; color: var(--primary-dark); align-items: center; justify-content: center; transition: var(--transition); } .nav-toggle:hover { background-color: var(--bg-alt); } .nav-toggle svg { width: 24px; height: 24px; fill: currentColor; } /* ========================================================================== Hero / Motto Banner ========================================================================== */ .hero-banner { background: linear-gradient(135deg, #07384d 0%, #0b4f6c 50%, #0d5c75 100%); color: #ffffff; padding: 3.5rem 0 4.5rem; position: relative; overflow: hidden; } .hero-banner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: radial-gradient(circle at 80% 20%, rgba(2, 132, 199, 0.25) 0%, transparent 60%); pointer-events: none; } .hero-content { position: relative; z-index: 2; max-width: 100%; } .hero-badge { display: inline-flex; align-items: center; gap: 0.5rem; background-color: rgba(255, 255, 255, 0.15); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); padding: 0.35rem 0.85rem; border-radius: var(--radius-full); font-size: 0.85rem; font-weight: 600; color: #bae6fd; margin-bottom: 1.25rem; border: 1px solid rgba(255, 255, 255, 0.2); } .hero-title { color: #ffffff; font-size: 2.5rem; font-weight: 800; line-height: 1.15; margin-bottom: 1rem; letter-spacing: -0.02em; } .hero-subtitle { font-size: 1.2rem; color: #e2f1f8; font-style: italic; margin-bottom: 1rem; line-height: 1.4; } .hero-doctors { font-size: 0.95rem; color: #93c5fd; margin-bottom: 1.75rem; font-weight: 500; } .hero-actions { display: flex; flex-wrap: wrap; gap: 0.85rem; } /* Wave divider */ .hero-wave { position: absolute; bottom: 0; left: 0; width: 100%; overflow: hidden; line-height: 0; transform: translateY(1px); } .hero-wave svg { position: relative; display: block; width: calc(100% + 1.3px); height: 40px; } .hero-wave .shape-fill { fill: var(--bg-body); } /* Compact page banner on subpages */ .page-banner { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 100%); color: #fff; padding: 2.25rem 0; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .page-banner-inner { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .page-banner-title { color: #fff; font-size: 1.75rem; font-weight: 700; margin: 0; } .page-banner-title::after { display: none; } .breadcrumb { display: flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; color: #bae6fd; } .breadcrumb a { color: #e0f2fe; } .breadcrumb a:hover { color: #ffffff; } /* ========================================================================== Buttons ========================================================================== */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.7rem 1.4rem; border-radius: var(--radius-full); font-size: 0.95rem; font-weight: 600; text-decoration: none; border: 1px solid transparent; cursor: pointer; transition: var(--transition); line-height: 1.2; white-space: nowrap; flex-shrink: 0; } .btn svg { flex-shrink: 0; } .btn:hover { text-decoration: none; transform: translateY(-1px); } .btn-primary { background-color: var(--accent); color: #ffffff; box-shadow: 0 4px 12px rgba(2, 132, 199, 0.25); } .btn-primary:hover { background-color: var(--accent-hover); color: #ffffff; box-shadow: 0 6px 16px rgba(2, 132, 199, 0.35); } .btn-secondary { background-color: var(--primary); color: #ffffff; box-shadow: 0 4px 12px rgba(11, 79, 108, 0.2); } .btn-secondary:hover { background-color: var(--primary-hover); color: #ffffff; } .btn-outline { background-color: transparent; border-color: rgba(255, 255, 255, 0.6); color: #ffffff; } .btn-outline:hover { background-color: rgba(255, 255, 255, 0.15); border-color: #ffffff; color: #ffffff; } .btn-outline-primary { background-color: transparent; border-color: var(--accent); color: var(--accent); } .btn-outline-primary:hover { background-color: var(--accent); color: #ffffff; } .btn-sm { padding: 0.45rem 0.95rem; font-size: 0.85rem; } /* ========================================================================== Content Cards & Containers ========================================================================== */ .content-card { background-color: var(--bg-card); border-radius: var(--radius-lg); padding: 2.25rem; box-shadow: var(--shadow-sm); border: 1px solid var(--border); margin-bottom: 2rem; position: relative; } .card { background-color: var(--bg-card); border-radius: var(--radius-md); padding: 1.5rem; box-shadow: var(--shadow-sm); border: 1px solid var(--border); transition: var(--transition); } .card:hover { box-shadow: var(--shadow-md); border-color: #cbd5e1; } /* ========================================================================== Responsive Grids ========================================================================== */ .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin-bottom: 2rem; } .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-bottom: 2rem; } .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; margin-bottom: 2rem; } /* Feature Box / Highlights */ .feature-box { background-color: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 1.5rem; transition: var(--transition); display: flex; flex-direction: column; } .feature-box:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: var(--accent-light); } .feature-icon-wrapper { width: 48px; height: 48px; border-radius: var(--radius-md); background: linear-gradient(135deg, var(--primary-light) 0%, var(--accent-light) 100%); color: var(--accent); display: flex; align-items: center; justify-content: center; margin-bottom: 1rem; } .feature-icon-wrapper svg { width: 24px; height: 24px; fill: currentColor; } .feature-title { font-size: 1.15rem; font-weight: 700; color: var(--primary-dark); margin-bottom: 0.5rem; } .feature-text { font-size: 0.95rem; color: var(--text-muted); line-height: 1.55; margin: 0; } /* ========================================================================== Specialised Medical Highlights (BCM & Haemo-Master) ========================================================================== */ .highlight-panel { background: linear-gradient(to right, #f8fafc, #ffffff); border-left: 4px solid var(--accent); border-radius: var(--radius-md); padding: 1.5rem; margin-top: 1.5rem; margin-bottom: 1.5rem; box-shadow: var(--shadow-sm); border-top: 1px solid var(--border); border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); } .highlight-panel-title { color: var(--primary-dark); font-size: 1.15rem; font-weight: 700; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; } .highlight-badge { display: inline-block; padding: 0.25rem 0.65rem; background-color: var(--primary-light); color: var(--primary-dark); border-radius: var(--radius-sm); font-size: 0.8rem; font-weight: 700; text-transform: uppercase; margin-bottom: 0.75rem; } .condition-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin: 1rem 0; } .condition-card { padding: 1rem; border-radius: var(--radius-sm); font-size: 0.9rem; } .condition-warning { background-color: #fff1f2; border: 1px solid #fecdd3; color: #9f1239; } .condition-info { background-color: #f0f9ff; border: 1px solid #bae6fd; color: #0369a1; } .condition-title { font-weight: 700; margin-bottom: 0.25rem; display: flex; align-items: center; gap: 0.4rem; } /* ========================================================================== Opening Hours & Schedule Tables (Responsive Redesign) ========================================================================== */ .schedule-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 1.75rem; box-shadow: var(--shadow-sm); } .schedule-header { display: flex; align-items: center; gap: 0.65rem; margin-bottom: 1.25rem; padding-bottom: 0.85rem; border-bottom: 2px solid var(--primary-light); } .schedule-header svg { width: 22px; height: 22px; fill: var(--accent); } .schedule-title { font-size: 1.25rem; color: var(--primary-dark); margin: 0; } .schedule-list { list-style: none; padding: 0; margin: 0; } .schedule-item { display: flex; justify-content: space-between; align-items: flex-start; padding: 0.75rem 0; border-bottom: 1px solid var(--border); font-size: 0.95rem; gap: 1rem; } .schedule-item:last-child { border-bottom: none; padding-bottom: 0; } .schedule-day { font-weight: 700; color: var(--primary-dark); min-width: 130px; } .schedule-time { color: var(--text-main); text-align: right; font-weight: 500; } .schedule-shift-tag { display: inline-block; font-size: 0.8rem; font-weight: 600; padding: 0.15rem 0.5rem; background-color: var(--primary-light); color: var(--primary-dark); border-radius: var(--radius-sm); margin-right: 0.35rem; } /* ========================================================================== Image Galleries & Lightbox Thumbnails ========================================================================== */ .gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1.25rem; margin: 2rem 0; } .gallery-item { position: relative; border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm); border: 1px solid var(--border); background-color: var(--bg-card); transition: var(--transition); aspect-ratio: 4 / 3; } .gallery-item:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: var(--accent); } .gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; } .gallery-item:hover img { transform: scale(1.06); } .gallery-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(to top, rgba(7, 56, 77, 0.75) 0%, transparent 60%); display: flex; align-items: flex-end; padding: 1rem; opacity: 0; transition: var(--transition); } .gallery-item:hover .gallery-overlay, .gallery-item:focus-visible .gallery-overlay { opacity: 1; } .gallery-caption { color: #fff; font-size: 0.85rem; font-weight: 600; } .gallery-zoom-icon { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(0.8); width: 40px; height: 40px; background-color: rgba(255, 255, 255, 0.9); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--primary-dark); opacity: 0; transition: var(--transition); } .gallery-item:hover .gallery-zoom-icon, .gallery-item:focus-visible .gallery-zoom-icon { opacity: 1; transform: translate(-50%, -50%) scale(1); } .gallery-zoom-icon svg { width: 20px; height: 20px; fill: currentColor; } /* ========================================================================== Doctor & Team Cards ========================================================================== */ .doctor-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 1.75rem; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; gap: 1.25rem; align-items: flex-start; transition: var(--transition); height: 100%; } .doctor-card:hover { box-shadow: var(--shadow-md); border-color: #cbd5e1; } .doctor-avatar { width: 64px; height: 64px; border-radius: var(--radius-full); background: linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%); color: #fff; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 4px 10px rgba(11, 79, 108, 0.2); } .doctor-avatar svg { width: 32px; height: 32px; fill: currentColor; } .doctor-info { flex: 1; display: flex; flex-direction: column; width: 100%; } .doctor-name { font-size: 1.25rem; color: var(--primary-dark); font-weight: 700; margin-bottom: 0.25rem; } .doctor-title { color: var(--accent); font-weight: 600; font-size: 0.95rem; line-height: 1.4; min-height: 2.8em; margin-bottom: 0.5rem; } .doctor-meta { font-size: 0.9rem; color: var(--text-muted); margin-bottom: 1rem; } .doctor-meta span { font-weight: 600; color: var(--text-main); } .chamber-badge { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.8rem; background-color: var(--bg-alt); color: var(--primary); padding: 0.3rem 0.65rem; border-radius: var(--radius-sm); margin-top: auto; font-weight: 600; align-self: flex-start; } /* ========================================================================== Contact Page Layout ========================================================================== */ .contact-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-bottom: 2.5rem; } .location-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 1.75rem; box-shadow: var(--shadow-sm); margin-bottom: 1.5rem; } .location-header { display: flex; align-items: center; gap: 0.65rem; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 2px solid var(--primary-light); } .location-badge { width: 36px; height: 36px; border-radius: var(--radius-md); background-color: var(--primary-light); color: var(--primary); display: flex; align-items: center; justify-content: center; } .location-badge svg { width: 20px; height: 20px; fill: currentColor; } .location-title { font-size: 1.25rem; color: var(--primary-dark); margin: 0; } .contact-detail-row { display: flex; align-items: flex-start; gap: 0.75rem; margin-bottom: 0.85rem; font-size: 0.95rem; } .contact-detail-icon { width: 18px; height: 18px; fill: var(--accent); flex-shrink: 0; margin-top: 3px; } .contact-detail-label { font-weight: 700; color: var(--primary-dark); min-width: 140px; } .contact-detail-value { color: var(--text-main); flex: 1; } .map-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; } .map-header { padding: 1rem 1.25rem; background-color: var(--bg-alt); border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; } .map-header-title { font-size: 1rem; font-weight: 700; color: var(--primary-dark); margin: 0; } .map-iframe-wrapper { position: relative; width: 100%; height: 380px; border: none; } .map-iframe-wrapper iframe { width: 100%; height: 100%; border: none; } /* ========================================================================== Contact Form Styles ========================================================================== */ .form-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 2.25rem; box-shadow: var(--shadow-sm); max-width: 800px; margin: 0 auto; } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; margin-bottom: 1.25rem; } .form-group { display: flex; flex-direction: column; margin-bottom: 1.25rem; } .form-label { font-size: 0.9rem; font-weight: 600; color: var(--primary-dark); margin-bottom: 0.4rem; } .form-label .required { color: var(--danger); } .form-control { width: 100%; padding: 0.75rem 1rem; font-size: 0.95rem; font-family: inherit; color: var(--text-main); background-color: #ffffff; border: 1px solid var(--border); border-radius: var(--radius-md); transition: var(--transition); } .form-control:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15); } textarea.form-control { min-height: 160px; resize: vertical; } .form-note { font-size: 0.85rem; color: var(--text-muted); margin-top: 1rem; margin-bottom: 1.5rem; line-height: 1.5; } .form-actions { display: flex; justify-content: flex-end; gap: 1rem; } /* Status Alerts */ .alert { padding: 1rem 1.25rem; border-radius: var(--radius-md); font-size: 0.95rem; margin-bottom: 1.5rem; display: flex; align-items: center; gap: 0.75rem; } .alert-success { background-color: var(--success-bg); border: 1px solid var(--success-border); color: var(--success); } .alert-danger { background-color: var(--danger-bg); border: 1px solid var(--danger-border); color: var(--danger); } /* ========================================================================== Holiday / Announcement Modal or Toast ========================================================================== */ .holiday-notice-banner { background: linear-gradient(135deg, #eff6ff 0%, #e0f2fe 100%); border-bottom: 1px solid #bae6fd; padding: 1rem 0; color: #0369a1; position: relative; z-index: 1001; } .holiday-notice-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .holiday-notice-content { display: flex; align-items: center; gap: 0.85rem; font-size: 0.95rem; } .holiday-notice-content svg { width: 24px; height: 24px; fill: var(--accent); flex-shrink: 0; } .holiday-dismiss-btn { background: none; border: 1px solid #7dd3fc; color: #0369a1; border-radius: var(--radius-full); padding: 0.35rem 0.85rem; font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: var(--transition); display: inline-flex; align-items: center; gap: 0.35rem; flex-shrink: 0; } .holiday-dismiss-btn:hover { background-color: #0284c7; color: #ffffff; border-color: #0284c7; } /* ========================================================================== Footer ========================================================================== */ .site-footer { background-color: var(--primary-dark); color: #cbd5e1; padding: 4rem 0 0; margin-top: auto; font-size: 0.9rem; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1.5fr; gap: 2.5rem; padding-bottom: 3rem; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .footer-col-title { color: #ffffff; font-size: 1.1rem; font-weight: 700; margin-bottom: 1.25rem; position: relative; padding-bottom: 0.5rem; } .footer-col-title::after { content: ''; position: absolute; bottom: 0; left: 0; width: 32px; height: 2px; background-color: var(--accent); border-radius: var(--radius-full); } .footer-desc { line-height: 1.6; margin-bottom: 1.25rem; color: #94a3b8; } .footer-links { list-style: none; padding: 0; margin: 0; } .footer-links li { margin-bottom: 0.6rem; } .footer-links a { color: #cbd5e1; text-decoration: none; display: inline-flex; align-items: center; gap: 0.4rem; transition: var(--transition); } .footer-links a:hover { color: #ffffff; padding-left: 4px; } .footer-contact-item { display: flex; align-items: flex-start; gap: 0.65rem; margin-bottom: 0.85rem; line-height: 1.5; } .footer-contact-item svg { width: 16px; height: 16px; fill: var(--accent); flex-shrink: 0; margin-top: 3px; } .footer-bottom { padding: 1.5rem 0; font-size: 0.85rem; color: #94a3b8; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer-bottom-links { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer-bottom a { color: #cbd5e1; margin-left: 0; } .footer-bottom a:hover { color: #ffffff; } /* Unobtrusive Footer Dark Mode Toggle */ .theme-toggle-btn { background: transparent; border: none; border-left: 1px solid rgba(255, 255, 255, 0.15); padding: 0 0 0 1rem; margin: 0; color: #94a3b8; font-family: inherit; font-size: 0.82rem; line-height: 1.4; cursor: pointer; display: inline-flex; align-items: center; gap: 0.35rem; transition: var(--transition); } .theme-toggle-btn:hover { color: #e2e8f0; } .theme-toggle-btn svg { width: 14px; height: 14px; fill: currentColor; opacity: 0.8; flex-shrink: 0; } .theme-icon-sun { display: none; } [data-theme="dark"] .theme-icon-moon { display: none; } [data-theme="dark"] .theme-icon-sun { display: inline-block; } /* ========================================================================== Dark Mode Component Overrides ========================================================================== */ .team-staff-card { background: linear-gradient(135deg, #f8fafc 0%, #e0f2fe 100%); } .info-callout-box { background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%); } [data-theme="dark"] .top-bar { background-color: #060d14; } [data-theme="dark"] .site-header { border-bottom: 1px solid var(--border); } [data-theme="dark"] .site-footer { background-color: #060d14; border-top: 1px solid var(--border); } [data-theme="dark"] .skip-link { background-color: #0c2b3d; } [data-theme="dark"] .page-banner { background: linear-gradient(135deg, #071926 0%, #0d354a 100%); border-bottom: 1px solid var(--border); } [data-theme="dark"] .hero-banner { background: linear-gradient(135deg, #061520 0%, #092c3e 55%, #0c3b50 100%); } [data-theme="dark"] .btn-primary, [data-theme="dark"] .header-cta-btn { background-color: #0284c7; color: #ffffff; } [data-theme="dark"] .btn-primary:hover, [data-theme="dark"] .header-cta-btn:hover { background-color: #0369a1; color: #ffffff; } [data-theme="dark"] .card:hover, [data-theme="dark"] .doctor-card:hover { border-color: #335372; } [data-theme="dark"] .highlight-panel { background: linear-gradient(to right, #152738, #122130); } [data-theme="dark"] .team-staff-card, [data-theme="dark"] .info-callout-box { background: linear-gradient(135deg, #152738 0%, #1a3650 100%); } [data-theme="dark"] .condition-warning { background-color: #3b1219; border-color: #7f1d1d; color: #fecdd3; } [data-theme="dark"] .condition-info { background-color: #132d42; border-color: #1e496b; color: #bae6fd; } [data-theme="dark"] .chamber-badge { color: #bae6fd; } [data-theme="dark"] .form-control { background-color: #0e1a27; color: var(--text-main); border-color: var(--border); } [data-theme="dark"] .form-control::placeholder { color: #64748b; } [data-theme="dark"] .holiday-notice-banner { background: linear-gradient(135deg, #102436 0%, #16324a 100%); border-bottom-color: #1e496b; color: #bae6fd; } [data-theme="dark"] .holiday-dismiss-btn { border-color: #38bdf8; color: #bae6fd; } [data-theme="dark"] .map-iframe-wrapper iframe { filter: invert(90%) hue-rotate(180deg) brightness(95%) contrast(90%); } /* ========================================================================== Responsive Media Queries ========================================================================== */ /* Prevent grid and flex children from forcing horizontal overflow */ .grid-2 > *, .grid-3 > *, .grid-4 > *, .condition-grid > *, .contact-layout > *, .footer-grid > * { min-width: 0; } h1, h2, h3, h4, p, li, .card, .location-card, .contact-detail-value { overflow-wrap: break-word; word-wrap: break-word; hyphens: auto; } .btn { text-align: center; max-width: 100%; hyphens: none; } /* Prioritized Address Hiding when space is limited */ @media screen and (max-width: 1240px) { .top-bar-addr-satellite { display: none !important; } .site-logo-img { height: 62px; max-width: 300px; } } /* Compact Header for Medium Laptops & Tablets (max 1100px) */ @media screen and (max-width: 1100px) { .header-actions .header-cta-btn { display: none; } .site-logo-img { height: 60px; max-width: 280px; } .nav-link { padding: 0.5rem 0.75rem; font-size: 0.9rem; } } @media screen and (max-width: 992px) { .top-bar-left { display: none !important; } .top-bar-inner { justify-content: center !important; } .top-bar-right { margin-left: 0 !important; justify-content: center !important; } } /* Tablet (max 1024px) */ @media screen and (max-width: 1024px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } .footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; } } /* Mobile & Small Tablet (max 768px) */ @media screen and (max-width: 768px) { h1 { font-size: 1.65rem; } h2 { font-size: 1.35rem; } .top-bar { white-space: normal; } .top-bar-inner { justify-content: center; text-align: center; overflow-x: visible; flex-wrap: wrap; } .top-bar-right { justify-content: center; row-gap: 0.25rem; column-gap: 0.85rem; font-size: 0.8rem; flex-wrap: wrap; white-space: normal; width: 100%; } .site-header { padding: 0.25rem 0; } .site-logo-img { height: 62px; max-width: 320px; } .header-actions .header-cta-btn { display: none; } .nav-toggle { display: inline-flex; } /* Mobile drawer */ .nav-menu { display: none; position: absolute; top: 100%; left: 0; right: 0; background-color: var(--bg-card); flex-direction: column; padding: 1rem 1.25rem; box-shadow: var(--shadow-lg); border-top: 1px solid var(--border); gap: 0.5rem; } .nav-menu.is-open { display: flex; } .nav-item { width: 100%; } .nav-link { width: 100%; padding: 0.75rem 1rem; border-radius: var(--radius-md); } .hero-banner { padding: 2.5rem 0 3.5rem; } .hero-title { font-size: 1.85rem; } .hero-subtitle { font-size: 1.05rem; } .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } .condition-grid { grid-template-columns: 1fr; } .contact-layout { grid-template-columns: 1fr; } .doctor-card { flex-direction: column; gap: 1rem; } .form-row { grid-template-columns: 1fr; gap: 0; } .footer-grid { grid-template-columns: 1fr; gap: 2rem; } .footer-bottom { flex-direction: column; text-align: center; } .footer-bottom-links { justify-content: center; } .content-card { padding: 1.5rem; } .contact-detail-row { flex-wrap: wrap; gap: 0.25rem 0.6rem; } .contact-detail-label { min-width: 120px; } } /* Small Smartphone (max 480px) */ @media screen and (max-width: 480px) { .container { padding-left: 1rem; padding-right: 1rem; } h1 { font-size: 1.4rem; } h2 { font-size: 1.2rem; } .top-bar-right { row-gap: 0.2rem; column-gap: 0.65rem; font-size: 0.75rem; } .site-logo-img { height: auto; max-height: 53px; max-width: calc(100vw - 96px); } .logo-title { font-size: 1.05rem; } .logo-sub { font-size: 0.65rem; } .content-card { padding: 1.15rem; } .card, .location-card, .schedule-card, .highlight-panel, .form-card { padding: 1.15rem; } .location-title { font-size: 1.1rem; } .contact-detail-label { min-width: calc(100% - 28px); } .contact-detail-value { flex-basis: 100%; padding-left: 26px; } .hero-actions { flex-direction: column; } .hero-actions .btn, .btn { white-space: normal; flex-wrap: wrap; flex-shrink: 1; } .hero-actions .btn { width: 100%; } .schedule-item { flex-direction: column; align-items: flex-start; gap: 0.25rem; } .schedule-time { text-align: left; } .form-actions { flex-direction: column-reverse; } .form-actions .btn { width: 100%; } } /* ========================================================================== Reduced Motion Preference (WCAG 2.3.3) ========================================================================== */ @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } .gallery-item:hover img, .gallery-item:hover, .feature-box:hover, .btn:hover, .header-cta-btn:hover { transform: none !important; } }