.tl-layout{display:flex;height:calc(100vh - 130px);min-height:520px}.tl-sidebar{width:clamp(190px,20vw,250px);background:var(--panel);border-right:1px solid var(--border);padding:1rem .9rem 1.2rem;overflow-y:auto;display:flex;flex-direction:column;gap:.65rem}.tl-title{font-family:var(--font-serif);font-size:.92rem;color:var(--brand);font-weight:600;margin:0 0 .1rem}.tl-desc{font-size:.78rem;color:var(--muted);line-height:1.5;margin:0}.tl-search{width:100%;padding:.45rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-alt);color:var(--fg);font-size:.82rem}.tl-search:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px var(--focus)}.tl-search::placeholder{color:var(--muted)}.tl-count{font-size:.78rem;color:var(--muted)}.tl-count strong{color:var(--fg)}.tl-sidebar .filters+.filters{margin-top:0}.tl-toggle-all{display:block;margin-bottom:.25rem;font-size:.66rem;color:var(--brand);background:none;border:none;cursor:pointer;padding:0;font-weight:600}.tl-sub-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:.6rem 0 .15rem}.tl-group{border:1px solid var(--border);border-radius:9px;padding:.6rem .7rem;background:var(--bg-alt)}.tl-group-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);display:flex;justify-content:space-between;align-items:center;margin-bottom:.45rem}.tl-group-label button{font-size:.66rem;color:var(--brand);background:none;border:none;cursor:pointer;padding:0;font-weight:600}.tl-group label{display:flex;align-items:center;gap:.4rem;font-size:.79rem;color:var(--fg);padding:.12rem 0;cursor:pointer}.tl-group input[type=checkbox],.tl-group input[type=radio]{accent-color:var(--brand)}.school-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;display:inline-block}.tl-author-panel{border:1px solid var(--border);border-radius:9px;padding:.75rem;background:var(--panel);display:none}.tl-author-panel.active{display:block}.tl-author-panel p{font-size:.79rem;color:var(--muted);margin:.2rem 0}.tl-author-panel a{display:inline-block;margin-top:.5rem;font-size:.79rem;font-weight:600;color:var(--brand)}.tl-main{flex:1;overflow:hidden;background:var(--bg-alt);position:relative}#timeline-container{width:100%;height:100%;overflow-x:auto;overflow-y:hidden;cursor:default}.tl-axis text{font-size:11px}.tl-axis .domain{display:none}.tl-decade-line{stroke-dasharray:3,5;stroke-opacity:.45}.tl-author-dot{cursor:pointer}.tl-author-dot:hover{filter:brightness(1.15)}.tl-period-rect{cursor:pointer;transition:fill-opacity .15s}.tl-period-rect:hover{fill-opacity:.28!important}@media(max-width:860px){.tl-sidebar{width:180px;padding:.8rem .7rem}}.tlv-period{margin:0}.tlv-period-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.6rem .5rem .4rem;border-bottom:2px solid var(--pc, var(--border));position:sticky;top:0;background:var(--panel);z-index:2}.tlv-period-name{font-family:var(--font-serif);font-weight:600;font-size:.95rem;color:var(--pc, var(--fg))}.tlv-period-range{font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0}.tlv-row{display:flex;align-items:center;gap:.7rem;padding:.65rem .5rem;border-bottom:1px solid var(--border);color:var(--fg);min-height:48px}.tlv-row:active{background:var(--panel-2)}.tlv-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.tlv-dot.is-est{background:var(--panel)!important;border:2px dashed var(--pc, var(--muted))}.tlv-info{display:flex;flex-direction:column;gap:.08rem;flex:1;min-width:0}.tlv-name{font-size:.9rem;font-weight:600;color:var(--fg)}.tlv-meta{font-size:.74rem;color:var(--muted)}.tlv-arrow{color:var(--muted);font-size:1.15rem;flex-shrink:0;line-height:1}.tl-empty{padding:2.5rem 1rem;color:var(--muted);text-align:center;font-size:.85rem}@media(max-width:640px){.tl-layout{flex-direction:column;height:auto;min-height:0}.tl-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border);padding:.85rem .9rem;gap:.55rem}.tl-desc{font-size:.8rem}.tl-main{flex:none;overflow:visible;height:auto;background:var(--panel)}#timeline-container{height:auto;overflow:visible;cursor:default;background:var(--panel)}}
