@import"https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&family=Playfair+Display:wght@500;600;700;800&display=swap";:root{--background: 210 50% 97%;--foreground: 220 55% 18%;--card: 0 0% 100%;--primary: 220 65% 38%;--primary-foreground: 210 50% 98%;--muted: 210 30% 94%;--muted-foreground: 220 15% 45%;--accent: 42 65% 55%;--gold-dark: 42 70% 40%;--border: 215 30% 88%;--input: 215 30% 88%;--radius: .75rem;--night: 220 50% 8%;--night-card: 220 45% 12%}*{box-sizing:border-box}html,body{margin:0}body{font-family:Lato,system-ui,sans-serif;background:hsl(var(--background));color:hsl(var(--foreground));-webkit-font-smoothing:antialiased}.serif{font-family:Playfair Display,serif}.container{max-width:480px;margin:0 auto}@keyframes pulse-gold{0%,to{box-shadow:0 0 #d7aa4266}50%{box-shadow:0 0 0 8px #d7aa4200}}.pulse-gold{animation:pulse-gold 2s infinite}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.fade-up{animation:fade-up .6s ease-out both}@keyframes twinkle{0%,to{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}.stars{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;overflow:hidden}.stars i{position:absolute;color:hsl(var(--accent));font-size:12px;filter:drop-shadow(0 0 4px hsl(42 80% 60% / .8));animation:twinkle 3s ease-in-out infinite}.deco{position:absolute;pointer-events:none;z-index:1;opacity:.9;font-size:18px}a{color:hsl(var(--primary));text-decoration:none}button{font-family:inherit}.hero{position:relative;color:#fff;text-align:center;padding:30px 20px 26px;overflow:hidden}@keyframes kenburns{0%{transform:scale(1.04)}to{transform:scale(1.14)}}.hero:before{content:"";position:absolute;top:-6%;right:-6%;bottom:-6%;left:-6%;background-image:var(--hero);background-size:cover;background-position:center 30%;animation:kenburns 18s ease-in-out infinite alternate}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#1429528c,#0b1832d1)}.hero>*{position:relative;z-index:1}.hero .eyebrow-top{color:hsl(var(--accent));font-size:12px;letter-spacing:.2em;font-weight:600;margin-bottom:2px;text-shadow:0 1px 6px rgba(0,0,0,.4)}.hero h1{font-size:30px;margin:4px 0 2px;font-weight:800;text-shadow:0 2px 12px rgba(0,0,0,.4)}.hero .sub{font-size:13.5px;opacity:.92;margin:0 auto 16px;max-width:320px;line-height:1.45}.countdown{display:inline-flex;gap:8px;align-items:stretch;background:hsl(var(--accent) / .16);border:1px solid hsl(var(--accent) / .45);padding:8px 12px;border-radius:999px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.countdown .badge{font-size:11.5px;letter-spacing:.03em;opacity:.92;align-self:center;padding-right:2px}.countdown .unit{text-align:center;min-width:38px;background:#ffffff29;border:1px solid hsl(0 0% 100% / .2);border-radius:10px;padding:4px 6px}.countdown .unit b{display:block;font-size:18px;font-weight:900;line-height:1.05}.countdown .unit span{font-size:9.5px;opacity:.85;letter-spacing:.03em}.verse{margin:-14px 16px 0;position:relative;z-index:2;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--radius);padding:12px 16px;text-align:center;box-shadow:0 8px 24px #2e426b1a}.verse .v-eyebrow{color:hsl(var(--accent));font-size:11px;letter-spacing:.14em;font-weight:700}.verse .v{font-style:italic;color:hsl(var(--foreground));font-size:13.5px;margin-top:6px;line-height:1.5}.verse .v-divider{height:1px;background:hsl(var(--border));margin:12px 18%}.verse .g{font-weight:700;font-size:14px;color:hsl(var(--primary))}.verse .flower{font-size:13px;vertical-align:middle}.actions{padding:16px;display:grid;gap:10px}.action{display:flex;align-items:center;gap:14px;cursor:pointer;border-radius:var(--radius);padding:14px 16px;border:1px solid transparent;transition:transform .06s}.action:active{transform:scale(.99)}.action.primary{background:hsl(var(--primary));color:#fff}.action.ghost{background:hsl(var(--card));border-color:hsl(var(--border))}.action .ic{width:44px;height:44px;border-radius:999px;flex:none;display:flex;align-items:center;justify-content:center;font-size:20px}.action.primary .ic{background:hsl(var(--accent));color:hsl(var(--gold-dark));animation:pulse-gold 2.4s infinite}.action.ghost .ic{background:hsl(var(--muted))}.action .t b{display:block;font-size:15px}.action .t span{font-size:12.5px;opacity:.85}.section-h{text-align:center;margin:22px 16px 14px}.section-h .eyebrow{color:hsl(var(--accent));font-size:12px;letter-spacing:.12em;font-weight:700;text-transform:uppercase}.section-h h2{font-size:22px;margin:4px 0 2px;font-weight:800}.section-h p{color:hsl(var(--muted-foreground));font-size:13px;margin:0}.cats{padding:0 16px 8px;display:grid;gap:16px}.cat-card{position:relative;border-radius:16px;overflow:hidden;cursor:pointer;box-shadow:0 10px 26px #26375929;border:1px solid hsl(var(--border))}.cat-card .img{position:relative;height:196px;background-size:cover;background-position:center 28%}.cat-card .img:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to top,#0c1831e0,#1429521a 55%)}.cat-card .num{position:absolute;top:12px;left:12px;z-index:2;width:30px;height:30px;border-radius:999px;background:hsl(var(--card) / .92);color:hsl(var(--primary));font-weight:900;font-size:14px;display:flex;align-items:center;justify-content:center}.cat-card .count{position:absolute;top:12px;right:12px;z-index:3;background:hsl(var(--card) / .92);color:hsl(var(--primary));font-weight:800;font-size:13px;padding:5px 11px;border-radius:999px;box-shadow:0 2px 8px #1f2c4740}.cat-card .img:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;background:radial-gradient(circle at 80% 20%,hsl(42 80% 70% / .22),transparent 45%)}.cat-card .title{position:absolute;left:16px;bottom:14px;z-index:2;color:#fff;font-size:21px;font-weight:800;text-shadow:0 2px 10px rgba(0,0,0,.6);padding-right:60px}.cat-card .desc{background:hsl(var(--card));padding:13px 16px;font-size:13px;color:hsl(var(--muted-foreground));display:flex;align-items:center;justify-content:space-between;gap:10px}.cat-card .desc .chev{color:hsl(var(--primary));font-size:22px;font-weight:700;flex:none;opacity:.7}.cat-card .cat-note{background:#faf5eb;border-top:1px solid hsl(42 50% 85%);color:#6b592e;font-size:12px;line-height:1.5;padding:11px 16px}.howto{margin:24px 16px 36px}.howto .eyebrow{text-align:center;color:hsl(var(--muted-foreground));font-size:12px;letter-spacing:.12em;font-weight:700}.howto .row{display:flex;align-items:center;gap:12px;padding:10px 0}.howto .dot{width:34px;height:34px;border-radius:999px;flex:none;display:flex;align-items:center;justify-content:center;font-size:15px}.howto .gold{background:hsl(var(--accent));color:hsl(var(--gold-dark))}.howto .blue{background:hsl(var(--primary));color:#fff}.howto .gray{background:hsl(var(--muted))}.howto .row span b{color:hsl(var(--foreground))}.howto .row span{font-size:13.5px;color:hsl(var(--muted-foreground))}.foot-admin{text-align:center;padding:8px 0 30px}.cat-hero{position:relative;color:#fff;text-align:center;padding:18px 20px 30px;overflow:hidden}.cat-hero:before{content:"";position:absolute;top:-6%;right:-6%;bottom:-6%;left:-6%;background-image:var(--hero);background-size:cover;background-position:center 35%;animation:kenburns 20s ease-in-out infinite alternate}.cat-hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#1225498c,#0b1832d9)}.cat-hero>*{position:relative;z-index:1}.cat-hero .back{position:absolute;top:14px;left:14px;color:#fff;font-size:15px;opacity:.95;z-index:2}.cat-hero .eyebrow{color:hsl(var(--accent));font-size:12px;letter-spacing:.14em;font-weight:700;margin-top:26px}.cat-hero h1{font-size:26px;margin:6px 0;font-weight:800;text-shadow:0 2px 12px rgba(0,0,0,.4)}.cat-hero .desc{font-size:13px;opacity:.9;font-style:italic;max-width:320px;margin:0 auto 14px;line-height:1.45}.cat-hero .pill{display:inline-flex;align-items:center;gap:6px;background:#ffffff29;border:1px solid hsl(0 0% 100% / .35);padding:6px 14px;border-radius:999px;font-size:13px;font-weight:700;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.cal-head{text-align:center;margin:22px 0 16px}.cal-head .eyebrow{color:hsl(var(--accent));font-size:12px;letter-spacing:.12em;font-weight:700}.cal-head h2{font-size:22px;margin:4px 0 2px;font-weight:800}.cal-head p{color:hsl(var(--muted-foreground));font-size:13px;margin:0}.cal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;padding:0 18px}.day{position:relative;aspect-ratio:1;border-radius:999px;border:2px solid hsl(var(--accent) / .6);background:hsl(var(--card));color:hsl(var(--primary));font-weight:800;font-size:17px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 10px #2e426b14}.day.locked{border-color:hsl(var(--border));color:hsl(var(--muted-foreground));background:hsl(var(--muted));cursor:default;opacity:.7}.day.today{box-shadow:0 0 0 3px hsl(var(--accent) / .35)}.day .mark{position:absolute;top:-10px;color:hsl(var(--accent));font-size:12px}.legend{display:flex;justify-content:center;gap:16px;margin:20px 0 30px;font-size:12px;color:hsl(var(--muted-foreground))}.legend span{display:inline-flex;align-items:center;gap:5px}.song-list{padding:16px;display:grid;gap:12px}.song-row{display:flex;gap:12px;align-items:center;background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:14px;padding:10px 12px;box-shadow:0 4px 12px #2e426b0f}.song-row .thumb{width:56px;height:56px;border-radius:10px;background-size:cover;background-position:center;flex:none}.song-row .info{flex:1;min-width:0}.song-row .badge{color:hsl(var(--gold-dark));font-size:10px;letter-spacing:.08em;font-weight:800}.song-row .info b{display:block;font-size:14.5px}.song-row .info p{margin:2px 0 0;font-size:12px;color:hsl(var(--muted-foreground));display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.song-row .btns{display:flex;flex-direction:column;gap:6px;flex:none}.song-row .btns button{width:34px;height:34px;border-radius:999px;border:0;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center}.song-row .btns .gold{background:hsl(var(--accent));color:hsl(var(--gold-dark))}.song-row .btns .blue{background:hsl(var(--primary));color:#fff}.song-row .btns .gray{background:hsl(var(--muted));color:hsl(var(--foreground))}.prayer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;color:#f3f0e7;background:radial-gradient(120% 80% at 50% 0%,#12213f,hsl(var(--night)) 70%);display:flex;flex-direction:column}.prayer .top{display:flex;align-items:center;justify-content:space-between;padding:14px 18px}.prayer .top .pg{font-size:13px;opacity:.7}.prayer .top .tools{display:flex;gap:8px;align-items:center}.prayer .top button{background:#ffffff14;border:0;color:#f3f0e7;width:34px;height:34px;border-radius:999px;font-size:18px;cursor:pointer}.prayer .body{flex:1;overflow:auto;text-align:center;padding:8px 26px 120px}.prayer .eyebrow{color:hsl(var(--accent));letter-spacing:.18em;font-size:12px;font-weight:700;margin-top:10px}.prayer h2{font-size:27px;margin:8px 0 22px;font-weight:700}.prayer .lyric{white-space:pre-wrap;line-height:2;font-size:var(--lyric, 17px);opacity:.92}.prayer .marker{color:hsl(var(--accent));font-weight:700}.prayer .dock{position:absolute;left:0;right:0;bottom:0;padding:0 0 26px;display:flex;flex-direction:column;align-items:center;background:linear-gradient(to top,hsl(var(--night)) 40%,transparent)}.candle{width:26px;height:46px;position:relative;margin-bottom:16px}.candle .glow{position:absolute;left:50%;bottom:26px;width:64px;height:64px;margin-left:-32px;background:radial-gradient(circle,hsl(42 90% 65% / .55),transparent 65%);animation:flame-glow 2.2s ease-in-out infinite}.candle .wax{position:absolute;bottom:0;width:26px;height:30px;background:linear-gradient(#fbf6e9,#e9dcc0);border-radius:5px}.candle .flame{position:absolute;left:50%;bottom:30px;width:11px;height:19px;margin-left:-5.5px;background:radial-gradient(circle at 50% 70%,#fff3c4,#ffb13c 55%,#ff7a00 80%,transparent 90%);border-radius:50%/60% 60% 40% 40%;animation:flame-flicker 1.6s ease-in-out infinite;transform-origin:bottom center}@keyframes flame-flicker{0%,to{transform:scaleY(1) translateY(0);opacity:.95}25%{transform:scaleY(1.05) translateY(-1px);opacity:1}50%{transform:scaleY(.95) translateY(.5px);opacity:.9}75%{transform:scaleY(1.08) translateY(-1px);opacity:1}}@keyframes flame-glow{0%,to{opacity:.55;transform:scale(1)}50%{opacity:.85;transform:scale(1.12)}}.controls{display:flex;gap:18px;align-items:center}.controls .pp{width:66px;height:66px;border-radius:999px;border:0;cursor:pointer;font-size:26px;background:hsl(var(--accent));color:hsl(var(--gold-dark));box-shadow:0 6px 22px #b8871480;animation:pulse-gold 2.4s infinite}.controls .nx{width:46px;height:46px;border-radius:999px;border:1px solid hsl(0 0% 100% / .25);background:#ffffff0f;color:#f3f0e7;cursor:pointer;font-size:18px}.admin-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:16px}.admin-back{align-self:flex-start;color:hsl(var(--muted-foreground));font-size:15px;padding:8px}.admin-card{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:16px;padding:28px 26px;width:100%;max-width:420px;margin-top:8vh;box-shadow:0 12px 30px #2e426b1f;text-align:center}.admin-card .rosary{font-size:30px}.admin-card h1{font-size:27px;margin:8px 0 2px;font-weight:800}.admin-card .muted{color:hsl(var(--muted-foreground));font-size:14px;margin:0 0 18px}.field{text-align:left;margin-bottom:14px}.field label{font-weight:700;font-size:14px}.input{width:100%;margin-top:6px;padding:12px 14px;border:1px solid hsl(var(--input));border-radius:10px;background:hsl(var(--background));font-size:15px}.btn{width:100%;background:hsl(var(--primary));color:#fff;border:0;border-radius:999px;padding:13px;font-size:16px;font-weight:700;cursor:pointer}.btn:disabled{opacity:.6}.btn-sm{width:auto;padding:10px 18px}.err{color:#c0392b;font-size:14px}.loading{text-align:center;color:hsl(var(--muted-foreground));padding:60px}.adminbar{display:flex;justify-content:space-between;align-items:center;margin:8px 0 18px}.table{width:100%;border-collapse:collapse;font-size:14px}.table td,.table th{border-bottom:1px solid hsl(var(--border));padding:8px;text-align:left}
