:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.2em .3em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.push-settings-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10001;padding:20px}.push-settings-modal{background:#fff;border-radius:16px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px 16px;border-bottom:1px solid #e5e7eb}.modal-header h3{margin:0;font-size:1.25rem;font-weight:600;color:#111827}.close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#6b7280;padding:4px;border-radius:4px;transition:all .2s ease}.close-btn:hover{background:#f3f4f6;color:#374151}.modal-content{padding:24px}.pwa-status{margin-bottom:20px;padding:16px;background:#f8fafc;border-radius:12px;border:1px solid #e2e8f0}.pwa-install-notice{margin-bottom:20px;padding:16px;background:#fef3c7;border-radius:12px;border:1px solid #f59e0b}.notice-content{display:flex;gap:12px}.notice-icon{font-size:1.5rem;flex-shrink:0}.notice-content h4{margin:0 0 8px;font-size:1rem;font-weight:600;color:#92400e}.notice-content p{margin:4px 0;font-size:.875rem;color:#92400e;line-height:1.4}.install-guide{margin-top:12px}.install-guide strong{font-weight:600;color:#92400e}.install-guide ul{margin:8px 0 0;padding-left:16px}.install-guide li{margin:4px 0;font-size:.875rem;color:#92400e;line-height:1.4}.permission-status,.subscription-status{margin-bottom:24px}.status-info{display:flex;align-items:center;gap:12px}.status-icon{font-size:1.5rem}.status-info h4{margin:0 0 4px;font-size:1rem;font-weight:600;color:#111827}.status-info p{margin:0;font-size:.875rem;font-weight:500}.notification-benefits{background:#f8fafc;border-radius:12px;padding:20px;margin-bottom:24px}.notification-benefits h4{margin:0 0 12px;font-size:1rem;font-weight:600;color:#111827}.notification-benefits ul{list-style:none;padding:0;margin:0}.notification-benefits li{padding:6px 0;font-size:.875rem;color:#4b5563;line-height:1.4}.action-buttons{display:flex;flex-direction:column;gap:12px}.enable-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:14px 24px;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease}.enable-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 25px #667eea66}.enable-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.notification-controls{display:flex;gap:12px}.test-btn{background:#22c55e;color:#fff;border:none;padding:12px 20px;border-radius:10px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;flex:1}.test-btn:hover{background:#16a34a;transform:translateY(-1px)}.disable-btn{background:#ef4444;color:#fff;border:none;padding:12px 20px;border-radius:10px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;flex:1}.disable-btn:hover:not(:disabled){background:#dc2626;transform:translateY(-1px)}.disable-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.permission-denied-help{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;padding:16px;margin-top:16px}.permission-denied-help p{margin:0 0 12px;font-size:.875rem;color:#991b1b;line-height:1.4}.permission-denied-help p:last-child{margin-bottom:0}.help-steps{margin-top:12px}.help-steps p{margin:6px 0;font-size:.8rem;color:#7f1d1d;background:#fee2e2;padding:8px 12px;border-radius:6px}.unsupported-message{text-align:center;padding:40px 20px}.warning-icon{font-size:3rem;display:block;margin-bottom:16px}.unsupported-message p{margin:8px 0;color:#6b7280;line-height:1.5}.unsupported-message p:first-of-type{font-weight:600;color:#374151;font-size:1.1rem}@media (max-width: 480px){.push-settings-overlay{padding:10px}.modal-header{padding:16px 20px 12px}.modal-content{padding:20px}.notification-controls{flex-direction:column}.help-steps p{font-size:.75rem}}@media (prefers-color-scheme: dark){.push-settings-modal{background:#1f2937;color:#f9fafb}.modal-header{border-bottom-color:#374151}.modal-header h3{color:#f9fafb}.close-btn{color:#9ca3af}.close-btn:hover{background:#374151;color:#d1d5db}.status-info h4{color:#f9fafb}.notification-benefits{background:#374151}.notification-benefits h4{color:#f9fafb}.notification-benefits li{color:#d1d5db}.permission-denied-help{background:#1f2937;border-color:#ef4444}.permission-denied-help p{color:#fca5a5}.help-steps p{background:#374151;color:#d1d5db}.unsupported-message p{color:#9ca3af}.unsupported-message p:first-of-type{color:#d1d5db}}.home-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2);position:relative}.settings-bar{position:absolute;top:20px;right:20px;z-index:100}.notification-settings-btn{background:#fff3;border:none;border-radius:50%;width:50px;height:50px;font-size:1.2rem;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:center;justify-content:center;color:#fff}.notification-settings-btn:hover{background:#ffffff4d;transform:scale(1.1);box-shadow:0 4px 15px #0003}.notification-settings-btn:active{transform:scale(.95)}.header{text-align:center;margin-bottom:40px;position:relative}.header h1{color:#fff;font-size:2.5rem;font-weight:700;margin-bottom:10px;text-shadow:0 2px 4px rgba(0,0,0,.3)}.header p{color:#ffffffe6;font-size:1.1rem;margin-bottom:20px}.families-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:20px;max-width:600px;width:100%;margin-bottom:40px}.family-card{display:flex;flex-direction:column;align-items:center;padding:20px;background:#ffffff1a;border-radius:20px;text-decoration:none;color:#fff;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid transparent;position:relative;overflow:hidden}.family-card:hover{background:#fff3;border-color:var(--family-color);transform:translateY(-5px);box-shadow:0 10px 25px #0003}.family-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--family-color);transform:scaleX(0);transition:transform .3s ease}.family-card:hover:before{transform:scaleX(1)}.family-avatar{width:80px;height:80px;border-radius:50%;overflow:hidden;margin-bottom:15px;border:3px solid var(--family-color);transition:all .3s ease}.family-card:hover .family-avatar{transform:scale(1.1);box-shadow:0 5px 15px #0000004d}.family-avatar img{width:100%;height:100%;object-fit:cover}.family-name{font-size:1.1rem;font-weight:600;color:var(--family-color);text-shadow:0 1px 2px rgba(0,0,0,.3)}.footer{text-align:center;color:#fffc;font-style:italic}@media (max-width: 768px){.home-page{padding:15px}.header h1{font-size:2rem}.families-grid{grid-template-columns:repeat(2,1fr);gap:15px}.family-card{padding:15px}.family-avatar{width:70px;height:70px}}@media (max-width: 480px){.header h1{font-size:1.8rem}.header p{font-size:1rem}.families-grid{gap:12px}.family-avatar{width:60px;height:60px}.family-name{font-size:1rem}}.period-selection{min-height:100vh;padding:1rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.header{display:flex;flex-direction:column;align-items:center;margin-bottom:2rem;position:relative}.back-button{position:absolute;top:0;left:0;background:#fff3;border:none;color:#fff;padding:.5rem 1rem;border-radius:20px;cursor:pointer;font-size:.9rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .3s ease}.back-button:hover{background:#ffffff4d}.family-info{display:flex;flex-direction:column;align-items:center;gap:1rem;margin-top:3rem}.family-avatar-small{width:80px;height:80px;border-radius:50%;object-fit:cover;border:3px solid white;box-shadow:0 4px 12px #0003}.family-info h2{font-size:1.5rem;margin:0;text-shadow:0 2px 4px rgba(0,0,0,.3)}.periods-container{max-width:800px;margin:0 auto}.periods-container h3{text-align:center;margin-bottom:2rem;font-size:1.2rem;opacity:.9}.periods-grid{display:flex;flex-direction:column;gap:1rem}.period-item{background:#ffffff1a;border-radius:16px;overflow:hidden;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.period-card{width:100%;background:none;border:none;color:#fff;padding:1.5rem;cursor:pointer;transition:all .3s ease;position:relative;display:flex;align-items:center;justify-content:space-between}.period-card:hover{background:#ffffff1a}.period-card.expanded{background:#ffffff26}.period-content{display:flex;align-items:center;gap:1rem;flex:1}.period-year{font-size:2rem;font-weight:700;color:var(--period-color, white)}.expand-icon{font-size:1.2rem;margin-left:auto;margin-right:1rem}.view-all-link{background:var(--period-color, #4ecdc4);color:#fff;padding:.5rem 1rem;border-radius:20px;text-decoration:none;font-size:.9rem;transition:all .3s ease}.view-all-link:hover{background:#fff3}.months-dropdown{padding:1.5rem;overflow:hidden}.months-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.month-card{background:#ffffffe6;color:#333;padding:1rem;border-radius:12px;text-decoration:none;transition:all .3s ease;display:flex;flex-direction:column;gap:.5rem;box-shadow:0 2px 8px #0000001a}.month-card:hover{background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.month-short{font-size:1.2rem;font-weight:700;color:var(--month-color, #333)}.month-full{font-size:1rem;color:#666}.group-date{font-size:.8rem;color:#888;margin-top:auto}.music-indicator{position:fixed;bottom:2rem;right:2rem;z-index:100}.music-note{font-size:2rem;animation:bounce 2s infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:1rem;text-align:center}.loading-spinner{font-size:2rem}.error-container h2{color:#ff6b6b;margin:0}.error-container button{padding:.75rem 1.5rem;background-color:#4ecdc4;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1rem;transition:background-color .3s ease}.error-container button:hover{background-color:#45b7d1}.month-header{display:flex;justify-content:space-between;align-items:flex-start;width:100%;margin-bottom:4px}.month-short{font-size:16px;font-weight:600;color:var(--month-color);flex:1}.new-badge{background:linear-gradient(45deg,#ff6b6b,#ff8e8e);color:#fff;font-size:10px;font-weight:700;padding:2px 6px;border-radius:8px;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 2px 4px #ff6b6b4d;animation:pulse 2s infinite;flex-shrink:0;margin-left:8px}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.month-card.recent{border:2px solid rgba(255,107,107,.3);box-shadow:0 4px 12px #ff6b6b26}.month-card.recent:hover{box-shadow:0 6px 16px #ff6b6b40}@media (max-width: 768px){.period-selection{padding:.5rem}.months-grid{grid-template-columns:1fr}.family-info h2{font-size:1.2rem}.period-year{font-size:1.5rem}.back-button{position:static;margin-bottom:1rem;align-self:flex-start}.family-info{margin-top:1rem}.new-badge{font-size:9px;padding:1px 4px;margin-left:4px}.month-header{gap:4px}}.media-viewer{position:fixed;inset:0;background:#000;display:flex;flex-direction:column;z-index:1000;touch-action:pan-y pinch-zoom}.media-viewer.error{align-items:center;justify-content:center;color:#fff;text-align:center}.viewer-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:15px 20px;background:linear-gradient(to bottom,rgba(0,0,0,.6),transparent);z-index:10;color:#fff}.close-button{background:#ffffff26;border:none;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.2rem;cursor:pointer;transition:all .3s ease}.close-button:hover{background:#ffffff40;transform:scale(1.1)}.media-info{display:flex;flex-direction:column;align-items:center;text-align:center}.media-info h3{font-size:1.2rem;margin:0;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.7)}.media-counter{font-size:.9rem;margin-top:2px;text-shadow:0 1px 3px rgba(0,0,0,.7)}.media-container{flex:1;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;touch-action:pan-x pan-y}.media-content{width:100%;height:100%;display:flex;justify-content:center;position:relative;background:transparent}.media-image{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:8px;box-shadow:0 4px 20px #0000004d}.touch-zone{position:absolute;z-index:10;cursor:pointer}.touch-zone-left{top:0;left:0;width:1%;height:100%}.touch-zone-right{top:0;right:0;width:1%;height:100%}.touch-zone-top{top:0;left:25%;right:25%;height:3%}.touch-zone-bottom{bottom:0;left:25%;right:25%;height:3%}.touch-zone:hover{background:#ff00001a}.media-video{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:8px;box-shadow:0 4px 20px #0000004d;touch-action:manipulation}.video-wrapper{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer}.video-play-overlay{position:absolute;transform:translate(-50%,-50%);z-index:15;pointer-events:none}.play-button{width:80px;height:80px;opacity:.8;background:#000000bf;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;border:2px solid rgba(255,255,255,.3);box-shadow:0 4px 20px #0006}.video-controls{position:absolute;bottom:35px;transform:translate(-50%);width:90%;max-width:400px;background:#000000d9;border-radius:12px;padding:12px 16px;border:1px solid rgba(255,255,255,.1);z-index:20;pointer-events:auto}.video-time-info{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;color:#fff;font-weight:500}.video-progress-bar{position:relative;height:6px;background:#ffffff4d;border-radius:3px;cursor:pointer;overflow:hidden}.progress-filled{height:100%;background:linear-gradient(90deg,#ff6b6b,#4ecdc4);border-radius:3px;transition:width .1s ease}.progress-thumb{position:absolute;top:50%;width:12px;height:12px;background:#fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 2px 6px #0000004d;transition:left .1s ease}.nav-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff26;border:none;border-radius:50%;width:50px;height:50px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1.5rem;cursor:pointer;transition:all .3s ease;z-index:5}.nav-arrow:hover{background:#ffffff40;transform:translateY(-50%) scale(1.1)}.nav-arrow-left{left:20px}.nav-arrow-right{right:20px}.media-caption{position:absolute;bottom:85px;left:20px;right:20px;text-align:center;color:#fff;padding:15px 20px;border-radius:25px;z-index:5}.media-caption p{margin:0;font-size:1rem;line-height:1.4}.dots-indicator{position:absolute;bottom:30px;left:50%;transform:translate(-50%);display:flex;gap:4px;z-index:5}.dot{width:4px;height:4px;border-radius:50%;border:none;background:#fff6;cursor:pointer;transition:all .3s ease}.dot.active{background:#fff;transform:scale(1.3)}.dot:hover{background:#ffffffb3}.swipe-hint{position:absolute;bottom:140px;left:50%;transform:translate(-50%);color:#fffc;font-size:.9rem;text-align:center;background:#00000080;padding:8px 16px;border-radius:20px;pointer-events:none;z-index:5}@media (max-width: 768px){.touch-zone-left,.touch-zone-right{width:1%}.touch-zone-top,.touch-zone-bottom{left:30%;right:30%;height:3%}.viewer-header{padding:10px 15px}.close-button{width:36px;height:36px;font-size:1rem}.media-info h3{font-size:1rem}.media-counter{font-size:.8rem}.nav-arrow{width:44px;height:44px;font-size:1.3rem}.nav-arrow-left{left:15px}.nav-arrow-right{right:15px}.media-caption{bottom:85px;left:15px;right:15px;padding:12px 16px}.media-caption p{font-size:.9rem}.dots-indicator{bottom:25px}.swipe-hint{bottom:120px;font-size:.8rem;padding:6px 12px}.play-button{width:60px;height:60px;font-size:20px}.video-controls{bottom:35px;width:95%;padding:10px 14px}.video-time-info{font-size:11px;margin-bottom:6px}.video-progress-bar{height:5px}.progress-thumb{width:10px;height:10px}}@media (orientation: portrait){.touch-zone-top,.touch-zone-bottom{height:3%}}@media (orientation: landscape){.touch-zone-left,.touch-zone-right{width:20%}}@media (max-width: 480px){.viewer-header{padding:8px 12px}.media-info h3{font-size:.9rem}.nav-arrow{width:40px;height:40px;font-size:1.2rem}.nav-arrow-left{left:10px}.nav-arrow-right{right:10px}.media-caption{bottom:85px;left:10px;right:10px;padding:10px 14px}.dots-indicator{bottom:20px}.dot{width:6px;height:6px}}@media (max-height: 500px) and (orientation: landscape){.viewer-header{padding:5px 15px}.media-caption{bottom:40px;padding:8px 12px}.media-caption p{font-size:.8rem}.dots-indicator{bottom:15px}.swipe-hint{bottom:80px;font-size:.7rem}}@media (pointer: coarse){.video-progress-bar{height:8px;margin:4px 0}.progress-thumb{width:14px;height:14px}}.video-controls:hover .progress-thumb{transform:translate(-50%,-50%) scale(1.2)}@media (prefers-color-scheme: dark){.video-controls{background:#000000e6;border-color:#ffffff1a}}.body-scroll-lock{overflow:hidden!important;position:fixed!important;width:100%!important;height:100%!important}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;color:#fff;text-align:center}.loading-spinner{font-size:2rem;margin-bottom:1rem}.error-container h2{color:#ff6b6b;margin-bottom:1rem}.error-container button{background:#4ecdc4;color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-size:1rem;margin-top:1rem;transition:background .3s ease}.error-container button:hover{background:#45b7aa}.pwa-install-prompt{position:fixed;bottom:0;left:0;right:0;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;z-index:10000;transform:translateY(100%);animation:slideUp .3s ease-out forwards;box-shadow:0 -4px 20px #00000026}.pwa-install-prompt.ios-prompt{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:20px 20px 0 0}@keyframes slideUp{to{transform:translateY(0)}}.prompt-content{padding:20px;max-width:500px;margin:0 auto}.prompt-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.prompt-header h3{margin:0;font-size:1.2rem;font-weight:600}.close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:5px;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;opacity:.8;transition:all .2s ease}.close-btn:hover{opacity:1;background:#ffffff1a}.prompt-content p{margin:0 0 15px;opacity:.9;line-height:1.4}.prompt-benefits{margin-bottom:20px}.prompt-benefits ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.prompt-benefits li{font-size:.9rem;opacity:.9;padding:5px 0}.prompt-actions{display:flex;gap:12px;justify-content:flex-end}.install-btn{background:#fff;color:#667eea;border:none;padding:12px 24px;border-radius:25px;font-weight:600;cursor:pointer;transition:all .2s ease;flex:1;max-width:120px}.install-btn:hover{background:#f8f9fa;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.cancel-btn{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3);padding:12px 24px;border-radius:25px;font-weight:500;cursor:pointer;transition:all .2s ease;flex:1;max-width:120px}.cancel-btn:hover{background:#ffffff1a;border-color:#ffffff80}.ios-instructions{background:#ffffff1a;border-radius:12px;padding:15px;margin:15px 0}.instruction-step{display:flex;align-items:center;margin-bottom:12px;font-size:.9rem}.instruction-step:last-child{margin-bottom:0}.step-number{background:#fff;color:#667eea;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.8rem;margin-right:12px;flex-shrink:0}.share-icon,.add-icon{margin-left:auto;font-size:1.2rem}@media (max-width: 480px){.prompt-content{padding:16px}.prompt-benefits ul{grid-template-columns:1fr}.prompt-actions{flex-direction:column}.install-btn,.cancel-btn{max-width:none}}@media (prefers-color-scheme: dark){.pwa-install-prompt{background:linear-gradient(135deg,#1a1a2e,#16213e)}.ios-instructions{background:#ffffff0d}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(135deg,#667eea,#764ba2);min-height:100vh;overflow-x:hidden}.App{min-height:100vh;width:100%;position:relative}@media (max-width: 768px){body{font-size:16px}}button,.clickable{min-height:10px;min-width:10px}.no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
