*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}[data-theme=light]{--bg-primary: #f8f7f4;--bg-surface: #ffffff;--bg-surface-hover: #fafaf8;--bg-inset: #f1f0ec;--text-primary: #1c1917;--text-secondary: #57534e;--text-tertiary: #a8a29e;--border-primary: #e7e5e4;--border-secondary: #d6d3d1;--color-life: #64748b;--color-life-light: #f1f5f9;--color-journey: #558b6e;--color-journey-light: #ecfdf5;--color-letter: #b45309;--color-letter-light: #fffbeb;--color-accent: #3b5998;--color-miracle: #7c3aed;--color-miracle-light: rgba(124, 58, 237, .08);--color-passion: #dc2626;--color-passion-light: rgba(220, 38, 38, .08);--color-matthew: #3b5998;--color-matthew-light: rgba(59, 89, 152, .1);--color-mark: #c0392b;--color-mark-light: rgba(192, 57, 43, .1);--color-luke: #27ae60;--color-luke-light: rgba(39, 174, 96, .1);--color-john: #8e44ad;--color-john-light: rgba(142, 68, 173, .1);--shadow-card: 0 1px 3px rgba(0,0,0,.04);--shadow-card-hover: 0 2px 8px rgba(0,0,0,.07)}[data-theme=dark]{--bg-primary: #18181b;--bg-surface: #1e1e22;--bg-surface-hover: #252529;--bg-inset: #141416;--text-primary: #e4e4e7;--text-secondary: #a1a1aa;--text-tertiary: #63636e;--border-primary: #2c2c33;--border-secondary: #3a3a44;--color-life: #8b9ab5;--color-life-light: rgba(139,154,181,.1);--color-journey: #6fad8a;--color-journey-light: rgba(111,173,138,.1);--color-letter: #d4913a;--color-letter-light: rgba(212,145,58,.1);--color-accent: #7b9bd4;--color-miracle: #a78bfa;--color-miracle-light: rgba(167, 139, 250, .1);--color-passion: #f87171;--color-passion-light: rgba(248, 113, 113, .1);--color-matthew: #7b9bd4;--color-matthew-light: rgba(123, 155, 212, .1);--color-mark: #e57373;--color-mark-light: rgba(229, 115, 115, .1);--color-luke: #6fad8a;--color-luke-light: rgba(111, 173, 138, .1);--color-john: #b39ddb;--color-john-light: rgba(179, 157, 219, .1);--shadow-card: 0 1px 3px rgba(0,0,0,.2);--shadow-card-hover: 0 2px 8px rgba(0,0,0,.35)}[data-theme=sepia]{--bg-primary: #f5eed6;--bg-surface: #faf4e4;--bg-surface-hover: #f7f0da;--bg-inset: #ede5c8;--text-primary: #3e2f1c;--text-secondary: #6b5a45;--text-tertiary: #9c8b74;--border-primary: #ddd3b8;--border-secondary: #cec3a6;--color-life: #6b7e6b;--color-life-light: rgba(107,126,107,.1);--color-journey: #5a7a5a;--color-journey-light: rgba(90,122,90,.1);--color-letter: #8b5e1a;--color-letter-light: rgba(139,94,26,.1);--color-accent: #6b4e2a;--color-miracle: #7e5baa;--color-miracle-light: rgba(126, 91, 170, .1);--color-passion: #a63d3d;--color-passion-light: rgba(166, 61, 61, .1);--color-matthew: #5a6e8a;--color-matthew-light: rgba(90, 110, 138, .1);--color-mark: #9e5a4a;--color-mark-light: rgba(158, 90, 74, .1);--color-luke: #5a7a5a;--color-luke-light: rgba(90, 122, 90, .1);--color-john: #7a5e8a;--color-john-light: rgba(122, 94, 138, .1);--shadow-card: 0 1px 3px rgba(62,47,28,.06);--shadow-card-hover: 0 2px 8px rgba(62,47,28,.1)}:root{--font-display: "Cinzel", Georgia, serif;--font-body: "Inter", -apple-system, system-ui, sans-serif;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease;cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%2357534e' stroke-width='1' opacity='0.4'/%3E%3Ccircle cx='8' cy='8' r='3.5' fill='%2357534e'/%3E%3C/svg%3E") 8 8,default}[data-theme=dark] body{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%23a8a29e' stroke-width='1' opacity='0.4'/%3E%3Ccircle cx='8' cy='8' r='3.5' fill='%23a8a29e'/%3E%3C/svg%3E") 8 8,default}[data-theme=sepia] body{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%237a6548' stroke-width='1' opacity='0.4'/%3E%3Ccircle cx='8' cy='8' r='3.5' fill='%237a6548'/%3E%3C/svg%3E") 8 8,default}button,a,.timeline-item,.filter-chip,.view-btn,.header-chevron,.theme-btn,.search-clear,.gospel-row,.breadcrumb-item{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18'%3E%3Ccircle cx='9' cy='9' r='8' fill='none' stroke='%23558b6e' stroke-width='1.2' opacity='0.5'/%3E%3Ccircle cx='9' cy='9' r='4' fill='%23558b6e'/%3E%3C/svg%3E") 9 9,pointer}#root{min-height:100vh}::selection{background:var(--color-accent);color:#fff}.header,.view-nav,.filter-bar,.timeline-card,.event-detail,.journey-card,.letters-list,.letter-row,.view-btn,.filter-chip,.header-tag,.search-input,.detail-meta,.detail-tag,.detail-letter-box,.journey-route-text,.tag,.letter-theme,.letter-journey-tag,.person-tag,.card-category,.detail-badge,.gospel-card,.gospel-detail,.gospel-section-header,.gospel-header-col,.gospel-account{transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease}.header{background:var(--bg-surface);border-bottom:1px solid var(--border-primary);display:flex;flex-direction:column}.breadcrumb-nav{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;border-bottom:1px solid var(--border-primary)}.breadcrumb-nav::-webkit-scrollbar{display:none}.breadcrumb-track{display:flex;align-items:center;gap:var(--sp-1);padding:var(--sp-3) var(--sp-6);min-width:max-content}.breadcrumb-group{display:flex;align-items:center;gap:var(--sp-1)}.breadcrumb-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-tertiary);padding:var(--sp-1) var(--sp-2);white-space:nowrap;flex-shrink:0}.breadcrumb-divider{width:1px;height:16px;background:var(--border-primary);margin:0 var(--sp-2);flex-shrink:0}.breadcrumb-item{padding:var(--sp-1) var(--sp-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:12px;font-weight:500;white-space:nowrap;transition:all .15s ease}.breadcrumb-item:hover{color:var(--text-primary);background:var(--bg-inset)}.breadcrumb-item.active{color:var(--text-primary);background:var(--bg-inset);font-weight:600;box-shadow:inset 0 0 0 1px var(--border-secondary)}.header-body{display:flex;align-items:center;justify-content:center;gap:var(--sp-8);padding:var(--sp-8) var(--sp-6) var(--sp-8);text-align:center}.header-chevron{background:none;border:1px solid var(--border-primary);color:var(--text-tertiary);width:40px;height:40px;border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}.header-chevron:hover{color:var(--text-primary);border-color:var(--border-secondary);background:var(--bg-inset)}.header-chevron:active{transform:scale(.95)}.header-content{max-width:560px;min-width:0}.header-content.animate{animation:headerFadeIn .35s ease}@keyframes headerFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.header-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.15em;color:var(--text-tertiary);margin-bottom:var(--sp-2)}.header-title{font-family:var(--font-display);font-size:32px;font-weight:700;color:var(--text-primary);margin-bottom:var(--sp-3);line-height:1.2}.header-meta{font-size:14px;color:var(--text-secondary);margin-bottom:var(--sp-5)}.meta-sep{margin:0 var(--sp-2);color:var(--text-tertiary)}.header-tags{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--sp-2)}.header-tag{padding:var(--sp-1) var(--sp-3);background:var(--bg-inset);border-radius:var(--radius-sm);font-size:12px;color:var(--text-secondary);font-weight:500}@media(max-width:640px){.header-body{gap:var(--sp-3);padding:var(--sp-5) var(--sp-3)}.header-title{font-size:24px}.header-chevron{width:34px;height:34px}.breadcrumb-track{padding:var(--sp-2) var(--sp-3)}.breadcrumb-item{font-size:11px;padding:var(--sp-1) var(--sp-2)}}.filter-bar{background:var(--bg-surface);border-bottom:1px solid var(--border-primary);padding:var(--sp-3) var(--sp-6)}.filter-bar-inner{max-width:960px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:var(--sp-2)}.filter-chip{display:inline-flex;align-items:center;gap:var(--sp-2);padding:6px 14px;border:1px solid var(--border-primary);border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.filter-chip:hover{border-color:var(--border-secondary);background:var(--bg-inset)}.filter-chip.active{background:var(--chip-bg);border-color:var(--chip-color);color:var(--chip-color)}.chip-dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.4}.filter-chip.active .chip-dot{opacity:1}.search-group{display:flex;align-items:center;gap:var(--sp-3)}.search-input-wrapper{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:10px;color:var(--text-tertiary);pointer-events:none}.search-input{width:240px;padding:7px 28px 7px 32px;border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-body);font-size:13px;transition:border-color .15s ease}.search-input::placeholder{color:var(--text-tertiary)}.search-input:focus{outline:none;border-color:var(--color-accent)}.search-clear{position:absolute;right:8px;background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:2px;display:flex;align-items:center}.search-clear:hover{color:var(--text-primary)}.result-count{font-size:12px;color:var(--text-tertiary);white-space:nowrap}.timeline-container{flex:1;position:relative;padding:var(--sp-10) var(--sp-6) var(--sp-16);max-width:960px;margin:0 auto}.timeline-line{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--border-primary);transform:translate(-50%)}.timeline-item{position:relative;width:50%;padding-bottom:var(--sp-6);cursor:pointer;opacity:0;transform:translateY(24px)}.timeline-item.visible{animation:cardEnter .5s ease forwards;animation-delay:var(--stagger, 0ms)}.timeline-item.left.visible{animation-name:cardEnterLeft;animation-delay:var(--stagger, 0ms)}@keyframes cardEnter{0%{opacity:0;transform:translate(20px) translateY(12px)}to{opacity:1;transform:translate(0) translateY(0)}}@keyframes cardEnterLeft{0%{opacity:0;transform:translate(-20px) translateY(12px)}to{opacity:1;transform:translate(0) translateY(0)}}.timeline-item.left{padding-right:var(--sp-8);text-align:right}.timeline-item.right{margin-left:50%;padding-left:var(--sp-8);text-align:left}.timeline-dot{position:absolute;top:20px;width:10px;height:10px;border-radius:50%;background:var(--dot-color);z-index:2;transition:transform .2s ease,box-shadow .2s ease}.timeline-item.left .timeline-dot{right:-5px}.timeline-item.right .timeline-dot{left:-5px}.timeline-item:hover .timeline-dot{transform:scale(1.6);box-shadow:0 0 0 4px var(--bg-primary)}.timeline-item.selected .timeline-dot{transform:scale(1.8);box-shadow:0 0 0 4px var(--bg-primary)}.timeline-card{background:var(--bg-surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:var(--sp-4);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.timeline-item:hover .timeline-card{border-color:var(--border-secondary);box-shadow:var(--shadow-card-hover);transform:translateY(-1px)}.timeline-item.selected .timeline-card{border-color:var(--color-accent);box-shadow:var(--shadow-card-hover)}.card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--sp-2);gap:var(--sp-2)}.timeline-item.left .card-top{flex-direction:row-reverse}.card-year{font-size:12px;font-weight:600;color:var(--text-tertiary);letter-spacing:.02em}.card-category{padding:2px 8px;border-radius:var(--radius-sm);font-size:11px;font-weight:600;white-space:nowrap}.card-title{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-1);line-height:1.35}.card-place{font-size:13px;color:var(--text-secondary);margin-bottom:var(--sp-2)}.card-people{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-bottom:var(--sp-2)}.timeline-item.left .card-people{justify-content:flex-end}.person-tag{padding:1px 8px;background:var(--bg-inset);border-radius:var(--radius-sm);font-size:12px;color:var(--text-secondary)}.card-purpose{font-size:13px;color:var(--text-secondary);line-height:1.5}@media(max-width:768px){.timeline-container{padding:var(--sp-6) var(--sp-4)}.timeline-line{left:16px}.timeline-item,.timeline-item.left,.timeline-item.right{width:100%;margin-left:0;padding-left:var(--sp-10);padding-right:0;text-align:left}.timeline-item.left .timeline-dot,.timeline-item.right .timeline-dot{left:12px;right:auto}.timeline-item.left .card-top{flex-direction:row}.timeline-item.left .card-people{justify-content:flex-start}.timeline-item.left.visible{animation-name:cardEnter}}.event-detail{position:sticky;top:100px;width:380px;min-width:380px;max-height:calc(100vh - 120px);overflow-y:auto;background:var(--bg-surface);border-left:1px solid var(--border-primary);padding:var(--sp-6);animation:slideIn .25s ease}.detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--sp-4);gap:var(--sp-2)}.detail-badges{display:flex;gap:var(--sp-2);flex-wrap:wrap}.detail-badge{padding:2px 10px;border-radius:var(--radius-sm);font-size:11px;font-weight:600}.detail-close{background:none;border:1px solid var(--border-primary);color:var(--text-tertiary);width:28px;height:28px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease}.detail-close:hover{color:var(--text-primary);border-color:var(--border-secondary)}.detail-title{font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-4);line-height:1.3}.detail-meta{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3);margin-bottom:var(--sp-5);padding:var(--sp-4);background:var(--bg-inset);border-radius:var(--radius-md)}.meta-pair dt{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:2px}.meta-pair dd{font-size:14px;color:var(--text-primary)}.detail-section{margin-bottom:var(--sp-5)}.detail-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:var(--sp-2)}.detail-tags{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.detail-tag{padding:2px 10px;background:var(--bg-inset);border-radius:var(--radius-sm);font-size:13px;color:var(--text-secondary)}.detail-tag.scripture{background:var(--color-letter-light);color:var(--color-letter);font-weight:500}.detail-tag.theme{background:var(--color-letter-light);color:var(--color-letter);font-size:12px}.detail-text-strong{font-size:14px;color:var(--text-primary);line-height:1.55}.detail-text{font-size:14px;color:var(--text-secondary);line-height:1.6}.detail-letter-box{padding:var(--sp-4);background:var(--color-letter-light);border-radius:var(--radius-md)}.detail-letter-box .detail-label{color:var(--color-letter)}.letter-table{width:100%;border-collapse:collapse;margin-bottom:var(--sp-3)}.letter-table th{text-align:left;font-size:13px;font-weight:600;color:var(--text-primary);padding:var(--sp-1) var(--sp-3) var(--sp-1) 0;white-space:nowrap;vertical-align:top}.letter-table td{font-size:13px;color:var(--text-secondary);padding:var(--sp-1) 0;vertical-align:top}.letter-themes-row{display:flex;flex-wrap:wrap;gap:var(--sp-1)}@media(max-width:768px){.event-detail{position:fixed;inset:auto 0 0;width:100%;min-width:0;max-height:70vh;border-left:none;border-top:1px solid var(--border-primary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:100;animation:slideUp .25s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.gospel-container{flex:1;padding:0 var(--sp-6) var(--sp-16);max-width:1100px;margin:0 auto;width:100%}.gospel-header-row{display:grid;grid-template-columns:220px repeat(4,1fr);gap:var(--sp-2);position:sticky;top:48px;z-index:10;background:var(--bg-primary);padding:var(--sp-3) 0;border-bottom:2px solid var(--border-primary)}.gospel-header-event{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-tertiary);padding:var(--sp-2) var(--sp-3);display:flex;align-items:center}.gospel-header-col{text-align:center;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:var(--sp-2) var(--sp-2);border-radius:var(--radius-md)}.gospel-col--matthew{color:var(--color-matthew);background:var(--color-matthew-light)}.gospel-col--mark{color:var(--color-mark);background:var(--color-mark-light)}.gospel-col--luke{color:var(--color-luke);background:var(--color-luke-light)}.gospel-col--john{color:var(--color-john);background:var(--color-john-light)}.gospel-section-header{padding:var(--sp-5) var(--sp-3) var(--sp-3);margin-top:var(--sp-4)}.gospel-section-header h2{font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--text-primary);letter-spacing:.02em}.gospel-row{display:grid;grid-template-columns:220px 1fr;gap:var(--sp-2);padding:var(--sp-3) 0;border-bottom:1px solid var(--border-primary);cursor:pointer;opacity:0;transform:translateY(16px);transition:background .15s ease;border-radius:var(--radius-md)}.gospel-row.visible{animation:gospelRowEnter .4s ease forwards;animation-delay:var(--stagger, 0ms)}@keyframes gospelRowEnter{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.gospel-row:hover{background:var(--bg-surface-hover)}.gospel-row.selected{background:var(--bg-surface);box-shadow:inset 3px 0 0 var(--color-accent)}.gospel-event-info{padding:var(--sp-2) var(--sp-3);min-width:0}.gospel-event-top{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1)}.gospel-event-year{font-size:11px;font-weight:600;color:var(--text-tertiary);white-space:nowrap}.gospel-event-cat{font-size:10px;font-weight:600;padding:1px 6px;border-radius:var(--radius-sm);white-space:nowrap}.gospel-event-title{font-size:14px;font-weight:600;color:var(--text-primary);line-height:1.3;margin-bottom:2px}.gospel-event-place{font-size:12px;color:var(--text-secondary)}.gospel-columns{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);position:relative;align-items:center}.gospel-connection-line{position:absolute;top:50%;height:2px;background:var(--border-secondary);transform:translateY(-50%);z-index:0;left:var(--line-start);right:var(--line-end);border-radius:1px;opacity:.6}.gospel-row:hover .gospel-connection-line{opacity:1}.gospel-card{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-1);border-radius:var(--radius-md);border:1px solid var(--border-primary);background:var(--bg-surface);position:relative;z-index:1;transition:border-color .2s ease,box-shadow .2s ease}.gospel-row:hover .gospel-card{border-color:var(--border-secondary)}.gospel-card--matthew{border-top:2px solid var(--color-matthew)}.gospel-card--mark{border-top:2px solid var(--color-mark)}.gospel-card--luke{border-top:2px solid var(--color-luke)}.gospel-card--john{border-top:2px solid var(--color-john)}.gospel-card-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.gospel-dot--matthew{background:var(--color-matthew)}.gospel-dot--mark{background:var(--color-mark)}.gospel-dot--luke{background:var(--color-luke)}.gospel-dot--john{background:var(--color-john)}.gospel-card-ref{font-size:11px;font-weight:500;color:var(--text-secondary);white-space:nowrap;text-align:center;overflow:hidden;text-overflow:ellipsis;max-width:100%}.gospel-cell-empty{display:flex;align-items:center;justify-content:center;min-height:48px}.gospel-empty-dash{color:var(--text-tertiary);opacity:.3;font-size:14px}@media(max-width:900px){.gospel-container{padding:0 var(--sp-3) var(--sp-8);overflow-x:auto}.gospel-header-row,.gospel-row{min-width:700px}}@media(max-width:640px){.gospel-header-row{grid-template-columns:160px repeat(4,1fr)}.gospel-row{grid-template-columns:160px 1fr}.gospel-event-title{font-size:13px}.gospel-card-ref{font-size:10px}.gospel-card{padding:var(--sp-1)}.gospel-section-header h2{font-size:15px}}.gospel-detail{position:sticky;top:100px;width:400px;min-width:400px;max-height:calc(100vh - 120px);overflow-y:auto;background:var(--bg-surface);border-left:1px solid var(--border-primary);padding:var(--sp-6);animation:slideIn .25s ease}@keyframes slideIn{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.gospel-count-badge{background:var(--bg-inset);color:var(--text-secondary)}.gospel-accounts{display:flex;flex-direction:column;gap:var(--sp-3)}.gospel-account{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-md);background:var(--bg-inset);border-left:3px solid transparent}.gospel-account--matthew{border-left-color:var(--color-matthew)}.gospel-account--mark{border-left-color:var(--color-mark)}.gospel-account--luke{border-left-color:var(--color-luke)}.gospel-account--john{border-left-color:var(--color-john)}.gospel-account-header{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.gospel-account-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.gospel-account-name{font-size:13px;font-weight:700;color:var(--text-primary)}.gospel-account-ref{font-size:12px;color:var(--text-tertiary);margin-left:auto;white-space:nowrap}.gospel-account-detail{font-size:13px;color:var(--text-secondary);line-height:1.6}@media(max-width:768px){.gospel-detail{position:fixed;inset:auto 0 0;width:100%;min-width:0;max-height:75vh;border-left:none;border-top:1px solid var(--border-primary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:100;animation:slideUp .25s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}.journeys-container{max-width:760px;margin:0 auto;padding:var(--sp-8) var(--sp-6);display:flex;flex-direction:column;gap:var(--sp-6)}.journey-card{background:var(--bg-surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden}.journey-header{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--border-primary);background:var(--bg-inset)}.journey-number{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:2px solid var(--color-journey);color:var(--color-journey);border-radius:50%;font-family:var(--font-display);font-size:18px;font-weight:700;flex-shrink:0}.journey-title{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text-primary);line-height:1.2}.journey-years{font-size:13px;color:var(--text-secondary)}.journey-body{padding:var(--sp-5) var(--sp-6)}.journey-section{margin-bottom:var(--sp-5)}.journey-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:var(--sp-2)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.tag{padding:2px 10px;border-radius:var(--radius-sm);font-size:13px;font-weight:500}.tag-companion{background:var(--color-life-light);color:var(--color-life)}.tag-letter{background:var(--color-letter-light);color:var(--color-letter)}.tag-church{background:var(--color-journey-light);color:var(--color-journey)}.journey-route-text{font-size:13px;color:var(--text-secondary);line-height:1.7;padding:var(--sp-3) var(--sp-4);background:var(--bg-inset);border-radius:var(--radius-md)}.journey-events-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp-1)}.journey-events-list li{position:relative;padding-left:var(--sp-4);font-size:14px;color:var(--text-secondary);line-height:1.5}.journey-events-list li:before{content:"";position:absolute;left:2px;top:8px;width:5px;height:5px;border-radius:50%;background:var(--color-journey)}.journey-scripture{padding-top:var(--sp-4);border-top:1px solid var(--border-primary);font-size:13px;color:var(--color-letter);font-weight:500}.letters-container{max-width:840px;margin:0 auto;padding:var(--sp-8) var(--sp-6)}.letters-header-info{text-align:center;margin-bottom:var(--sp-8)}.letters-main-title{font-family:var(--font-display);font-size:24px;font-weight:600;color:var(--text-primary);margin-bottom:var(--sp-1)}.letters-subtitle{font-size:14px;color:var(--text-secondary)}.letters-list{display:flex;flex-direction:column;border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-surface)}.letter-row{display:flex;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border-primary);transition:background .15s ease}.letter-row:last-child{border-bottom:none}.letter-row:hover{background:var(--bg-inset)}.letter-row-left{flex:0 0 220px}.letter-name{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text-primary);line-height:1.25;margin-bottom:2px}.letter-meta{font-size:12px;color:var(--text-tertiary)}.letter-sep{margin:0 var(--sp-1)}.letter-row-center{flex:1}.letter-from{font-size:13px;color:var(--text-secondary);margin-bottom:var(--sp-2)}.letter-journey-tag{display:inline-block;margin-left:var(--sp-2);padding:1px 8px;background:var(--color-journey-light);color:var(--color-journey);border-radius:var(--radius-sm);font-size:11px;font-weight:600}.letter-themes{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.letter-theme{padding:1px 8px;background:var(--color-letter-light);border-radius:var(--radius-sm);font-size:12px;color:var(--color-letter);font-weight:500}.letter-row-right{flex-shrink:0;text-align:right}.letter-year{font-size:13px;font-weight:600;color:var(--text-secondary)}@media(max-width:640px){.letter-row{flex-direction:column;gap:var(--sp-2)}.letter-row-left{flex:none;display:flex;justify-content:space-between;align-items:baseline;width:100%}.letter-row-right{display:none}.letter-row-left .letter-name:after{content:attr(data-year)}}.theme-switcher{display:flex;gap:6px;padding:3px;background:var(--bg-inset);border-radius:var(--radius-md);border:1px solid var(--border-primary)}.theme-btn{width:26px;height:26px;border:2px solid transparent;border-radius:var(--radius-sm);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:border-color .15s ease}.theme-btn:hover{border-color:var(--border-secondary)}.theme-btn.active{border-color:var(--text-secondary)}.theme-preview{width:16px;height:16px;border-radius:3px;border:1px solid rgba(0,0,0,.1)}.theme-preview--light{background:#f8f7f4;border-color:#e7e5e4}.theme-preview--dark{background:#18181b;border-color:#3a3a44}.theme-preview--sepia{background:#f5eed6;border-color:#ddd3b8}.app{min-height:100vh;display:flex;flex-direction:column}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:var(--sp-4);color:var(--text-tertiary);font-size:14px}.loading-spinner{width:32px;height:32px;border:2px solid var(--border-primary);border-top-color:var(--text-secondary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.view-nav{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-6);background:var(--bg-surface);border-bottom:1px solid var(--border-primary);position:sticky;top:0;z-index:50}.view-nav-tabs{display:flex;gap:var(--sp-1)}.view-btn{padding:var(--sp-2) var(--sp-5);border:none;border-radius:var(--radius-md);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:14px;font-weight:500;cursor:pointer;transition:background .15s ease,color .15s ease}.view-btn:hover{color:var(--text-primary);background:var(--bg-inset)}.view-btn.active{color:var(--text-primary);background:var(--bg-inset);font-weight:600}.main-content{flex:1;display:flex;flex-direction:column;animation:viewFadeIn .35s ease}@keyframes viewFadeIn{0%{opacity:0}to{opacity:1}}.timeline-layout{display:flex;flex:1;position:relative}
