*{margin:0;padding:0;box-sizing:border-box}
#intro-loader{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#140b24 0%,#080510 55%,#020106 100%);transition:opacity 1.1s ease .2s,visibility 0s linear 1.4s;pointer-events:all}
#intro-loader.fade{opacity:0;visibility:hidden;pointer-events:none}
.intro-stage-bg{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,rgba(240,200,80,.07) 0%,transparent 45%),radial-gradient(circle at 30% 70%,rgba(138,180,248,.04) 0%,transparent 40%),radial-gradient(circle at 75% 30%,rgba(200,158,255,.04) 0%,transparent 40%);animation:intro-breathe 8s ease-in-out infinite}
@keyframes intro-breathe{0%,100%{opacity:.85}50%{opacity:1}}
.intro-wrap{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;padding:0 24px;text-align:center}
.rose-window{width:260px;height:260px;filter:drop-shadow(0 0 50px rgba(240,200,80,.25)) drop-shadow(0 0 14px rgba(240,200,80,.35));animation:rw-core-pulse 3.4s ease-in-out infinite}
@keyframes rw-core-pulse{0%,100%{filter:drop-shadow(0 0 50px rgba(240,200,80,.22)) drop-shadow(0 0 10px rgba(240,200,80,.3))}50%{filter:drop-shadow(0 0 70px rgba(240,200,80,.42)) drop-shadow(0 0 18px rgba(240,200,80,.55))}}
.intro-title{font-family:'Georgia','Palatino Linotype',serif;font-size:1.45rem;letter-spacing:.26em;color:#f0e6c8;text-shadow:0 0 24px rgba(240,200,80,.45);font-weight:300;margin:6px 0 0;text-transform:uppercase}
.intro-sub{font-size:.68rem;letter-spacing:.24em;color:#8a7a50;text-transform:uppercase;margin-top:-4px}
.intro-latin{font-family:'Georgia','Palatino Linotype',serif;font-style:italic;font-size:1rem;color:#d4b870;opacity:.92;height:24px;margin-top:6px;transition:opacity .6s ease;letter-spacing:.03em;text-shadow:0 0 12px rgba(240,200,80,.3)}
.intro-latin.swap{opacity:0}
.intro-progress-wrap{width:300px;margin-top:10px}
.intro-progress-bar{width:100%;height:2px;background:rgba(240,200,80,.15);border-radius:2px;overflow:hidden;position:relative}
#intro-progress-fill{height:100%;width:0;background:linear-gradient(90deg,#8a6020,#f0c850,#fff0b8);box-shadow:0 0 10px rgba(240,200,80,.6);transition:width .6s ease}
#intro-stage{font-size:.68rem;color:#8a7a50;letter-spacing:.12em;margin-top:10px;text-transform:uppercase;min-height:12px}
@media(max-width:768px){
.rose-window{width:190px;height:190px}
.intro-title{font-size:1.05rem;letter-spacing:.2em}
.intro-sub{font-size:.56rem;letter-spacing:.18em}
.intro-latin{font-size:.85rem}
.intro-progress-wrap{width:240px}
}
body{background:#0a0a12;color:#e0d8c8;font-family:'Segoe UI',system-ui,sans-serif;overflow:hidden}
#canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0}
#ui{position:fixed;top:0;left:0;z-index:10;padding:18px 24px;pointer-events:none}
#ui h1{font-size:1.6rem;letter-spacing:0.05em;color:#f0e6c8;text-shadow:0 0 20px rgba(255,200,80,0.3)}
#ui .sub{font-size:0.75rem;opacity:0.5;margin-top:2px}
#legend{margin-top:12px;display:flex;gap:16px;align-items:center;font-size:0.8rem}
.ot-dot,.nt-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:4px}
.ot-dot{background:#d4a035;box-shadow:0 0 6px #d4a035}
.nt-dot{background:#4488ee;box-shadow:0 0 6px #4488ee}
#controls{margin-top:10px;display:flex;gap:14px;align-items:center;font-size:0.78rem;pointer-events:all}
#controls label{display:flex;align-items:center;gap:4px;cursor:pointer}
#controls select{background:#1a1a2e;color:#ccc;border:1px solid #333;border-radius:3px;padding:2px 4px;font-size:0.75rem}
#tooltip{position:fixed;bottom:24px;left:24px;background:rgba(10,10,18,0.92);border:1px solid #333;border-radius:6px;padding:10px 14px;font-size:0.82rem;max-width:420px;display:none;pointer-events:none;backdrop-filter:blur(8px)}
#tooltip .ref{color:#f0c850;font-weight:600;font-size:0.9rem}
#tooltip .kind{color:#888;font-size:0.7rem;text-transform:uppercase;letter-spacing:0.08em}
#tooltip .kind b{color:#f0c850}
#tooltip .meta{color:#aaa;font-size:0.75rem;margin-top:2px}
#tooltip .text{margin-top:4px;line-height:1.4;color:#ccc}
#stats{position:fixed;bottom:24px;right:24px;font-size:0.7rem;opacity:0.3;pointer-events:none}
#book-legend{margin-top:10px;display:flex;flex-wrap:wrap;gap:2px 6px;max-width:340px;font-size:0.65rem}
.era-group{display:flex;align-items:center;gap:2px;margin-right:8px}
.era-title{color:#888;font-size:0.6rem;text-transform:uppercase;letter-spacing:0.06em;margin-right:3px}
.book-dot{display:inline-block;width:8px;height:8px;border-radius:50%;cursor:default}
#book-panel{position:fixed;top:0;right:0;width:380px;height:100%;z-index:20;background:rgba(10,10,18,0.96);border-left:1px solid #2a2a3a;display:flex;flex-direction:column;transition:transform 0.3s ease;backdrop-filter:blur(12px)}
#book-panel.hidden{transform:translateX(100%);pointer-events:none}
#book-panel-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid #2a2a3a;flex-shrink:0}
#book-panel-title{font-size:1.05rem;font-weight:600;color:#f0e6c8;letter-spacing:0.03em}
#book-panel-close{background:none;border:none;color:#888;font-size:1.2rem;cursor:pointer;padding:4px 8px;border-radius:4px}
#book-panel-close:hover{color:#fff;background:rgba(255,255,255,0.08)}
#book-panel-body{flex:1;overflow-y:auto;padding:12px 18px;font-size:0.85rem;line-height:1.65}
#book-panel-body .verse-row{padding:6px 8px;border-radius:4px;cursor:pointer;transition:background 0.15s}
#book-panel-body .verse-row:hover{background:rgba(255,255,255,0.05)}
#book-panel-body .verse-row.highlighted{background:rgba(240,200,80,0.15);border-left:3px solid #f0c850}
#book-panel-body .verse-row.connected{background:rgba(100,140,255,0.08);border-left:3px solid rgba(100,140,255,0.4)}
#book-panel-body .verse-num{color:#f0c850;font-weight:700;font-size:0.7rem;margin-right:6px;vertical-align:super}
#book-panel-body .verse-text{color:#d0c8b8}
#book-panel-body .ch-divider{margin:16px 0 8px;padding-bottom:4px;border-bottom:1px solid #2a2a3a;color:#888;font-size:0.75rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em}
#tandemBtn{background:rgba(240,200,80,0.12);color:#f0c850;border:1px solid rgba(240,200,80,0.3);border-radius:3px;padding:3px 10px;font-size:0.72rem;cursor:pointer;letter-spacing:0.04em;font-family:inherit;transition:background 0.2s}
#tandemBtn:hover{background:rgba(240,200,80,0.25)}
#patternsBtn{background:rgba(180,120,255,0.08);color:#c89eff;border:1px solid rgba(180,120,255,0.3);border-radius:3px;padding:3px 10px;font-size:0.72rem;cursor:pointer;letter-spacing:0.04em;font-family:inherit;transition:background 0.2s}
#patternsBtn:hover{background:rgba(180,120,255,0.22)}
#patterns-panel{position:fixed;bottom:52px;right:24px;width:340px;max-height:min(420px,calc(100vh - 80px));z-index:25;background:rgba(10,10,18,0.97);border:1px solid rgba(180,120,255,0.25);border-radius:6px;padding:14px 16px;overflow-y:auto;backdrop-filter:blur(10px)}
body.tandem-on #patterns-panel{right:0;width:60%;border-radius:0;border-top:1px solid rgba(180,120,255,0.25);border-bottom:none;border-left:none;border-right:none}
.pat-ref{color:#f0c850;font-weight:600;font-size:0.88rem;margin-bottom:2px}
.pat-type{color:#c89eff;font-size:0.68rem;text-transform:uppercase;letter-spacing:0.1em;margin-bottom:8px}
.pat-themes{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
.pat-tag{background:rgba(180,120,255,0.1);border:1px solid rgba(180,120,255,0.3);color:#c89eff;font-size:0.6rem;padding:2px 6px;border-radius:3px;letter-spacing:0.05em}
.pat-stats{display:flex;gap:12px;font-size:0.7rem;color:#888;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid rgba(180,120,255,0.15)}
.pat-insight{font-size:0.75rem;color:#b0a8c8;line-height:1.5;margin-bottom:5px;padding-left:8px;border-left:2px solid rgba(180,120,255,0.35)}
.patterns-inline-wrap{margin-top:14px;padding-top:12px;border-top:1px solid rgba(180,120,255,0.2)}
.pat-header{color:#c89eff;font-size:0.75rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:8px}
#discussBtn{background:rgba(100,200,140,.07);color:#7dd6a0;border:1px solid rgba(100,200,140,.28);border-radius:3px;padding:3px 10px;font-size:.72rem;cursor:pointer;letter-spacing:.04em;font-family:inherit;transition:background .2s}
#discussBtn:hover{background:rgba(100,200,140,.2)}
#search-row{display:flex;gap:6px;align-items:center;margin-top:5px;pointer-events:all}
#search-input{background:#12121e;color:#ccc;border:1px solid #2a2a3a;border-radius:3px;padding:3px 8px;font-size:.75rem;width:170px;font-family:inherit;outline:none;transition:border-color .2s}
#search-input:focus{border-color:rgba(240,200,80,.5)}
#search-btn{background:rgba(240,200,80,.08);color:#f0c850;border:1px solid rgba(240,200,80,.25);border-radius:3px;padding:3px 8px;font-size:.75rem;cursor:pointer;font-family:inherit}
#search-result{font-size:.68rem;color:#888;white-space:nowrap}
#discuss-panel{position:fixed;bottom:52px;right:24px;width:370px;max-height:min(480px,calc(100vh - 80px));z-index:26;background:rgba(8,10,20,.98);border:1px solid rgba(100,200,140,.2);border-radius:6px;flex-direction:column;backdrop-filter:blur(10px)}
#discuss-header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:8px 13px;border-bottom:1px solid rgba(100,200,140,.18);font-size:.75rem;font-weight:600;color:#7dd6a0;letter-spacing:.06em}
#discuss-close{background:none;border:none;color:#555;font-size:.9rem;cursor:pointer;padding:0 2px}
#discuss-close:hover{color:#aaa}
#discuss-log{flex:1;overflow-y:auto;padding:10px 13px;font-size:.78rem;line-height:1.6;max-height:310px}
.msg-user{color:#f0c850;margin-bottom:6px;padding:5px 9px;background:rgba(240,200,80,.05);border-radius:3px;border-left:2px solid rgba(240,200,80,.5)}
.msg-ai{color:#b0d8b8;margin-bottom:10px;padding:5px 9px;background:rgba(100,200,140,.04);border-radius:3px;border-left:2px solid rgba(100,200,140,.35);line-height:1.65}
#discuss-input-row{display:flex;gap:6px;padding:8px 10px;border-top:1px solid rgba(100,200,140,.12);flex-shrink:0}
#discuss-input{flex:1;background:#0d0f1a;color:#ccc;border:1px solid #2a2a3a;border-radius:3px;padding:5px 8px;font-size:.75rem;font-family:inherit;outline:none;resize:none;height:40px}
#discuss-input:focus{border-color:rgba(100,200,140,.4)}
#discuss-send{background:rgba(100,200,140,.1);color:#7dd6a0;border:1px solid rgba(100,200,140,.3);border-radius:3px;padding:5px 10px;font-size:.7rem;cursor:pointer;font-family:inherit}
#ai-setup-btn{background:rgba(240,200,80,.06);color:#f0c850;border:1px solid rgba(240,200,80,.25);border-radius:3px;padding:0 6px;font-size:.75rem;cursor:pointer;font-family:inherit;margin-left:4px;line-height:1.4;transition:background .2s}
#ai-setup-btn:hover{background:rgba(240,200,80,.2)}
#ai-setup-panel{position:fixed;bottom:52px;right:24px;width:380px;max-height:min(560px,calc(100vh - 80px));z-index:28;background:rgba(8,10,20,.98);border:1px solid rgba(240,200,80,.28);border-radius:6px;display:flex;flex-direction:column;backdrop-filter:blur(10px);overflow:hidden}
#ai-setup-header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:8px 13px;border-bottom:1px solid rgba(240,200,80,.2);font-size:.75rem;font-weight:600;color:#f0c850;letter-spacing:.06em}
#ai-setup-close{background:none;border:none;color:#555;font-size:.9rem;cursor:pointer;padding:0 2px}
#ai-setup-close:hover{color:#aaa}
#ai-setup-body{flex:1;overflow-y:auto;padding:12px 14px;font-size:.75rem}
.ai-status-card{background:rgba(20,24,40,.6);border:1px solid rgba(240,200,80,.15);border-radius:5px;padding:9px 11px;margin-bottom:12px}
.ai-status-row{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.ai-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0}
.ai-dot-on{background:#7dd6a0;box-shadow:0 0 6px #7dd6a0}
.ai-dot-off{background:#666}
.ai-dot-warn{background:#e0a040;box-shadow:0 0 6px #e0a040}
.ai-dot-err{background:#c85858;box-shadow:0 0 6px #c85858}
#ai-status-text{color:#ccc;font-size:.78rem;flex:1}
#ai-status-url{font-family:'Consolas','Courier New',monospace;font-size:.68rem;color:#888;opacity:.8}
.ai-hint{font-size:.7rem;color:#8a8a96;line-height:1.5}
.ai-field{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.ai-label{width:80px;flex-shrink:0;font-size:.7rem;color:#888;text-transform:uppercase;letter-spacing:.05em}
.ai-field input{flex:1;background:#0d0f1a;color:#ccc;border:1px solid #2a2a3a;border-radius:3px;padding:5px 8px;font-size:.75rem;font-family:inherit;outline:none;transition:border-color .2s}
.ai-field input:focus{border-color:rgba(240,200,80,.5)}
.ai-actions{display:flex;gap:6px;margin:10px 0 6px}
.ai-actions button{background:rgba(240,200,80,.08);color:#f0c850;border:1px solid rgba(240,200,80,.25);border-radius:3px;padding:5px 12px;font-size:.7rem;cursor:pointer;font-family:inherit;letter-spacing:.04em;transition:background .2s}
.ai-actions button:hover{background:rgba(240,200,80,.25)}
#ai-save-btn{background:rgba(100,200,140,.1);color:#7dd6a0;border-color:rgba(100,200,140,.3)}
#ai-save-btn:hover{background:rgba(100,200,140,.25)}
#ai-reset-btn{background:rgba(120,120,140,.08);color:#999;border-color:rgba(120,120,140,.25);margin-left:auto}
.ai-msg{min-height:14px;font-size:.7rem;padding:4px 2px;color:#888}
.ai-msg.ok{color:#7dd6a0}
.ai-msg.err{color:#c88080}
.ai-msg.warn{color:#e0a040}
.ai-divider{border-top:1px solid rgba(240,200,80,.12);margin:12px -2px}
.ai-subsection-title{color:#8ab4f8;font-size:.68rem;letter-spacing:.12em;font-weight:600;margin-bottom:8px;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.ai-browser-card{background:rgba(20,24,40,.5);border:1px solid rgba(100,180,255,.18);border-radius:5px;padding:10px 11px;margin-bottom:10px}
.ai-toggle{display:flex;align-items:center;gap:8px;font-size:.74rem;color:#ccc;cursor:pointer;margin-bottom:10px}
.ai-toggle input{accent-color:#8ab4f8;cursor:pointer}
.ai-field select{flex:1;background:#0d0f1a;color:#ccc;border:1px solid #2a2a3a;border-radius:3px;padding:5px 8px;font-size:.72rem;font-family:inherit;outline:none;cursor:pointer}
.ai-field select:focus{border-color:rgba(138,180,248,.5)}
.ai-progress-bar{width:100%;height:6px;background:rgba(30,34,50,.8);border-radius:3px;overflow:hidden;margin:6px 0 4px}
#webllm-progress-fill{height:100%;width:0;background:linear-gradient(90deg,#8ab4f8,#c89eff);transition:width .25s}
#webllm-progress-text{font-size:.66rem;color:#8a8a96;margin-bottom:4px}
.ai-support-ok{color:#7dd6a0;font-weight:400;font-size:.58rem;letter-spacing:normal;text-transform:none}
.ai-support-no{color:#c88080;font-weight:400;font-size:.58rem;letter-spacing:normal;text-transform:none}
#webllm-load-btn{background:rgba(138,180,248,.1);color:#8ab4f8;border-color:rgba(138,180,248,.3)}
#webllm-load-btn:hover{background:rgba(138,180,248,.25)}
#webllm-load-btn:disabled{opacity:.5;cursor:default}
.ai-guide{margin-top:10px;padding:10px 11px;background:rgba(20,24,40,.4);border:1px solid rgba(240,200,80,.12);border-radius:5px}
.ai-guide-title{font-size:.66rem;color:#f0c850;font-weight:600;letter-spacing:.1em;margin-bottom:6px}
.ai-guide-steps{padding-left:18px;font-size:.72rem;color:#aaa;line-height:1.7}
.ai-guide-steps li{margin-bottom:3px}
.ai-guide-steps a{color:#f0c850;text-decoration:none}
.ai-guide-steps a:hover{text-decoration:underline}
.ai-guide-steps code{background:rgba(240,200,80,.1);color:#f0c850;padding:1px 5px;border-radius:2px;font-size:.7rem}
.ai-guide-note{font-size:.66rem;color:#7a7a86;margin-top:8px;padding-top:8px;border-top:1px solid rgba(240,200,80,.1);line-height:1.5}
.ai-troubleshoot{margin-top:10px;font-size:.7rem;color:#b8a270}
.ai-troubleshoot summary{cursor:pointer;color:#f0c850;letter-spacing:.06em;padding:4px 0;list-style:none;outline:none}
.ai-troubleshoot summary:hover{color:#ffe28a}
.ai-troubleshoot summary::before{content:"\25B8 ";font-size:.75rem}
.ai-troubleshoot[open] summary::before{content:"\25BE "}
.ai-troubleshoot ul{list-style:none;padding:6px 0 0 4px;margin:0;line-height:1.65}
.ai-troubleshoot li{padding:3px 0;border-bottom:1px dashed rgba(240,200,80,.08)}
.ai-troubleshoot li:last-child{border-bottom:none;color:#7a7a86;font-style:italic}
.ai-troubleshoot code{background:rgba(240,200,80,.1);color:#ffd97a;padding:1px 5px;border-radius:2px;font-size:.68rem}
#prayBtn{background:linear-gradient(180deg,rgba(240,200,80,.2),rgba(180,100,40,.1));color:#ffe28a;border:1px solid rgba(240,200,80,.45);border-radius:3px;padding:3px 8px;cursor:pointer;font-family:inherit;letter-spacing:.05em;transition:background .2s,box-shadow .2s}
#prayBtn:hover{background:linear-gradient(180deg,rgba(240,200,80,.32),rgba(180,100,40,.18));box-shadow:0 0 14px rgba(240,200,80,.35)}
#pray-panel{position:fixed;bottom:52px;right:24px;width:410px;max-height:min(620px,calc(100vh - 80px));z-index:29;background:radial-gradient(ellipse at top,rgba(30,18,6,.98),rgba(8,8,14,.99));border:1px solid rgba(240,200,80,.32);border-radius:6px;display:flex;flex-direction:column;backdrop-filter:blur(12px);overflow:hidden;box-shadow:0 0 40px rgba(240,200,80,.1),inset 0 0 60px rgba(240,200,80,.04)}
#pray-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid rgba(240,200,80,.18);background:rgba(10,6,2,.7)}
#pray-title{font-size:.78rem;color:#ffe28a;font-weight:600;letter-spacing:.12em}
.pray-header-actions{display:flex;gap:6px;align-items:center}
#pray-lang-btn{background:rgba(240,200,80,.1);color:#f0c850;border:1px solid rgba(240,200,80,.32);border-radius:3px;padding:2px 8px;font-size:.58rem;letter-spacing:.08em;cursor:pointer;font-family:inherit;transition:background .15s}
#pray-lang-btn:hover{background:rgba(240,200,80,.22)}
#pray-close{background:rgba(240,200,80,.1);color:#f0c850;border:1px solid rgba(240,200,80,.3);border-radius:3px;padding:2px 9px;font-size:.68rem;cursor:pointer;font-family:inherit;transition:background .15s}
#pray-close:hover{background:rgba(240,200,80,.22)}
#pray-candle-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid rgba(240,200,80,.1)}
.candle{width:36px;height:82px;flex-shrink:0;filter:drop-shadow(0 0 14px rgba(255,210,120,.5))}
.candle-flame{transform-origin:50% 90%;animation:flame-flicker 2.8s ease-in-out infinite}
.candle-halo{transform-origin:50% 40%;animation:halo-pulse 3.4s ease-in-out infinite}
@keyframes flame-flicker{0%,100%{transform:scale(1,1) skewX(0deg);opacity:1}25%{transform:scale(.95,1.06) skewX(-2deg);opacity:.92}50%{transform:scale(1.05,.94) skewX(1.5deg);opacity:.98}75%{transform:scale(.97,1.08) skewX(2deg);opacity:.9}}
@keyframes halo-pulse{0%,100%{opacity:.6;transform:scale(1)}50%{opacity:.85;transform:scale(1.15)}}
#pray-subtitle{font-size:.68rem;color:#b8a270;letter-spacing:.06em;font-style:italic}
#pray-nav{display:flex;gap:5px;padding:8px 12px;overflow-x:auto;overflow-y:hidden;border-bottom:1px solid rgba(240,200,80,.12);scrollbar-width:thin}
#pray-nav::-webkit-scrollbar{height:4px}
#pray-nav::-webkit-scrollbar-thumb{background:rgba(240,200,80,.3);border-radius:2px}
.pray-pill{flex-shrink:0;background:rgba(240,200,80,.06);color:#ddcfa8;border:1px solid rgba(240,200,80,.2);border-radius:14px;padding:4px 10px;font-size:.58rem;letter-spacing:.05em;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .18s}
.pray-pill:hover{background:rgba(240,200,80,.16);color:#ffe28a}
.pray-pill.active{background:linear-gradient(180deg,rgba(240,200,80,.3),rgba(180,100,40,.2));color:#fff4c2;border-color:rgba(240,200,80,.6);box-shadow:0 0 10px rgba(240,200,80,.3)}
#pray-body{position:relative;flex:1;overflow-y:auto;padding:18px 22px 22px;min-height:0}
.pray-aureole{position:absolute;top:30%;left:50%;transform:translate(-50%,-50%);width:320px;height:320px;background:radial-gradient(circle,rgba(240,200,80,.08) 0%,rgba(240,200,80,0) 70%);pointer-events:none;z-index:0;animation:aureole-breathe 6s ease-in-out infinite}
@keyframes aureole-breathe{0%,100%{opacity:.7}50%{opacity:1}}
.pray-rubric{position:relative;z-index:1;font-size:.62rem;color:#d4a035;letter-spacing:.18em;text-align:center;margin-bottom:14px;font-style:italic;opacity:.85}
.pray-text{position:relative;z-index:1;font-size:.86rem;line-height:1.85;color:#e8ddc2;margin-bottom:14px;text-align:center;font-family:Georgia,"Times New Roman",serif}
.pray-text.latin{color:#c9b88a;font-style:italic;letter-spacing:.02em}
.pray-text.english{color:#e8ddc2}
.pray-text.hidden-lang{display:none}
.pray-word{display:inline-block;opacity:0;transform:translateY(4px);animation:word-reveal .5s ease forwards;margin-right:.25em}
@keyframes word-reveal{to{opacity:1;transform:translateY(0)}}
.sacred,.sacred .pray-word{color:#ffd97a;font-weight:700;text-shadow:0 0 8px rgba(255,217,122,.45),0 0 2px rgba(255,244,194,.55)}
@keyframes sacred-shimmer{0%,100%{color:#d4a035;text-shadow:0 0 6px rgba(212,160,53,.45),0 0 2px rgba(255,244,194,.5)}50%{color:#fff4c2;text-shadow:0 0 14px rgba(255,244,194,.85),0 0 4px rgba(255,217,122,.7)}}
.pray-foot{position:relative;z-index:1;text-align:center;margin-top:16px;font-size:.7rem;color:#8a7a5a;letter-spacing:.06em;font-style:italic}
.amen{display:inline-block;color:#ffd97a;font-weight:700;letter-spacing:.15em;font-size:.8rem;text-shadow:0 0 12px rgba(255,217,122,.5)}
.drawn-cross{display:block;margin:0 auto 12px;width:54px;height:68px}
.drawn-cross path{fill:none;stroke:#f0c850;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:240;stroke-dashoffset:240;filter:drop-shadow(0 0 6px rgba(240,200,80,.4))}
.drawn-cross.draw path{animation:cross-draw 2.6s ease-out forwards}
@keyframes cross-draw{to{stroke-dashoffset:0}}
.rosary-today{display:inline-block;margin-top:6px;padding:6px 12px;background:rgba(240,200,80,.08);border:1px solid rgba(240,200,80,.25);border-radius:14px;color:#ffe28a;font-size:.7rem;letter-spacing:.05em}
.mystery-list{text-align:left;max-width:320px;margin:10px auto 0;font-size:.76rem;line-height:1.7;color:#c9b88a;list-style:none;padding:0}
.mystery-list li{padding:3px 0 3px 18px;position:relative}
.mystery-list li:before{content:"\2727";position:absolute;left:0;color:#d4a035}
body.tandem-on #canvas{position:fixed;top:0;right:0;width:60%;height:100%;left:auto}
body.tandem-on #ui{left:40%;max-width:60%}
#tandem-wrapper{position:fixed;top:0;left:0;width:40%;height:100%;z-index:15;display:flex;flex-direction:column;background:rgba(10,10,18,0.97);border-right:1px solid #2a2a3a;backdrop-filter:blur(8px)}
#tandem-header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:7px 14px;border-bottom:1px solid #2a2a3a;background:rgba(10,10,18,0.99);gap:8px;pointer-events:all}
#tandem-title{font-size:.75rem;color:#f0e6c8;font-weight:600;letter-spacing:.03em;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#tandem-close-btn{flex-shrink:0;background:rgba(240,200,80,0.12);color:#f0c850;border:1px solid rgba(240,200,80,0.35);border-radius:3px;padding:2px 10px;cursor:pointer;font-size:.7rem;letter-spacing:.04em;font-family:inherit;transition:background .2s;pointer-events:all}
#tandem-close-btn:hover{background:rgba(240,200,80,0.3)}
#tandem-book{flex:1;overflow-y:auto;min-height:0;padding:10px 14px;font-size:0.84rem;line-height:1.65}
#tandem-book .verse-row{padding:6px 8px;border-radius:4px;cursor:pointer;transition:background 0.15s}
#tandem-book .verse-row:hover{background:rgba(255,255,255,0.05)}
#tandem-book .verse-row.highlighted{background:rgba(240,200,80,0.15);border-left:3px solid #f0c850}
#tandem-book .verse-row.connected{background:rgba(100,140,255,0.08);border-left:3px solid rgba(100,140,255,0.4)}
#tandem-book .verse-num{color:#f0c850;font-weight:700;font-size:0.7rem;margin-right:6px;vertical-align:super}
#tandem-book .verse-text{color:#d0c8b8}
.tandem-chapter-title{font-size:1.05rem;font-weight:600;color:#f0e6c8;letter-spacing:0.03em;padding:8px 0 12px;border-bottom:1px solid #2a2a3a;margin-bottom:8px}
#tandem-connections{flex-shrink:0;max-height:42%;overflow-y:auto;padding:10px 14px;border-top:1px solid #2a2a3a;background:rgba(8,8,16,0.95)}
.tandem-conn-title{font-size:0.85rem;font-weight:600;color:#f0e6c8;letter-spacing:0.04em;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #2a2a3a}
.conn-passage{padding:8px 10px;border-radius:4px;cursor:pointer;margin-bottom:6px;border:1px solid rgba(100,140,255,0.12);transition:background 0.15s,border-color 0.15s}
.conn-passage:hover{background:rgba(100,140,255,0.08);border-color:rgba(100,140,255,0.3)}
.conn-ref{font-weight:600;font-size:0.82rem;color:#8ab4f8;margin-bottom:3px}
.conn-era{font-size:0.65rem;color:#888;text-transform:uppercase;letter-spacing:0.06em;margin-left:6px}
.conn-text{font-size:0.78rem;color:#b0a898;line-height:1.5}
@media(max-width:768px){
#ui{padding:10px 12px}
#ui h1{font-size:1rem}
#ui .sub{font-size:0.6rem}
#legend{gap:8px;font-size:0.65rem;margin-top:6px}
#controls{flex-wrap:wrap;gap:6px 10px;font-size:0.65rem;margin-top:6px}
#controls select{font-size:0.65rem;padding:2px 3px}
#tandemBtn,#patternsBtn,#discussBtn,#prayBtn{font-size:0.6rem;padding:3px 7px}
#search-row{margin-top:4px;gap:4px}
#search-input{width:120px;font-size:0.65rem;padding:3px 6px}
#search-btn{font-size:0.65rem;padding:3px 6px}
#search-result{font-size:0.58rem}
#book-legend{max-width:100%;font-size:0.55rem;margin-top:6px}
#tooltip{left:10px;right:10px;bottom:12px;max-width:none;font-size:0.75rem;padding:8px 10px}
#stats{bottom:12px;right:12px;font-size:0.6rem}
#book-panel{width:100%;border-left:none;border-top:1px solid #2a2a3a}
#book-panel-body{font-size:0.8rem;padding:10px 14px}
#discuss-panel{width:calc(100% - 20px);right:10px;left:10px;bottom:10px;max-height:calc(100dvh - 70px)}
#discuss-log{max-height:40vh;font-size:0.72rem}
#patterns-panel{width:calc(100% - 20px);right:10px;left:10px;bottom:10px;max-height:calc(100dvh - 70px)}
#ai-setup-panel{width:calc(100% - 20px);right:10px;left:10px;bottom:10px;max-height:calc(100dvh - 70px)}
#pray-panel{width:calc(100% - 20px);right:10px;left:10px;bottom:10px;max-height:calc(100dvh - 70px)}
body.tandem-on #canvas{width:100%;height:50%;left:0;top:0}
body.tandem-on #ui{left:0;max-width:100%;top:50%}
#tandem-wrapper{width:100%;height:50%;top:50%}
}
