:root{--iron: #dbdcdf;--juniper: #71918c;--chatelle: #aea6c0;--sirocco: #6f807e;--can-can: #d38d9b;--blossom: #d8b4bc;--pink-flare: #dabbc4;--spicy-mix: #8d6340;--pigeon-post: #b4b6d9;--pigeon-post-alt: #abb4d3;--font-primary: "ITC New Baskerville Italic", "Baskerville", "Times New Roman", serif;--font-secondary: "Georgia", "Times", serif;--font-body: "Palatino", "Palatino Linotype", "Palatino LT STD", "Book Antiqua", serif;--font-heading: "ITC New Baskerville Italic", "Baskerville", "Times New Roman", serif;--card-stock-primary: #d7dbdd;--card-stock-secondary: #e8ecef;--card-stock-accent: #c8ccd0;--card-stock-border: rgba(255, 255, 255, .2);--card-stock-shadow: rgba(0, 0, 0, .15);--text-primary: var(--sirocco);--text-secondary: var(--juniper);--text-muted: var(--chatelle);--text-inverse: var(--iron);--bg-primary: var(--iron);--bg-secondary: var(--card-stock-primary);--bg-accent: var(--card-stock-secondary);--bg-overlay: rgba(255, 255, 255, .1);--border-primary: var(--chatelle);--border-secondary: var(--card-stock-border);--border-accent: var(--can-can);--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--spacing-2xl: 4rem;--spacing-3xl: 6rem;--radius-sm: 0;--radius-md: 0;--radius-lg: 0;--radius-xl: 0;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .1);--shadow-md: 0 4px 16px rgba(0, 0, 0, .15);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .2);--transition-fast: .15s ease;--transition-standard: .25s ease;--container-max-width: 1200px;--container-padding: var(--spacing-md);--header-height: 80px;--input-height: 48px;--input-padding: var(--spacing-sm) var(--spacing-md);--input-border-width: 2px;--input-focus-ring: 0 0 0 3px rgba(113, 145, 140, .2);--btn-height-sm: 36px;--btn-height-md: 48px;--btn-height-lg: 56px;--btn-padding-sm: var(--spacing-sm) var(--spacing-md);--btn-padding-md: var(--spacing-md) var(--spacing-lg);--btn-padding-lg: var(--spacing-lg) var(--spacing-xl)}html{scroll-behavior:smooth;font-size:16px}body{margin:0;min-width:320px;min-height:100vh;font-family:var(--font-body);font-size:1rem;line-height:1.6;font-weight:400;color:var(--text-primary);background:linear-gradient(135deg,var(--juniper) 0%,var(--chatelle) 100%);background-attachment:fixed;position:relative}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-style:italic;color:var(--text-primary);line-height:1.2;margin-bottom:var(--spacing-sm);font-weight:600}h1{font-size:clamp(2rem,5vw,3.5rem);margin-bottom:var(--spacing-md)}h2{font-size:clamp(1.5rem,4vw,2.5rem);margin-bottom:var(--spacing-sm)}h3{font-size:clamp(1.25rem,3vw,2rem)}h4{font-size:clamp(1.125rem,2.5vw,1.5rem)}p,span,div,li{font-family:var(--font-body);color:var(--text-primary);line-height:1.6;margin-bottom:var(--spacing-sm)}a{font-weight:500;color:var(--juniper);text-decoration:inherit;font-family:var(--font-body);transition:color var(--transition-fast)}a:hover{color:var(--can-can)}a:focus{outline:2px solid var(--juniper);outline-offset:2px}button{border:none;background:none;cursor:pointer;font-family:var(--font-body);font-size:1rem;transition:all var(--transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}button:hover{transform:translateY(-1px)}button:focus{outline:2px solid var(--juniper);outline-offset:2px}button:disabled{opacity:.6;cursor:not-allowed;transform:none}img{max-width:100%;height:auto;display:block}button:focus,a:focus,input:focus,textarea:focus,select:focus{outline:2px solid var(--juniper);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}.container{max-width:var(--container-max-width);margin:0 auto;padding:0 var(--container-padding)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.card-stock{background:var(--card-stock-primary);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-sm);transition:all var(--transition-standard)}.card-stock:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}@media (max-width: 768px){:root{--container-padding: var(--spacing-sm);--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem}.container{padding:0 var(--spacing-sm)}}@media (max-width: 480px){:root{--spacing-md: 1rem;--spacing-lg: 1.25rem;--spacing-xl: 1.5rem}}.homepage{min-height:100vh;background:linear-gradient(135deg,#71918cb3,#aea6c0b3),url(/ring_pic_2.JPG);background-size:cover,cover;background-position:center,center;background-attachment:fixed,fixed;background-repeat:no-repeat,no-repeat;color:var(--text-primary);padding:var(--spacing-lg);text-align:center;max-width:var(--container-max-width);margin:0 auto}.welcome-banner{background:#fffffff2;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border:1px solid rgba(255,255,255,.3);box-shadow:var(--shadow-lg);padding:var(--spacing-2xl);margin-bottom:var(--spacing-2xl);border-radius:0;position:relative;z-index:2}.welcome-banner:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(90deg,transparent,transparent 1px,rgba(113,145,140,.03) 1px,rgba(113,145,140,.03) 2px);pointer-events:none;z-index:1;border-radius:0}.welcome-banner>*{position:relative;z-index:2}.welcome-banner h2{font-family:var(--font-heading);font-style:italic;color:var(--text-primary);margin-bottom:var(--spacing-md);font-size:clamp(2.5rem,6vw,4rem);line-height:1.1;font-weight:700}.welcome-banner p{font-size:clamp(1.125rem,2.5vw,1.5rem);color:var(--text-secondary);margin-bottom:var(--spacing-lg);max-width:800px;margin-left:auto;margin-right:auto;line-height:1.6;font-weight:500}.hero-section{margin-bottom:var(--spacing-2xl)}.hero-content{text-align:center;background:#ffffff26;-webkit-backdrop-filter:blur(2.5rem);backdrop-filter:blur(2.5rem);padding:var(--spacing-2xl);border-radius:0;border:1px solid rgba(255,255,255,.2);box-shadow:var(--shadow-lg);position:relative;z-index:2}.hero-content:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(90deg,transparent,transparent 1px,rgba(255,255,255,.02) 1px,rgba(255,255,255,.02) 2px);pointer-events:none;z-index:1;border-radius:0}.hero-content>*{position:relative;z-index:2}.hero-content h1{font-family:var(--font-heading);font-style:italic;color:var(--text-inverse);margin-bottom:var(--spacing-md);font-size:clamp(2.5rem,6vw,4rem);line-height:1.1;text-shadow:2px 2px 4px rgba(0,0,0,.7),0 0 20px rgba(0,0,0,.5);font-weight:700}.hero-content p{color:var(--text-inverse);font-size:clamp(1.125rem,2.5vw,1.5rem);margin-bottom:var(--spacing-xl);max-width:600px;margin-left:auto;margin-right:auto;font-weight:500;line-height:1.6}.hero-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg);max-width:800px;margin:0 auto}.stat-item{background:#ffffffe6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);padding:var(--spacing-lg);border-radius:0;box-shadow:var(--shadow-md);transition:all var(--transition-standard);position:relative;z-index:2}.stat-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);background:#fffffff2}.stat-item:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(90deg,transparent,transparent 1px,rgba(113,145,140,.02) 1px,rgba(113,145,140,.02) 2px);pointer-events:none;z-index:1;border-radius:0}.stat-item>*{position:relative;z-index:2}.stat-number{display:block;font-size:2.5rem;font-weight:700;color:var(--juniper);margin-bottom:var(--spacing-xs);font-family:var(--font-heading);font-style:italic}.stat-label{color:var(--text-primary);font-size:.875rem;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.action-buttons{display:flex;gap:var(--spacing-lg);justify-content:center;flex-wrap:wrap;margin-bottom:var(--spacing-2xl)}.btn{background:var(--juniper);color:var(--text-inverse);border:2px solid var(--juniper);padding:var(--btn-padding-md);font-family:var(--font-body);font-size:1.125rem;font-weight:600;border-radius:0;cursor:pointer;transition:all var(--transition-standard);text-decoration:none;display:inline-flex;align-items:center;gap:var(--spacing-sm);box-shadow:var(--shadow-sm)}.btn:hover{background:var(--can-can);border-color:var(--can-can);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-primary{background:var(--can-can);border-color:var(--can-can)}.btn-primary:hover{background:var(--pink-flare);border-color:var(--pink-flare)}.btn-outline{background:transparent;color:var(--juniper);border-color:var(--juniper)}.btn-outline:hover{background:var(--juniper);color:var(--text-inverse)}.upload-btn{background:var(--can-can);color:var(--text-inverse);border:2px solid var(--can-can);padding:var(--btn-padding-md);font-family:var(--font-body);font-size:1.125rem;font-weight:600;border-radius:0;cursor:pointer;transition:all var(--transition-standard);box-shadow:var(--shadow-sm)}.upload-btn:hover{background:var(--pink-flare);border-color:var(--pink-flare);transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-icon{font-size:1.25rem}.recent-photos-section{background:var(--card-stock-secondary);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-md);padding:var(--spacing-2xl);margin-bottom:var(--spacing-2xl);border-radius:0}.recent-photos-section h2{font-family:var(--font-heading);font-style:italic;color:var(--text-primary);margin-bottom:var(--spacing-lg);font-size:clamp(1.75rem,4vw,2.5rem);text-align:center}.recent-photos-section p{color:var(--text-secondary);margin-bottom:var(--spacing-lg);text-align:center}.recent-photos-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.recent-photo-item{background:var(--card-stock-primary);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-sm);padding:var(--spacing-md);transition:all var(--transition-standard);cursor:pointer;border-radius:0}.recent-photo-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.recent-photo-item img{width:100%;height:200px;object-fit:cover;border-radius:0;margin-bottom:var(--spacing-sm)}.photo-info{display:flex;justify-content:space-between;align-items:center;font-size:.875rem;color:var(--text-secondary)}.photographer-name{font-weight:600}.photo-date{opacity:.8}.view-more-photos{text-align:center}.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-xl);margin-bottom:var(--spacing-2xl)}.feature{background:var(--card-stock-primary);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-md);padding:var(--spacing-xl);text-align:center;border-radius:0;transition:all var(--transition-standard)}.feature:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.feature-icon{font-size:3rem;color:var(--juniper);margin-bottom:var(--spacing-md)}.feature h3{font-family:var(--font-heading);font-style:italic;color:var(--text-primary);margin-bottom:var(--spacing-sm);font-size:1.5rem}.feature p{color:var(--text-secondary);line-height:1.6}.call-to-action{background:var(--card-stock-accent);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-lg);padding:var(--spacing-3xl);text-align:center;border-radius:0;margin-bottom:var(--spacing-2xl)}.call-to-action h2{font-family:var(--font-heading);font-style:italic;color:var(--text-primary);margin-bottom:var(--spacing-md);font-size:clamp(2rem,5vw,3rem)}.call-to-action p{color:var(--text-secondary);margin-bottom:var(--spacing-xl);font-size:1.25rem;max-width:600px;margin-left:auto;margin-right:auto}.cta-buttons{display:flex;gap:var(--spacing-lg);justify-content:center;flex-wrap:wrap}.btn-large{padding:var(--btn-padding-lg);font-size:1.25rem}.footer-info{text-align:center;padding:var(--spacing-xl);background:var(--card-stock-primary);border:1px solid var(--card-stock-border);border-radius:0;margin-bottom:var(--spacing-lg)}.footer-info p{margin-bottom:var(--spacing-lg);font-size:1.125rem}.footer-links{display:flex;gap:var(--spacing-lg);justify-content:center;flex-wrap:wrap}.footer-links a{color:var(--juniper);font-weight:600}.footer-links a:hover{color:var(--can-can)}.floating-action{position:fixed;bottom:var(--spacing-lg);right:var(--spacing-lg);z-index:1000}.fab-button{background:var(--can-can);color:var(--text-inverse);border:none;width:60px;height:60px;border-radius:0;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:all var(--transition-standard);text-decoration:none}.fab-button:hover{background:var(--pink-flare);transform:scale(1.1)}.fab-icon{font-size:1.5rem}.photos-loading{text-align:center;padding:var(--spacing-xl)}.spinner{width:40px;height:40px;border:3px solid var(--card-stock-border);border-top:3px solid var(--juniper);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto var(--spacing-md)}@media (max-width: 768px){.homepage{padding:var(--spacing-md)}.welcome-banner{padding:var(--spacing-xl);margin-bottom:var(--spacing-xl)}.hero-stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--spacing-md)}.recent-photos-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-md)}.features{grid-template-columns:1fr;gap:var(--spacing-lg)}.cta-buttons{flex-direction:column;align-items:center}.call-to-action{padding:var(--spacing-2xl)}.action-buttons{flex-direction:column;align-items:center}}@media (max-width: 480px){.homepage{padding:var(--spacing-sm)}.welcome-banner,.recent-photos-section,.features,.call-to-action{padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.recent-photos-grid{grid-template-columns:1fr;gap:var(--spacing-sm)}.btn{width:100%;justify-content:center}.hero-stats{grid-template-columns:1fr}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);line-height:1.6;background:linear-gradient(135deg,var(--juniper) 0%,var(--chatelle) 100%);background-attachment:fixed}button{border:none;background:none;cursor:pointer;font-family:var(--font-body)}a{text-decoration:none;color:inherit;font-family:var(--font-body)}img{max-width:100%;height:auto}button:focus,a:focus{outline:2px solid var(--juniper);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-style:italic;color:var(--sirocco)}p,span,div,li{font-family:var(--font-body);color:var(--sirocco)}.app-header{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:15px 30px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px #0000001a;border-bottom:1px solid rgba(255,255,255,.2);position:sticky;top:0;z-index:1000}.app-title{font-family:var(--font-primary);font-size:1.5rem;color:var(--text-primary);font-weight:600}.logout-btn{padding:8px 16px;background:var(--can-can);color:var(--text-inverse);border:none;border-radius:8px;font-family:var(--font-body);cursor:pointer;transition:all .3s ease;font-size:.9rem}.logout-btn:hover{background:var(--pink-flare);transform:translateY(-1px)}.App{min-height:100vh;display:flex;flex-direction:column}.app-container{min-height:100vh;display:flex;flex-direction:column;max-width:var(--container-max-width);margin:0 auto;padding:0 var(--container-padding)}.main-content{flex:1;display:flex;flex-direction:column;width:100%}.loading-container{display:flex;align-items:center;justify-content:center;min-height:200px}.loading-spinner{width:40px;height:40px;border:3px solid var(--card-stock-border);border-top:3px solid var(--juniper);border-radius:50%;animation:spin 1s linear infinite}.error-container{text-align:center;padding:var(--spacing-xl);background:var(--card-stock-primary);border:1px solid var(--border-accent);border-radius:var(--radius-md);margin:var(--spacing-lg)}.error-icon{font-size:3rem;color:var(--can-can);margin-bottom:var(--spacing-md)}.error-message{color:var(--text-primary);margin-bottom:var(--spacing-md)}.error-actions{display:flex;gap:var(--spacing-md);justify-content:center;flex-wrap:wrap}.success-container{text-align:center;padding:var(--spacing-xl);background:var(--card-stock-secondary);border:1px solid var(--juniper);border-radius:var(--radius-md);margin:var(--spacing-lg)}.success-icon{font-size:3rem;color:var(--juniper);margin-bottom:var(--spacing-md)}.success-message{color:var(--text-primary);margin-bottom:var(--spacing-md)}@media (max-width: 768px){.app-container,.main-content{padding:0 var(--spacing-sm)}.loading-container{min-height:150px}.error-container,.success-container{margin:var(--spacing-sm);padding:var(--spacing-lg)}.error-actions{flex-direction:column;align-items:center}}@media (max-width: 480px){.app-container,.main-content{padding:0 var(--spacing-xs)}.error-container,.success-container{margin:var(--spacing-xs);padding:var(--spacing-md)}}.loading-spinner{width:40px;height:40px;border:3px solid var(--card-stock-secondary);border-top:3px solid var(--juniper);border-radius:50%;animation:spin 1s linear infinite;margin:2rem auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error-boundary{text-align:center;padding:2rem;max-width:500px;margin:2rem auto;background:var(--card-stock-primary);border:1px solid var(--card-stock-border);box-shadow:var(--shadow-md)}.error-boundary h2{color:var(--sirocco);margin-bottom:1rem}.error-boundary p{color:var(--sirocco);margin-bottom:1.5rem}.retry-btn{background:var(--juniper);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:0;cursor:pointer;font-family:var(--font-body);transition:all var(--transition-standard)}
