.chant-route{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5efe2;--bg-deep:#dcc7ac;--text:#2c211d;--muted:#726155;--accent:#9f4f2b;--accent-strong:#6f2d17;--line:#553b2929;--line-soft:#553b291a}:is(.chant-route,.chant-route *){box-sizing:border-box}.chant-route{background:radial-gradient(circle at top,#ffffffe0,transparent 32%),radial-gradient(circle at 20% 20%,#d8b58a3d,transparent 22%),linear-gradient(160deg,#fbf7f0 0%,var(--bg)48%,var(--bg-deep)100%);min-height:100vh;color:var(--text);font-family:Iowan Old Style,Palatino Linotype,Book Antiqua,Georgia,serif;position:relative}.chant-route:before{content:"";z-index:-1;background:radial-gradient(circle at top,#ffffffe0,transparent 32%),radial-gradient(circle at 20% 20%,#d8b58a3d,transparent 22%),linear-gradient(160deg,#fbf7f0 0%,var(--bg)48%,var(--bg-deep)100%);opacity:.8;position:fixed;inset:0}.chant-route code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.chant-route .page-shell{place-items:start center;min-height:100vh;padding:1.25rem;display:grid}.chant-route .page-panel{grid-template-rows:auto 1fr auto auto;gap:1.25rem;width:min(100%,52rem);min-height:calc(100vh - 2.5rem);margin:0 auto;padding:0;display:grid}.chant-route .controls-row{z-index:1;gap:.75rem;display:grid;position:relative}.chant-route .mode-select-wrap{flex-direction:column;gap:.15rem;width:100%;display:inline-flex;position:relative}.chant-route .mode-select{appearance:none;width:100%;min-width:0;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:0;padding:.55rem 1.6rem .55rem 0;font-size:1.05rem;font-weight:700}.chant-route .mode-select-wrap:after{content:"";pointer-events:none;background-color:#6f2d17b8;width:1.35rem;height:1.35rem;position:absolute;top:1.1rem;right:.05rem;transform:translateY(-50%)rotate(-90deg);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 17.192L6.846 12L15 6.808z'/%3E%3C/svg%3E") 50%/120% 120% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M15 17.192L6.846 12L15 6.808z'/%3E%3C/svg%3E") 50%/120% 120% no-repeat}.chant-route .mode-select:focus-visible{outline:none}.chant-route .mode-meta{color:var(--muted);font-size:.86rem;font-weight:600;line-height:1.1}.chant-route .staff-frame{z-index:1;border-bottom:1px solid var(--line-soft);background:repeating-linear-gradient(90deg,#a6825b09 0 1px,#0000 1px 28px);align-items:center;min-height:13rem;padding:.5rem 0;display:flex;position:relative;overflow:hidden}.chant-route .staff-scroll{justify-content:flex-start;align-items:center;width:100%;min-height:100%;display:flex;overflow:hidden auto}.chant-route .staff-markup{transform-origin:0;min-width:100%}.chant-route .staff-markup svg{width:100%;height:auto;display:block}.chant-route .staff-status{color:var(--muted);text-align:left;margin:0;font-size:1rem}.chant-route .play-controls{gap:.45rem;display:grid}.chant-route .sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chant-route .randomize-button{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#fff8f2;width:100%;min-height:2.5rem;font:inherit;letter-spacing:.01em;border:1px solid #6f2d171a;border-radius:999px;padding:.55rem .8rem;font-size:.95rem;font-weight:700;transition:transform .18s,border-color .18s,box-shadow .18s,filter .18s;box-shadow:0 12px 28px #6f2d172e,inset 0 1px #ffffff29}.chant-route .randomize-button:hover{filter:brightness(1.03)}.chant-route .randomize-button:active{transform:translateY(1px)scale(.995);box-shadow:0 8px 18px #6f2d1729,inset 0 1px #ffffff24}.chant-route .randomize-button:focus-visible{outline-offset:3px;outline:3px solid #9f4f2b38}.chant-route .zoom-button{border:1px solid var(--line);width:2.75rem;height:2.75rem;color:var(--text);font:inherit;cursor:pointer;background:#fffcf78c;border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:1.4rem;font-weight:700;line-height:1;transition:transform .18s,border-color .18s,filter .18s;display:inline-flex}.chant-route .zoom-button:hover{border-color:#6f2d177a}.chant-route .zoom-button:active{transform:translateY(1px)}.chant-route .zoom-button:disabled{opacity:.4;cursor:default}.chant-route .zoom-button:focus-visible{outline-offset:4px;outline:3px solid #9f4f2b29}.chant-route .zoom-controls{align-items:center;gap:.8rem;display:inline-flex}.chant-route .zoom-readout{text-align:center;min-width:4rem;font-size:1rem;font-weight:700}.chant-route .play-button{width:100%;min-height:2.5rem;color:var(--text);font:inherit;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fffcf7f2,#f4e8daf2);border:1px solid #6f2d1724;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.55rem .8rem;font-size:.95rem;font-weight:700;transition:transform .18s,border-color .18s,box-shadow .18s,filter .18s;display:inline-flex;box-shadow:0 8px 18px #6f2d1717,inset 0 1px #ffffffb3}.chant-route .play-button.is-droning{color:var(--accent-strong);background:linear-gradient(#fff8effa,#e8d8c5fa);border-color:#6f2d1757}.chant-route .play-button:hover{filter:brightness(1.02);border-color:#6f2d1747}.chant-route .play-button:disabled{opacity:.5;cursor:default}.chant-route .play-button:active{transform:translateY(1px);box-shadow:0 5px 10px #6f2d1712,inset 0 1px #ffffffa6}.chant-route .play-button:focus-visible{outline-offset:3px;outline:3px solid #9f4f2b2e}.chant-route .play-button-icon{flex:none;width:1rem;height:1rem}.chant-route .settings-fab{z-index:49;width:3.25rem;height:3.25rem;color:var(--accent-strong);cursor:pointer;background:linear-gradient(135deg,#fffbf6f2,#f0e2d0eb);border:1px solid #6f2d1724;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:transform .18s,border-color .18s,box-shadow .18s,filter .18s;display:inline-flex;position:fixed;top:1rem;right:1rem;box-shadow:0 18px 36px #6f2d1729,inset 0 1px #ffffffbf}.chant-route .settings-fab:hover{filter:brightness(1.02);border-color:#6f2d1747}.chant-route .settings-fab:active{transform:translateY(1px)scale(.99)}.chant-route .settings-fab:focus-visible{outline-offset:4px;outline:3px solid #9f4f2b33}.chant-route .settings-icon{fill:currentColor;width:1.35rem;height:1.35rem}.chant-route .settings-backdrop{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1f140e2e;justify-content:flex-end;align-items:flex-end;padding:1rem;display:flex;position:fixed;inset:0}.chant-route .settings-popover{width:min(100%,22rem);color:var(--text);background:linear-gradient(#fffcf8fa,#f7ecdcfa);border:1px solid #6f2d1724;border-radius:1.25rem;gap:1rem;padding:1rem;display:grid;box-shadow:0 24px 60px #1f140e3d,inset 0 2px #ffffff73}.chant-route .settings-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.chant-route .settings-title{letter-spacing:.03em;text-transform:uppercase;margin:0;font-size:1rem;font-weight:700}.chant-route .settings-close{border:1px solid var(--line);width:2rem;height:2rem;color:var(--muted);font:inherit;cursor:pointer;background:#fffcf7c2;border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:1.2rem;line-height:1;display:inline-flex}.chant-route .settings-close:hover{color:var(--text);border-color:#6f2d1747}.chant-route .settings-close:focus-visible{outline-offset:3px;outline:3px solid #9f4f2b33}.chant-route .settings-popover .mode-select-wrap{width:100%}.chant-route .settings-popover .mode-select{padding-right:1.6rem}.chant-route .settings-popover .zoom-controls{justify-content:space-between;width:100%;padding-top:.25rem}.chant-route .settings-popover .zoom-readout{flex:1}@media (min-width:48rem){.chant-route .page-shell{padding:2rem 3rem 2rem 2rem}.chant-route .controls-row{grid-template-columns:repeat(8,minmax(0,1fr));padding-right:6rem}.chant-route .play-controls{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:.35rem}.chant-route .page-panel{gap:1.5rem;min-height:calc(100vh - 4rem)}.chant-route .staff-frame{min-height:16rem;padding:.75rem 0}.chant-route .randomize-button{min-width:0}.chant-route .settings-backdrop{padding:1.5rem}.chant-route .settings-popover{width:22.5rem}.chant-route .settings-fab{top:1.5rem;right:1.5rem}}
