/* Base Styles & Design Tokens */ :root { /* Color Palette */ --color-brand-primary: #f65c00; --color-brand-secondary: #f87d33; --color-brand-dark: #d44700; --color-success: #6ba43a; --color-error: #c31c4a; --color-warning: #f5a623; /* Neutral Colors */ --color-white: #ffffff; --color-black: #000000; --color-gray-50: #f6f5f4; --color-gray-100: #ededed; --color-gray-200: #dedede; --color-gray-300: #cccccc; --color-gray-400: #999999; --color-gray-500: #666666; --color-gray-600: #444444; --color-gray-700: #333333; /* Text Colors */ --color-text-primary: var(--color-gray-700); --color-text-secondary: var(--color-gray-600); --color-text-muted: var(--color-gray-400); /* Background Colors */ --color-background: var(--color-gray-50); --color-surface: var(--color-white); /* Border Colors */ --color-border: var(--color-gray-200); --color-border-hover: var(--color-gray-300); --color-border-focus: var(--color-brand-primary); /* Spacing Scale */ --space-1: 0.25rem; /* 4px */ --space-2: 0.5rem; /* 8px */ --space-3: 0.75rem; /* 12px */ --space-4: 1rem; /* 16px */ --space-5: 1.5rem; /* 24px */ --space-6: 2rem; /* 32px */ --space-8: 3rem; /* 48px */ --space-10: 4rem; /* 64px */ /* Typography */ --font-family-heading: 'arboria', Arial, Helvetica, sans-serif; --font-family-base: 'gotham-narrow-book', Arial, Helvetica, sans-serif; /* Font Sizes */ --font-size-xs: 0.75rem; /* 12px */ --font-size-sm: 0.875rem; /* 14px */ --font-size-base: 1rem; /* 16px */ --font-size-lg: 1.125rem; /* 18px */ --font-size-xl: 1.25rem; /* 20px */ --font-size-2xl: 1.5rem; /* 24px */ /* Line Heights */ --line-height-tight: 1.2; --line-height-base: 1.5; --line-height-relaxed: 1.75; /* Border Radius */ --radius-sm: 0.25rem; --radius-base: 0.375rem; --radius-lg: 0.5rem; --radius-xl: 1rem; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-base: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); /* Transitions */ --transition-base: 0.2s ease-in-out; --transition-smooth: 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Reset & Base Styles */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-size: 16px; -webkit-text-size-adjust: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-family-base); font-size: var(--font-size-base); line-height: var(--line-height-tight); color: var(--color-text-primary); background-color: var(--color-background); min-height: 100vh; } /* Font Face Declarations */ @font-face { font-family: 'gotham-narrow-book'; src: url('https://www.zoetis.com/_assets/fonts/gothamnarrowbook_normal_condensed.woff2') format('woff2'), url('https://www.zoetis.com/_assets/fonts/gothamnarrowbook_normal_condensed.woff') format('woff'); font-weight: 400; } @font-face { font-family: 'arboria'; src: url('https://www.zoetis.com/_assets/fonts/arboria-bold.woff2') format('woff2'), url('https://www.zoetis.com/_assets/fonts/arboria-bold.woff') format('woff'); font-weight: 400; } /* Layout */ .layout { min-height: 100vh; display: flex; flex-direction: column; padding: var(--space-8) var(--space-4); } .main { flex: 1; display: flex; align-items: center; justify-content: center; } /* Loading State */ .loading-state { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--color-surface); display: flex; justify-content: center; align-items: center; z-index: 100; opacity: 1; transition: opacity 0.3s ease-out; } .loading-state.hide { opacity: 0; pointer-events: none; } .loading-spinner { width: 50px; height: 50px; } /* Card Styles */ .card { background-color: var(--color-surface); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg); width: 100%; max-width: 500px; margin: 0 auto; overflow: hidden; opacity: 0; transform: translateY(20px); animation: slideUp 0.6s ease-out forwards; animation-delay: 0.3s; } .card__brand { padding: var(--space-5) var(--space-6); text-align: center; border-bottom: 1px solid var(--color-border); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 0.6s; } .brand-logo { height: 32px; width: auto; fill: var(--color-brand-primary); transition: fill var(--transition-base); } .brand-logo:hover { fill: var(--color-brand-secondary); } .card__header { padding: var(--space-6); text-align: center; } .card__title { font-family: var(--font-family-heading); color: var(--color-brand-primary); font-size: var(--font-size-2xl); margin-bottom: var(--space-2); line-height: var(--line-height-tight); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 1.2s; } .card__description { color: var(--color-text-secondary); font-size: var(--font-size-base); line-height: var(--line-height-base); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 1.4s; } .card__body { padding: 0 var(--space-6) var(--space-6); } /* Form Styles */ .form__group { position: relative; margin-bottom: var(--space-4); } .form__label { display: block; margin-bottom: var(--space-2); color: var(--color-text-secondary); font-size: var(--font-size-sm); font-weight: 500; } .required-indicator { color: var(--color-error); margin-left: var(--space-1); } .form__input-wrapper { position: relative; display: flex; align-items: center; } .form__input-prefix { position: absolute; left: var(--space-4); color: var(--color-text-muted); font-size: var(--font-size-base); pointer-events: none; } .form__input { width: 100%; min-height: 48px; padding: var(--space-3) var(--space-4); padding-left: calc(var(--space-4) + 2.5em); border: 1px solid var(--color-border); border-radius: var(--radius-base); font-size: var(--font-size-base); color: var(--color-text-primary); background-color: var(--color-surface); transition: all var(--transition-base); } .form__input:hover { border-color: var(--color-border-hover); } .form__input:focus { outline: none; border-color: var(--color-border-focus); box-shadow: 0 0 0 3px rgba(246, 92, 0, 0.1); } .form__input.error { border-color: var(--color-error); box-shadow: 0 0 0 1px var(--color-error); } /* Checkbox Styles */ .checkbox-container { margin-bottom: var(--space-5); } .checkbox { display: flex; align-items: flex-start; gap: var(--space-3); } .checkbox__input { margin-top: 0.3em; width: 1.25em; height: 1.25em; } .checkbox__label { font-size: var(--font-size-sm); color: var(--color-text-secondary); line-height: var(--line-height-relaxed); } /* Error Message Styles */ .form__error { display: none; color: var(--color-error); font-size: var(--font-size-sm); margin-top: var(--space-2); opacity: 0; transform: translateY(-2px); transition: opacity 0.2s ease, transform 0.2s ease; } .form__error.visible { display: block; opacity: 1; transform: translateY(0); } /* Button Styles */ .button { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; padding: var(--space-3) var(--space-4); background-color: var(--color-brand-primary); color: var(--color-white); border: none; border-radius: var(--radius-base); font-family: var(--font-family-brand); font-size: var(--font-size-base); cursor: pointer; transition: all var(--transition-base); } .button:hover { background-color: var(--color-brand-secondary); } .button:focus { outline: none; box-shadow: 0 0 0 3px rgba(246, 92, 0, 0.3); } .button:disabled { opacity: 0.7; cursor: not-allowed; } /* Loading State */ .button__loading { display: none; } .button.loading .button__text { display: none; } .button.loading .button__loading { display: inline-block; } /* Status Icon Styles */ .status-icon { display: flex; justify-content: center; margin-bottom: var(--space-4); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 0.9s; } .icon { width: 64px; height: 64px; stroke-width: 2; } .icon--success { stroke: var(--color-success); stroke-dasharray: 100; stroke-dashoffset: 100; animation: checkmark 0.8s cubic-bezier(0.65, 0, 0.45, 1) forwards; animation-delay: 1s; } .icon--error { stroke: var(--color-error); transform: scale(0.8) rotate(-45deg); opacity: 0; animation: errormark 0.8s cubic-bezier(0.65, 0, 0.45, 1) forwards; animation-delay: 1s; } /* State-specific styles */ .success-state .card__title { color: var(--color-success); } .error-state .card__title { color: var(--color-error); } /* Info Box Styles */ .info-box { background-color: var(--color-gray-50); border-radius: var(--radius-lg); padding: var(--space-5); margin-top: var(--space-4); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 1.6s; } .info-box__title { font-family: var(--font-family-heading); font-size: var(--font-size-lg); color: var(--color-text-primary); margin-bottom: var(--space-3); } .info-box__list { list-style-position: inside; color: var(--color-text-secondary); } .info-box__list li { margin-bottom: var(--space-2); line-height: var(--line-height-relaxed); } .info-box__list li:last-child { margin-bottom: 0; } /* Image Gallery */ .image-gallery { display: flex; justify-content: center; align-items: center; gap: var(--space-5); padding: var(--space-4); background-color: var(--color-gray-50); border-top: 1px solid var(--color-border); } .card__footer { opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 1.8s; } .image-gallery__item { flex: 1; max-width: 160px; } .image-gallery__image { width: 100%; height: auto; border-radius: var(--radius-base); transition: transform var(--transition-base); } .image-gallery__image:hover { transform: translateY(-2px); } /* Footer Styles */ .footer { text-align: center; padding: var(--space-6) 0 var(--space-4); color: var(--color-text-muted); font-size: var(--font-size-sm); opacity: 0; animation: fadeIn 0.6s ease-out forwards; animation-delay: 2s; } /* Animations */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes checkmark { 0% { stroke-dashoffset: 100; } 100% { stroke-dashoffset: 0; } } @keyframes errormark { 0% { opacity: 0; transform: scale(0.8) rotate(-45deg); } 50% { transform: scale(1.2) rotate(-45deg); } 100% { opacity: 1; transform: scale(1) rotate(0deg); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } } @keyframes rotate { 100% { transform: rotate(360deg); } } @keyframes dash { 0% { stroke-dasharray: 1, 150; stroke-dashoffset: 0; } 50% { stroke-dasharray: 90, 150; stroke-dashoffset: -35; } 100% { stroke-dasharray: 90, 150; stroke-dashoffset: -124; } } /* Accessibility */ .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Debug Mode Styles */ .debug .debug-info { font-family: monospace; font-size: var(--font-size-xs); color: var(--color-text-muted); background-color: var(--color-gray-50); padding: var(--space-2); border-radius: var(--radius-sm); margin-top: var(--space-2); } /* Responsive Styles */ @media (max-width: 640px) { .layout { padding: var(--space-4); } .card { margin: var(--space-4) 0; } .card__brand { padding: var(--space-4); } .card__header { padding: var(--space-4); } .card__body { padding: 0 var(--space-4) var(--space-4); } .info-box { padding: var(--space-4); } .image-gallery { flex-direction: column; gap: var(--space-4); } .image-gallery__item { max-width: 120px; } .icon { width: 48px; height: 48px; } } /* Print Styles */ @media print { .card { box-shadow: none; } .button { display: none; } .loading-state { display: none; } }