.language-switcher{display:flex;align-items:center;gap:4px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;padding:6px 12px;cursor:pointer;transition:all .3s ease;font-size:.85rem}.language-switcher:hover{background:#ffffff26;border-color:var(--primary)}.language-switcher span{color:var(--gray);font-weight:500;transition:color .3s ease}.language-switcher span.active{color:var(--primary)}.language-switcher .divider{color:var(--gray);opacity:.5}.header{position:fixed;top:0;left:0;right:0;z-index:1000;background:#0f172ae6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1)}.nav{display:flex;justify-content:space-between;align-items:center;height:70px}.logo{font-family:Fira Code,monospace;font-size:1.5rem;font-weight:600;display:flex;align-items:center;gap:2px}.logo-bracket{color:var(--primary)}.logo-text{color:var(--light)}.nav-links{display:flex;align-items:center;gap:32px}.nav-links a{font-size:.95rem;font-weight:500;color:var(--gray);transition:color .3s ease;position:relative}.nav-links a:hover,.nav-links a.active{color:var(--light)}.nav-links a:after{content:"";position:absolute;bottom:-4px;left:0;width:0;height:2px;background:var(--gradient);transition:width .3s ease}.nav-links a:hover:after,.nav-links a.active:after{width:100%}.nav-special{background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:600!important}.nav-special:after{display:none!important}.menu-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:30px;height:30px;background:none;border:none;cursor:pointer;padding:0}.menu-toggle span{display:block;width:100%;height:2px;background:var(--light);transition:all .3s ease}.menu-toggle.active span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.menu-toggle.active span:nth-child(2){opacity:0}.menu-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.nav-lang{margin-left:8px}@media (max-width: 768px){.menu-toggle{display:flex}.nav-links{position:fixed;top:70px;left:0;right:0;bottom:0;flex-direction:column;justify-content:flex-start;padding-top:40px;gap:24px;background:var(--dark);transform:translate(100%);transition:transform .3s ease}.nav-links.active{transform:translate(0)}.nav-links a{font-size:1.25rem}.nav-lang{margin-left:0;margin-top:16px}}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-top:70px;position:relative;overflow:hidden}.hero:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse at 50% 0%,rgba(99,102,241,.15) 0%,transparent 50%);pointer-events:none}.hero .container{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}.hero-content{z-index:1}.hero-greeting{color:var(--primary);font-family:Fira Code,monospace;font-size:1rem;margin-bottom:16px}.hero-name{font-size:4rem;font-weight:700;color:var(--light);margin-bottom:8px;line-height:1.1}.hero-title{font-size:2.5rem;font-weight:600;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:24px}.hero-description{color:var(--gray);font-size:1.125rem;max-width:500px;margin-bottom:32px;line-height:1.8}.hero-cta{display:flex;gap:16px;flex-wrap:wrap}.hero-visual{display:flex;justify-content:center;align-items:center}.code-block{background:var(--dark-light);border-radius:12px;overflow:hidden;box-shadow:0 20px 50px #0000004d;width:100%;max-width:420px;border:1px solid rgba(255,255,255,.1)}.code-header{background:#0000004d;padding:12px 16px;display:flex;gap:8px}.dot{width:12px;height:12px;border-radius:50%}.dot.red{background:#ff5f56}.dot.yellow{background:#ffbd2e}.dot.green{background:#27ca40}.code-content{padding:24px;margin:0;overflow-x:auto}.code-content code{font-family:Fira Code,monospace;font-size:.9rem;color:var(--light);line-height:1.8;white-space:pre}.hero-scroll{position:absolute;bottom:40px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px}.hero-scroll span{color:var(--gray);font-size:.875rem}.scroll-indicator{width:24px;height:40px;border:2px solid var(--gray);border-radius:12px;position:relative}.scroll-indicator:before{content:"";position:absolute;top:8px;left:50%;transform:translate(-50%);width:4px;height:8px;background:var(--primary);border-radius:2px;animation:scroll 2s infinite}@keyframes scroll{0%,to{opacity:1;top:8px}50%{opacity:.5;top:20px}}@media (max-width: 992px){.hero .container{grid-template-columns:1fr;text-align:center}.hero-description{margin-left:auto;margin-right:auto}.hero-cta{justify-content:center}.hero-visual{order:-1}.code-block{max-width:360px}}@media (max-width: 768px){.hero-name{font-size:2.5rem}.hero-title{font-size:1.5rem}.hero-description{font-size:1rem}.hero-scroll{display:none}}.about-content{display:grid;grid-template-columns:300px 1fr;gap:60px;align-items:start}.about-image{display:flex;justify-content:center}.image-wrapper{position:relative}.image-placeholder{width:280px;height:280px;background:var(--dark-light);border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:4rem;font-weight:700;color:var(--primary);font-family:Fira Code,monospace;position:relative;z-index:1}.image-border{position:absolute;top:20px;left:20px;width:280px;height:280px;border:3px solid var(--primary);border-radius:12px;z-index:0}.about-text{display:flex;flex-direction:column;gap:20px}.about-text p{color:var(--gray);font-size:1.1rem;line-height:1.8}.about-text .highlight{color:var(--primary);font-weight:500}.about-text .highlight:hover{text-decoration:underline}.about-stats{display:flex;gap:40px;margin-top:20px}.stat{display:flex;flex-direction:column;gap:4px}.stat-number{font-size:2.5rem;font-weight:700;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.stat-label{color:var(--gray);font-size:.9rem}@media (max-width: 992px){.about-content{grid-template-columns:1fr;gap:40px}.about-image{justify-content:center}.about-text{text-align:center}.about-stats{justify-content:center}}@media (max-width: 576px){.image-placeholder{width:200px;height:200px;font-size:3rem}.image-border{width:200px;height:200px;top:15px;left:15px}.about-stats{flex-wrap:wrap;gap:24px}.stat-number{font-size:2rem}}.skills{background:var(--dark-light)}.skills-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px}.skill-card{background:var(--dark);border-radius:16px;padding:32px;border:1px solid rgba(255,255,255,.1);transition:all .3s ease}.skill-card:hover{border-color:var(--primary);transform:translateY(-5px)}.skill-card-header{display:flex;align-items:center;gap:12px;margin-bottom:24px}.skill-icon{font-size:2rem}.skill-card-header h3{font-size:1.25rem;font-weight:600;color:var(--light)}.skill-list{display:flex;flex-wrap:wrap;gap:10px}.skill-list li{background:#6366f11a;color:var(--primary);padding:8px 16px;border-radius:20px;font-size:.9rem;font-weight:500;transition:all .3s ease}.skill-list li:hover{background:var(--primary);color:var(--white)}@media (max-width: 576px){.skill-card{padding:24px}.skill-list li{padding:6px 12px;font-size:.85rem}}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px}.project-card{background:var(--dark-light);border-radius:16px;padding:32px;border:1px solid rgba(255,255,255,.1);transition:all .3s ease;display:flex;flex-direction:column}.project-card:hover{transform:translateY(-8px);border-color:var(--primary)}.project-card.featured{background:linear-gradient(135deg,#6366f11a,#0ea5e91a);border-color:#6366f14d}.project-content{display:flex;flex-direction:column;height:100%}.project-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.folder-icon{color:var(--primary)}.project-links{display:flex;gap:12px}.project-links a{color:var(--gray);transition:color .3s ease}.project-links a:hover{color:var(--primary)}.project-title{font-size:1.25rem;font-weight:600;color:var(--light);margin-bottom:12px}.project-title a{transition:color .3s ease}.project-title a:hover{color:var(--primary)}.project-description{color:var(--gray);font-size:.95rem;line-height:1.7;margin-bottom:24px;flex-grow:1}.project-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:auto}.project-tags li{color:var(--gray);font-family:Fira Code,monospace;font-size:.8rem}@media (max-width: 576px){.project-card{padding:24px}}.contact{background:var(--dark-light)}.contact-content{text-align:center;max-width:600px;margin:0 auto}.contact-text{color:var(--gray);font-size:1.125rem;line-height:1.8;margin-bottom:40px}.contact-btn{margin-bottom:0}.song-search{position:relative;max-width:500px;margin:0 auto 32px}.search-input-wrapper{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:16px;color:var(--gray);pointer-events:none}.search-input{width:100%;padding:16px 48px;background:var(--dark-light);border:2px solid rgba(255,255,255,.1);border-radius:12px;color:var(--light);font-size:1rem;transition:all .3s ease}.search-input::placeholder{color:var(--gray)}.search-input:focus{outline:none;border-color:var(--primary);background:var(--dark)}.search-clear{position:absolute;right:12px;background:#ffffff1a;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gray);transition:all .3s ease}.search-clear:hover{background:#fff3;color:var(--light)}.search-results{position:absolute;top:100%;left:0;right:0;margin-top:8px;background:var(--dark-light);border:1px solid rgba(255,255,255,.1);border-radius:12px;max-height:400px;overflow-y:auto;z-index:100;box-shadow:0 10px 40px #0006}.search-result-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.05);transition:background .2s ease}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:#6366f11a}.result-number{width:40px;height:40px;background:#6366f133;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600;color:var(--primary);flex-shrink:0}.result-info{flex:1;min-width:0}.result-title{display:block;color:var(--light);font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-book{display:block;color:var(--gray);font-size:.8rem;text-transform:capitalize;margin-top:2px}.result-lang{font-size:.7rem;padding:3px 8px;background:#ffffff1a;border-radius:4px;color:var(--gray);flex-shrink:0}.search-no-results{padding:24px;text-align:center;color:var(--gray)}@media (max-width: 576px){.search-input{padding:14px 44px;font-size:.95rem}.search-results{max-height:300px}.result-number{width:36px;height:36px}}.funding-goal{background:linear-gradient(135deg,#6366f11a,#8b5cf61a);border:1px solid rgba(99,102,241,.3);border-radius:16px;padding:32px;margin:40px 0;display:flex;gap:24px;align-items:flex-start}.funding-icon{background:var(--gradient);border-radius:12px;padding:12px;flex-shrink:0}.funding-icon svg{stroke:#fff;display:block}.funding-content{flex:1}.funding-content h3{font-size:1.25rem;font-weight:600;color:var(--light);margin-bottom:8px}.funding-description{color:var(--gray);font-size:.95rem;line-height:1.6;margin-bottom:20px}.funding-progress{margin-bottom:16px}.progress-bar{height:12px;background:#ffffff1a;border-radius:6px;overflow:hidden;margin-bottom:8px}.progress-fill{height:100%;background:var(--gradient);border-radius:6px;transition:width .5s ease;min-width:4px}.progress-stats{display:flex;justify-content:space-between;font-size:.9rem}.amount-raised{color:var(--primary);font-weight:600}.amount-goal{color:var(--gray)}.funding-remaining{color:var(--light);font-size:.9rem;margin-bottom:20px}.funding-btn{display:inline-flex;align-items:center;gap:8px}@media (max-width: 600px){.funding-goal{flex-direction:column;text-align:center;padding:24px}.funding-icon{margin:0 auto}.progress-stats{flex-direction:column;gap:4px;align-items:center}.funding-btn{width:100%;justify-content:center}}.chants-page{padding-top:120px;padding-bottom:80px;min-height:100vh}.chants-hero{text-align:center;margin-bottom:40px}.chants-subtitle{color:var(--gray);font-size:1.25rem;margin-bottom:16px}.chants-description{color:var(--gray);font-size:1rem;max-width:600px;margin:0 auto;line-height:1.7}.app-cta-bar{display:flex;justify-content:center;gap:16px;margin-bottom:48px;flex-wrap:wrap}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;margin-bottom:48px}.book-card{display:flex;align-items:center;gap:16px;background:var(--dark-light);border-radius:12px;padding:20px;border:1px solid rgba(255,255,255,.1);transition:all .3s ease}.book-card:hover{transform:translateY(-4px);border-color:var(--primary);box-shadow:0 10px 30px #0000004d}.book-cover{width:60px;height:80px;border-radius:6px;overflow:hidden;flex-shrink:0;background:var(--dark)}.book-cover img{width:100%;height:100%;object-fit:cover}.book-info{flex:1;min-width:0}.book-info h3{font-size:1rem;font-weight:600;color:var(--light);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-info p{font-size:.85rem;color:var(--gray);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.book-languages{display:flex;gap:8px}.book-languages span{font-size:.75rem;padding:2px 8px;background:#ffffff1a;border-radius:4px;color:var(--gray)}.chants-footer{text-align:center;padding-top:32px;border-top:1px solid rgba(255,255,255,.1)}.chants-footer p{color:var(--gray);font-size:.9rem}@media (max-width: 576px){.chants-page{padding-top:100px}.books-grid{grid-template-columns:1fr}.app-cta-bar{flex-direction:column;align-items:center}.app-cta-bar .btn{width:100%;max-width:280px;justify-content:center}}.book-detail-page{padding-top:100px;padding-bottom:80px;min-height:100vh}.book-header{text-align:center;margin-bottom:32px}.back-link{display:inline-flex;align-items:center;gap:8px;color:var(--gray);font-size:.9rem;margin-bottom:16px;transition:color .3s ease}.back-link:hover{color:var(--primary)}.book-header h1{font-size:2rem;color:var(--light);margin-bottom:8px}.book-header p{color:var(--gray);margin-bottom:20px}.language-toggle{display:inline-flex;background:var(--dark-light);border-radius:8px;padding:4px;gap:4px}.language-toggle button{padding:8px 20px;border:none;background:transparent;color:var(--gray);border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .3s ease}.language-toggle button.active{background:var(--primary);color:#fff}.language-toggle button:hover:not(.active){color:var(--light)}.book-detail-page .app-cta-bar{display:flex;justify-content:center;margin-bottom:32px}.btn-sm{padding:10px 20px;font-size:.9rem}.loading{text-align:center;color:var(--gray);padding:60px 0}.songs-list{display:flex;flex-direction:column;gap:8px;max-width:700px;margin:0 auto}.song-item{display:flex;align-items:center;gap:16px;background:var(--dark-light);padding:16px 20px;border-radius:8px;border:1px solid rgba(255,255,255,.05);transition:all .3s ease}.song-item:hover{border-color:var(--primary);background:#6366f11a}.song-number{width:40px;height:40px;background:#ffffff1a;border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--primary);flex-shrink:0}.song-title{flex:1;color:var(--light);font-size:.95rem}.song-item svg{color:var(--gray);flex-shrink:0}.book-footer{text-align:center;margin-top:40px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1)}.book-footer p{color:var(--gray);font-size:.85rem}@media (max-width: 576px){.book-header h1{font-size:1.5rem}.song-item{padding:12px 16px}.song-number{width:36px;height:36px;font-size:.9rem}}.protected-lyrics{position:relative;background:#0f172a80;border-radius:12px;padding:32px;margin:24px 0;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.lyrics-watermark{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(-30deg);font-size:4rem;font-weight:700;color:#ffffff08;white-space:nowrap;pointer-events:none;z-index:0}.lyrics-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:2;pointer-events:none;background:transparent}.lyrics-text{position:relative;z-index:1;font-family:Georgia,serif;font-size:1.1rem;line-height:1.8;color:var(--light);white-space:pre-wrap;pointer-events:auto}.lyrics-text .c{display:inline;position:relative}.lyrics-text .s{display:inline}.lyric-line{min-height:1.8em}.lyric-line:empty:before{content:" "}.protected-lyrics ::selection{background:transparent;color:inherit}.protected-lyrics ::-moz-selection{background:transparent;color:inherit}.protected-lyrics img{-webkit-user-drag:none;user-drag:none}@media print{.protected-lyrics{display:none}.protected-lyrics:after{content:"Printing is disabled. Please use the Chants d'Espérance app.";display:block;padding:40px;text-align:center;font-size:1.2rem}}.protected-lyrics:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--gradient)}@media (max-width: 600px){.protected-lyrics{padding:20px}.lyrics-text{font-size:1rem}.lyrics-watermark{font-size:2rem}}.song-page{padding-top:100px;padding-bottom:80px;min-height:100vh}.song-header{text-align:center;margin-bottom:32px}.song-header .back-link{display:inline-flex;align-items:center;gap:8px;color:var(--gray);font-size:.9rem;margin-bottom:20px;transition:color .3s ease}.song-header .back-link:hover{color:var(--primary)}.song-meta{display:flex;justify-content:center;gap:12px;margin-bottom:16px}.song-number-badge,.song-lang-badge{padding:4px 12px;border-radius:20px;font-size:.8rem;font-weight:500}.song-number-badge{background:var(--primary);color:#fff}.song-lang-badge{background:#ffffff1a;color:var(--gray)}.song-header h1{font-size:1.75rem;color:var(--light);margin-bottom:8px;line-height:1.3}.song-book{color:var(--gray);font-size:.95rem}.app-cta-section{max-width:700px;margin:24px auto;text-align:center;padding:24px;background:#6366f11a;border:1px solid rgba(99,102,241,.2);border-radius:12px}.app-cta-section p{color:var(--gray);margin-bottom:20px;font-size:.95rem}.cta-buttons{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.share-section{max-width:600px;margin:32px auto 0;display:flex;align-items:center;justify-content:center;gap:16px}.share-section p{color:var(--gray);font-size:.9rem}.share-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:var(--light);font-size:.9rem;cursor:pointer;transition:all .3s ease}.share-btn:hover{background:#ffffff26;border-color:var(--primary)}.song-footer{max-width:600px;margin:48px auto 0;text-align:center;padding-top:24px;border-top:1px solid rgba(255,255,255,.1)}.song-footer p{color:var(--gray);font-size:.85rem;line-height:1.8}.song-footer a{color:var(--primary)}.song-footer a:hover{text-decoration:underline}@media (max-width: 576px){.song-header h1{font-size:1.35rem}.lyrics-content{padding:24px}.lyrics-content pre{font-size:1rem}.cta-buttons{flex-direction:column}.cta-buttons .btn{width:100%;justify-content:center}.share-section{flex-direction:column;gap:12px}}.footer{padding:40px 0;text-align:center}.footer-text{color:var(--gray);font-size:.9rem;margin-bottom:8px}.footer-text span{color:var(--primary);font-weight:500}.footer-copyright{color:var(--gray);font-size:.85rem;opacity:.7}:root{--primary: #6366f1;--primary-dark: #4f46e5;--secondary: #0ea5e9;--dark: #0f172a;--dark-light: #1e293b;--gray: #64748b;--light: #f8fafc;--white: #ffffff;--gradient: linear-gradient(135deg, var(--primary) 0%, var(--secondary) 100%)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background-color:var(--dark);color:var(--light);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none;color:inherit}ul{list-style:none}img{max-width:100%;height:auto}.container{max-width:1200px;margin:0 auto;padding:0 24px}.section{padding:100px 0}.section-title{font-size:2.5rem;font-weight:700;margin-bottom:1rem;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.section-subtitle{color:var(--gray);font-size:1.125rem;margin-bottom:3rem}.btn{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border-radius:8px;font-weight:500;font-size:1rem;cursor:pointer;transition:all .3s ease;border:none}.btn-primary{background:var(--gradient);color:var(--white)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 30px #6366f14d}.btn-secondary{background:transparent;color:var(--light);border:2px solid var(--gray)}.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}code{font-family:Fira Code,monospace}@media (max-width: 768px){.section{padding:60px 0}.section-title{font-size:2rem}}
