*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font-serif:Georgia, "Times New Roman", serif;--font-sans:system-ui, sans-serif;--color-bg:#faf8f4;--color-text:#1a1a1a;--color-text-muted:#666;--color-divider:#ddd;--color-bar:#8b69148c;--color-bar-active:#8b6914d9;--color-bar-bg:#8b691412;--color-menu-bg:#fff;--color-menu-shadow:#0000002e;--gutter-width:33.33%;--header-height:3rem}html,body,#root{height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:16px;line-height:1.5}.app{flex-direction:column;height:100%;display:flex}.app-header{flex:0 0 var(--header-height);border-bottom:1px solid var(--color-divider);background:var(--color-bg);align-items:center;display:flex;position:relative}.header-title-group{align-items:center;gap:.75rem;display:flex;position:absolute;left:1.5rem}.app-header h1{font-family:var(--font-serif);letter-spacing:.03em;white-space:nowrap;pointer-events:none;font-size:1.1rem;font-weight:400}.header-poem-section{flex:0 0 60%;justify-content:center;align-items:center;display:flex}.header-anno-section{flex:1;justify-content:flex-start;align-items:center;padding-left:.75rem;display:flex}.search-input{border:1px solid var(--color-divider);width:12rem;height:1.6rem;font-family:var(--font-sans);background:var(--color-bg);color:inherit;border-radius:3px;outline:none;padding:0 .5rem;font-size:.82rem}.search-input:focus{border-color:#49f;box-shadow:0 0 0 2px #49f3}.search-hit{background:#4499ff47;border-radius:2px}.episode-menu-wrap{position:relative}.episode-btn{border:1px solid var(--color-text);font-family:var(--font-sans);color:var(--color-text);cursor:pointer;white-space:nowrap;background:0 0;border-radius:3px;padding:.3rem 1.1rem;font-size:1.15rem;transition:background .15s,color .15s}.episode-btn:hover,.episode-btn.open{background:var(--color-text);color:var(--color-bg)}.episode-dropdown{background:var(--color-bg);border:1px solid var(--color-divider);z-index:200;border-radius:4px;min-width:200px;position:absolute;top:calc(100% + 4px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 16px #0000001f}.episode-item{border:none;border-bottom:1px solid var(--color-divider);width:100%;font-family:var(--font-sans);color:var(--color-text);text-align:center;cursor:pointer;background:0 0;padding:.4rem 1rem;font-size:.95rem;transition:background .1s;display:block}.episode-item:last-child{border-bottom:none}.episode-item:hover{background:color-mix(in srgb, var(--color-text) 6%, transparent)}.episode-item.current{font-weight:600}.anno-toggle{color:var(--color-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.4rem;font-size:.8rem;display:flex}.anno-toggle input[type=checkbox]{accent-color:var(--color-disc)}.author-filter{position:relative}.author-filter-btn{border:1px solid var(--color-divider);cursor:pointer;color:var(--color-text-muted);background:0 0;border-radius:4px;padding:.25rem .6rem;font-size:.8rem}.author-filter-btn:hover{background:var(--color-trigger-bg)}.author-filter-dropdown{background:var(--color-menu-bg);border:1px solid var(--color-divider);box-shadow:0 4px 16px var(--color-menu-shadow);z-index:100;border-radius:6px;min-width:180px;padding:.4rem 0;position:absolute;top:calc(100% + 4px);right:0}.author-filter-item{cursor:pointer;align-items:center;gap:.5rem;padding:.3rem .8rem;font-size:.82rem;display:flex}.author-filter-item:hover{background:var(--color-trigger-bg)}.author-filter-item input{accent-color:var(--color-disc)}.columns{flex:1 1 0;display:flex;position:relative;overflow:hidden}.anno-filter-pane{z-index:45;background:var(--color-bg);border-right:1px solid var(--color-divider);flex-direction:column;width:60%;height:100%;display:flex;position:absolute;top:0;left:0}.anno-filter-scroll{flex:1;padding:1.5rem 2rem 2rem;overflow:auto}.afp-episode-label{color:var(--color-text-muted);margin-bottom:1rem;font-size:.82rem}.anno-filter-table{border-collapse:collapse;font-size:.82rem}.afp-corner{min-width:7rem}.afp-col-head{text-align:center;vertical-align:bottom;border-bottom:1px solid var(--color-divider);background:var(--color-bg);width:2.2rem;padding:.5rem .2rem .35rem;position:sticky;top:0}.afp-col-head .afp-label{flex-direction:column;align-items:center;gap:.4rem}.afp-col-head .afp-name{writing-mode:vertical-rl;white-space:nowrap;font-size:.8rem;transform:rotate(180deg)}.afp-total-head{color:var(--color-text-muted);font-weight:400}.afp-col-rotated{writing-mode:vertical-rl;white-space:nowrap;font-size:.8rem;display:inline-block;transform:rotate(180deg)}.afp-row-head{text-align:left;padding:.25rem 1.2rem .25rem 0}.afp-col-total-label{color:var(--color-text-muted);padding-top:.5rem;font-style:italic}.afp-label{cursor:pointer;align-items:center;gap:.35rem;display:flex}.afp-name{font-weight:600}.afp-cell{text-align:right;font-variant-numeric:tabular-nums;padding:.25rem .6rem}.afp-row-total{border-left:1px solid var(--color-divider);color:var(--color-text-muted)}.afp-col-total{border-top:1px solid var(--color-divider);color:var(--color-text-muted)}.afp-grand{color:var(--color-text);font-weight:700}.afp-count{white-space:nowrap;transition:opacity .18s}.afp-count.faded{opacity:.22}.afp-zero{opacity:.35}.afp-slash{opacity:.4;padding:0 1px;font-size:.8em}.filter-toggle-btn{border:1px solid var(--color-text);cursor:pointer;white-space:nowrap;color:var(--color-text);background:0 0;border-radius:3px;padding:.2rem .6rem;font-family:inherit;font-size:.78rem;transition:background .12s,color .12s}.filter-toggle-btn:hover,.filter-toggle-btn.open{background:var(--color-text);color:var(--color-bg)}.navigator-panel{background:var(--color-bg);border-left:1px solid var(--color-divider);z-index:50;flex-direction:column;width:40%;height:100%;transition:transform .22s;display:flex;position:absolute;top:0;right:0;overflow:hidden;transform:translate(100%)}.navigator-panel.open{transform:translate(0)}.navigator-header{border-bottom:1px solid var(--color-divider);flex-shrink:0;align-items:center;padding:.35rem .6rem;display:flex}.navigator-header-spacer{flex:1}.navigator-episode-select{font-family:var(--font-serif);border:1px solid var(--color-text);color:var(--color-text);cursor:pointer;background:0 0;border-radius:3px;outline:none;flex:none;padding:.15rem .5rem;font-size:1.05rem}.navigator-episode-select:hover{background:var(--color-text);color:var(--color-bg)}.navigator-close{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex:1;justify-content:flex-end;padding:.1rem .3rem;font-size:.9rem;line-height:1;display:flex}.navigator-close:hover{color:var(--color-text)}.navigator-canvas-wrap{scrollbar-width:none;flex:1;position:relative;overflow:auto hidden}.navigator-canvas-wrap::-webkit-scrollbar{display:none}.navigator-click-hint{color:#fff;letter-spacing:.05em;pointer-events:none;-webkit-user-select:none;user-select:none;background:#000000c7;border-radius:8px;padding:.4em .9em;font-size:2rem;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.poem-column{flex:0 0 60%;padding:2rem 10px 4rem;overflow-y:scroll}.poem-column::-webkit-scrollbar{width:8px}.poem-column::-webkit-scrollbar-track{background:0 0}.poem-column::-webkit-scrollbar-thumb{background:#00000040;border-radius:4px}.poem-column::-webkit-scrollbar-thumb:hover{background:#00000073}.poem-title{font-family:var(--font-serif);padding-left:calc(var(--gutter-width) + 10px);margin-bottom:.25rem;font-size:1.4rem;font-weight:400}.poem-author{color:var(--color-text-muted);padding-left:calc(var(--gutter-width) + 10px);margin-bottom:2rem;font-size:.85rem}.poem-section{margin-bottom:2.5rem}.section-title-row{align-items:baseline;gap:10px;margin-bottom:1rem;display:flex}.section-title{font-family:var(--font-serif);color:var(--color-text-muted);font-size:1rem;font-style:italic;font-weight:400}.poem-line-wrapper{align-items:stretch;gap:10px;display:flex}@keyframes echo-flash{0%{background-color:#8b691400}6%{background-color:#8b691429}30%{background-color:#8b691429}to{background-color:#8b691400}}.line-echo-target{animation:2s ease-out forwards echo-flash}.echo-link-highlight{border-radius:3px;animation:2s ease-out forwards echo-flash}.anno-bar-pane{flex:0 0 calc(var(--gutter-width) + 1.1rem);align-items:stretch;display:flex}.bookmark-col{flex:0 0 1.1rem;position:relative}.bookmark-cb{box-sizing:border-box;cursor:pointer;opacity:0;background:0 0;border:1.5px solid #bbb;border-radius:2px;width:.85rem;padding:0;font-size:0;transition:opacity .12s,border-color .12s,background .12s;position:absolute;left:0}.poem-column:has(.anno-bar-pane:hover) .bookmark-cb{opacity:1}.bookmark-cb.bookmarked{background:#e6f5e6;border-color:#2a8a2a;opacity:1!important}.bookmark-cb.bookmarked:after{content:"✓";text-align:center;color:#2a8a2a;width:100%;font-size:.65rem;font-weight:700;line-height:1;display:block}.line-gutter{flex:1;position:relative}.poem-line{font-family:var(--font-serif);white-space:pre-wrap;flex:1;min-height:1.8em;font-size:1rem;line-height:1.8}.bar-wrapper{justify-content:flex-end;align-items:center;display:flex;position:absolute;left:0;right:10px}.annotation-bar{cursor:pointer;background:#fff;border-radius:2px;gap:2px;min-width:3px;height:calc(50% + 3px);transition:box-shadow .1s;display:flex;overflow:hidden}.annotation-bar.active{box-shadow:0 0 0 1.5px #0000008c}.bar-segment{height:100%;display:block;box-shadow:inset 0 0 0 1px #00000040}.anno-menu{z-index:200;background:var(--color-menu-bg);border:1px solid var(--color-divider);width:calc(20% - 20px);box-shadow:4px 4px 20px var(--color-menu-shadow);white-space:normal;font-family:var(--font-sans);border-radius:0 0 6px;padding:.3rem 0;font-size:1rem;line-height:1.4;position:fixed;left:10px}.anno-menu-group-label{text-transform:uppercase;letter-spacing:.08em;padding:.25rem .9rem .1rem;font-size:.68rem;font-weight:600}.anno-menu-item{cursor:pointer;border-left:3px solid #0000;padding:.45rem .9rem;font-size:.85rem;display:block}.anno-menu-item:hover,.anno-menu-item.selected{background:var(--color-bar-bg)}.anno-menu-item .item-title{font-family:var(--font-serif);display:block}.anno-menu-item .item-meta{color:var(--color-text-muted);font-size:.72rem;display:block}.anno-menu-item .item-poem-text{font-style:italic}.anno-menu-divider{background:var(--color-divider);height:1px;margin:.2rem 0;display:block}.anno-column{border-left:1px solid var(--color-divider);flex:0 0 40%;padding:2rem 1.5rem 4rem;overflow-y:auto}.anno-column-empty{color:var(--color-text-muted);padding-top:.5rem;font-size:.88rem;font-style:italic}.anno-pane{flex-direction:column;gap:1.2rem;display:flex}.anno-content{flex-direction:column;gap:.8rem;display:flex}.anno-content-header{flex-direction:column;gap:.2rem;display:flex}.anno-content-group-bar{align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.anno-content-group-name{text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;flex-shrink:0;font-size:.7rem;font-weight:600}.anno-content-group-line{border-radius:1px;flex:1;height:2px}.anno-content-level{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);font-size:.72rem}.anno-content-title{font-family:var(--font-serif);font-size:1.15rem;font-weight:400}.anno-content-poem-text{font-family:var(--font-serif);color:var(--color-text-muted);font-size:.88rem;font-style:italic}.anno-content-meta{color:var(--color-text-muted);font-size:.75rem}.anno-content-body a.echo-link{cursor:pointer;color:inherit;border-bottom:1px solid;font-style:italic;font-weight:600;text-decoration:none}.anno-content-body a.echo-link:hover{opacity:.7}.anno-content-body{font-size:.9rem;line-height:1.7}.anno-content-body p{margin-bottom:.7rem}.anno-content-body p:last-child{margin-bottom:0}.anno-content-body em{font-style:italic}.anno-content-body strong{font-weight:600}.anno-content-body blockquote{border-left:3px solid var(--color-disc);color:var(--color-text-muted);margin:.5rem 0;padding-left:.8rem;font-style:italic}.anno-related{flex-direction:column;gap:.3rem;display:flex}.anno-related-label{text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);margin-bottom:.1rem;font-size:.72rem}.anno-related-item{font-size:.82rem;font-family:var(--font-serif);color:var(--color-text-muted);border-left:2px solid var(--color-divider);cursor:pointer;padding:.2rem .5rem}.anno-related-item:hover{color:var(--color-disc);border-left-color:var(--color-disc)}@media (width<=700px){.columns{flex-direction:column;overflow:visible}.poem-column,.anno-column{flex:none;width:100%;padding:1.5rem 0;overflow-y:visible}.anno-column{border-left:none;border-top:1px solid var(--color-divider)}}
