:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-synthesis:none;text-rendering:optimizelegibility;--color-ink:#17221d;--color-muted:#5a6961;--color-surface:#fff;--color-surface-soft:#f3f6f3;--color-canvas:#fff;--color-primary:#1f5b43;--color-primary-strong:#123f2e;--color-primary-soft:#dfeee5;--color-accent:#f2cf8d;--color-on-primary:#fff;--color-danger:#9a2f37;--color-warning-bg:#fff4d8;--color-warning-border:#d49327;--border:#cdd8d0;--shadow-sm:0 2px 6px #10231a0a;--shadow-md:0 12px 32px #10231a17;--radius-sm:.55rem;--radius-md:.85rem;--radius-lg:1.15rem;font-family:Segoe UI Variable,Segoe UI,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}html{background:var(--color-canvas);min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;color:var(--color-ink);background:var(--color-canvas);margin:0}button,input,select{font:inherit}button,select{cursor:pointer}button:disabled,select:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline-offset:3px;outline:3px solid #1f5b43}h1,h2,h3,p{margin-top:0}.skip-link{z-index:100;color:var(--color-on-primary);background:var(--color-primary-strong);border-radius:var(--radius-sm);padding:.75rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.app-header{color:#fff;box-shadow:var(--shadow-md);background:linear-gradient(135deg,#102b20,#1f513d);border-bottom:1px solid #244b37}.app-header__inner{flex-direction:column;gap:1rem;width:min(100% - 2rem,74rem);margin-inline:auto;padding:1rem 0 0;display:flex}.brand{align-items:center;gap:.75rem;display:flex}.auth-controls{flex-wrap:wrap;padding-bottom:.75rem;display:flex}.button.auth-button{color:#102b20;background:var(--color-accent);border-color:var(--color-accent);overflow-wrap:anywhere}.auth-button:hover:not(:disabled){background:#f7dcaa}.modal.login-dialog{border:1px solid var(--border);border-radius:var(--radius-lg);width:min(100% - 2rem,30rem);max-width:30rem;height:fit-content;max-height:calc(100dvh - 2rem);margin:auto}.login-dialog .login-form{align-content:start;gap:1rem;min-height:0;padding:1.5rem;display:grid}.login-form h2{letter-spacing:-.025em;margin-bottom:0;font-weight:650}.login-form>p:not(.login-status){color:var(--color-muted);margin-bottom:0;line-height:1.5}.login-status{color:var(--color-danger);margin:0}.brand__mark{color:#102b20;background:var(--color-accent);border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;font-size:1.55rem;font-weight:800;display:grid}.brand__eyebrow,.brand__name{margin:0}.brand__eyebrow{color:#fff;letter-spacing:.12em;text-transform:uppercase;font-size:.72rem;font-weight:700}.brand__name{letter-spacing:-.025em;font-size:clamp(1.1rem,4vw,1.35rem);font-weight:650}.app-nav{grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem;display:grid}.nav-button{color:#fff;text-align:center;background:0 0;border:0;border-bottom:3px solid #0000;justify-content:center;align-items:center;gap:.5rem;min-height:3rem;padding:.65rem 1rem;font-weight:600;line-height:1.15;display:inline-flex}.nav-button:hover{color:#fff;background:#ffffff14}.nav-button--active{color:#fff;border-bottom-color:var(--color-accent)}.nav-count{color:#102b20;background:var(--color-accent);border-radius:999px;flex-shrink:0;min-width:1.45rem;padding:.1rem .4rem;font-size:.75rem}.app-main{width:min(100% - 2rem,74rem);margin-inline:auto;padding:1.5rem 0 4rem}.page-heading{margin-bottom:1.25rem}.page-heading h1{letter-spacing:-.04em;margin-bottom:.35rem;font-size:clamp(1.8rem,6vw,2.45rem);font-weight:650;line-height:1.15}.page-heading__description{max-width:43rem;color:var(--color-muted);margin-bottom:0;font-size:1rem;line-height:1.55}.page-heading--actions{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.page-heading__button-group{flex-wrap:wrap;gap:.75rem;display:flex}.eyebrow{color:var(--color-primary);letter-spacing:.1em;text-transform:uppercase;margin-bottom:.35rem;font-size:.75rem;font-weight:650}.panel,.song-sheet,.service-item,.empty-state{background:var(--color-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.library-layout{gap:1rem;display:grid}.catalog-panel{padding:1rem}.modal{width:min(100% - 2rem,68rem);max-width:none;max-height:calc(100dvh - 2rem);color:var(--color-ink);background:var(--color-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overscroll-behavior:contain;margin:auto;padding:0;overflow:auto;box-shadow:0 1.5rem 4rem #0a1b1347}.modal::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#091811a8}.modal__form{gap:1rem;min-width:0;padding:1rem;display:grid}.modal__header{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:1rem;padding-bottom:.75rem;display:flex;position:sticky;top:0}.modal__header h2{margin-bottom:0;font-size:clamp(1.25rem,4vw,1.7rem);line-height:1.2}.modal__header .eyebrow{margin-bottom:.2rem}.modal__close{width:2.75rem;height:2.75rem;color:var(--color-primary-strong);background:var(--color-surface-soft);border:1px solid var(--border);border-radius:50%;flex:0 0 2.75rem;place-items:center;padding:0;font-size:1.75rem;line-height:1;display:grid}.modal__close:hover{background:var(--color-primary-soft);border-color:var(--color-primary)}.song-create{margin:0}.song-create h2{margin-bottom:.3rem;font-size:1.3rem}.song-create__fields{gap:.75rem;display:grid}.field{gap:.4rem;min-width:0;display:grid}.field__label{color:var(--color-muted);font-size:.86rem;font-weight:600;line-height:1.4}.input,.select{width:100%;min-height:2.85rem;color:var(--color-ink);background:var(--color-canvas);border-radius:var(--radius-sm);border:1px solid #aebdb3;padding:.65rem .75rem}.input:hover,.select:hover{border-color:var(--color-primary)}.date-input{min-width:0;max-width:100%;display:block}.date-input::-webkit-date-and-time-value{text-align:left;min-height:1.25rem}.search-input{padding-left:.9rem}.catalog-count{color:var(--color-muted);margin:.75rem 0;font-size:.82rem}.filter-chips{flex-wrap:wrap;gap:.4rem;margin-top:.85rem;display:flex}.filter-chip{min-height:2.35rem;color:var(--color-primary-strong);background:var(--color-surface);border:1px solid var(--border);border-radius:999px;padding:.4rem .7rem;font-size:.8rem;font-weight:600}.filter-chip:hover,.filter-chip--active{background:var(--color-primary-soft);border-color:var(--color-primary)}.filter-chip--active{box-shadow:inset 0 0 0 1px var(--color-primary)}.song-results{overscroll-behavior:contain;max-height:24rem;overflow:auto}.song-list{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.song-result{text-align:left;width:100%;min-height:3.6rem;color:var(--color-ink);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;gap:.2rem;padding:.7rem .8rem;display:grid}.song-result:hover{background:var(--color-surface-soft)}.song-result--active{background:var(--color-primary-soft);box-shadow:inset 3px 0 0 var(--color-primary);border-color:#8ebaa1}.song-result__title{font-size:.95rem;font-weight:650;line-height:1.4}.song-result__meta{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;overflow:hidden}.song-result__tags{flex-wrap:wrap;gap:.3rem;margin-top:.2rem;display:flex}.song-tag{color:var(--color-muted);background:#edf2ee;border-radius:999px;padding:.15rem .45rem;font-size:.72rem;font-weight:600}.song-tag--chords{color:#276646;background:#eaf6ef}.song-tag--pending{color:#805515;background:var(--color-warning-bg)}.song-tag--review{color:#a3394b;background:#fff0f2}.song-detail__stack{gap:1rem;display:grid}.tone-panel{border-bottom:1px solid var(--border);flex-direction:column;gap:.85rem;padding:.25rem 1.25rem 1rem;display:flex}.song-toolbar{flex-wrap:wrap;align-items:end;gap:1rem;display:flex}.song-toolbar>*{flex:14rem;min-width:0}.song-toolbar__footer{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.song-toolbar__footer .button{padding-inline:.75rem;font-size:.8rem}.button.song-back{margin-bottom:1rem;display:none}.tone-panel__heading h2{letter-spacing:-.02em;margin-bottom:.25rem;font-size:1.15rem;font-weight:650}.tone-panel__heading p{color:var(--color-muted);margin-bottom:0;font-size:.88rem;line-height:1.45}.chord-coverage{border-radius:var(--radius-sm);border:1px solid;align-self:flex-start;padding:.3rem .55rem;font-size:.82rem;font-weight:500}.chord-coverage--ready{color:#276646;background:#eaf6ef;border-color:#b6d7c3}.chord-coverage--pending{color:#805515;background:var(--color-warning-bg);border-color:var(--color-warning-border)}.tone-controls{grid-template-columns:2.75rem minmax(6rem,1fr) 2.75rem;justify-content:start;align-items:end;gap:.5rem;display:grid}.tone-pending{color:#805515;text-align:center;background:var(--color-warning-bg);border:1px solid var(--color-warning-border);border-radius:var(--radius-sm);padding:.8rem 1rem;font-size:.9rem;font-weight:750}.tone-actions{flex-wrap:wrap;justify-content:flex-start;gap:.65rem;display:flex}.song-settings{min-width:0}.song-settings-button{justify-self:center}.song-settings__content{gap:.75rem;display:grid}.song-settings__description,.song-settings__help{color:var(--color-muted);margin:0;font-size:.82rem;line-height:1.45}.song-settings__fields{gap:.75rem;display:grid}.song-settings__actions{flex-wrap:wrap;gap:.55rem;display:flex}.song-settings__chord-editor{resize:vertical;white-space:pre;min-height:16rem;font-family:Cascadia Code,SFMono-Regular,Consolas,monospace;font-size:.82rem;line-height:1.5;overflow:auto}.chord-editor{gap:.75rem;display:grid}.chord-editor__status{min-height:1.2rem;color:var(--color-muted);font-size:.82rem;font-weight:700}.notation-selector{border:0;min-width:0;margin:0;padding:0}.notation-selector__legend{color:var(--color-muted);margin-bottom:.4rem;font-size:.78rem;font-weight:600}.notation-selector__options{grid-template-columns:repeat(3,minmax(0,1fr));gap:.4rem;display:grid}.notation-option{text-align:center;background:var(--color-surface);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #aebdb3;place-content:center;min-width:0;min-height:2.85rem;padding:.45rem .3rem;display:grid;position:relative}.notation-option:has(.notation-selector__input:checked){background:var(--color-primary-soft);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.notation-option:has(.notation-selector__input:focus-visible){outline-offset:2px;outline:3px solid #1f5b43}.notation-selector__input{opacity:0;width:1px;height:1px;position:absolute}.notation-option__label{text-overflow:ellipsis;font-size:.82rem;font-weight:650;overflow:hidden}.notation-option__example{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;overflow:hidden}.button,.icon-button{border-radius:var(--radius-sm);min-height:2.75rem;transition:background-color .12s,border-color .12s,transform .12s}.button:active:not(:disabled),.icon-button:active:not(:disabled){transform:translateY(1px)}.button{border:1px solid #0000;justify-content:center;align-items:center;padding:.65rem 1rem;font-weight:600;display:inline-flex}.button--primary{color:var(--color-on-primary);background:var(--color-primary);border-color:var(--color-primary)}.button--primary:hover:not(:disabled){background:var(--color-primary-strong)}.button--ghost{color:var(--color-ink);background:var(--color-surface);border-color:#aebdb3}.button--ghost:hover:not(:disabled){background:var(--color-primary-soft)}.button--youtube{color:#fff;background:#b42318;border-color:#b42318;text-decoration:none}.button--youtube:hover{background:#8f1b13;border-color:#8f1b13}.button--small{min-height:2.5rem;padding:.5rem .8rem;font-size:.85rem}.button--wide{width:100%}.icon-button{width:2.75rem;min-width:2.75rem;color:var(--color-primary-strong);background:var(--color-surface);border:1px solid #aebdb3;place-items:center;padding:0;font-size:1.2rem;font-weight:800;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--color-primary-soft)}.icon-button--danger{color:var(--color-danger);border-color:#e1b8c0}.icon-button--danger:hover:not(:disabled){background:#fff0f2}.song-sheet{overflow:hidden}.song-sheet__header{background:var(--color-surface);padding:1.25rem}.song-sheet__title{letter-spacing:-.025em;margin-bottom:.25rem;font-size:clamp(1.35rem,5vw,1.85rem);font-weight:650}.song-sheet__meta,.song-sheet__artist{color:var(--color-muted);margin:0;font-size:.85rem}.song-sheet__artist{color:var(--color-primary);margin-top:.4rem;font-weight:600}.song-sheet__meta{color:var(--color-muted);font-weight:600}.song-content{padding:1rem 1.1rem 1.4rem;overflow-x:auto}.song-section{color:var(--color-muted);letter-spacing:.1em;text-transform:uppercase;margin:1.2rem 0 .65rem;font-size:.75rem;font-weight:650}.song-section:first-child{margin-top:0}.song-line{white-space:nowrap;min-height:2.65rem;margin:0 0 .25rem;line-height:1.35}.song-line--blank{min-height:.8rem}.song-chunk{vertical-align:bottom;flex-direction:column;min-width:max-content;display:inline-flex}.song-chunk--lyrics-only{padding-top:1.15rem}.chord{min-height:1.15rem;color:var(--color-primary);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.9rem;font-weight:850;line-height:1.15}.lyric{white-space:pre}.service-details{gap:1rem;margin-bottom:1rem;padding:1rem;display:grid}.save-hint{color:var(--color-muted);margin:0;font-size:.82rem;line-height:1.45}.service-items{gap:.75rem;display:grid}.service-item{grid-template-columns:2.2rem minmax(0,1fr);gap:.75rem;padding:.9rem;display:grid}.service-item__number{width:2.1rem;height:2.1rem;color:var(--color-on-primary);background:var(--color-primary);border-radius:50%;place-items:center;font-weight:800;display:grid}.service-item__content{min-width:0}.service-item__title{overflow-wrap:anywhere;margin-bottom:.15rem;font-size:1.05rem}.service-item__artist{color:var(--color-muted);margin-bottom:.75rem;font-size:.82rem}.service-item__error{color:var(--color-danger);margin-bottom:0;font-size:.85rem;font-weight:700}.service-item__actions{grid-column:2;gap:.45rem;display:flex}.key-select{max-width:9rem}.print-actions{gap:.55rem;margin-top:1.25rem;display:grid}.print-help{color:var(--color-muted);text-align:center;margin:0;font-size:.82rem}.empty-state{text-align:center;align-content:center;place-items:center;min-height:12rem;padding:1.5rem;display:grid}.empty-state__icon{width:3rem;height:3rem;color:var(--color-primary);background:var(--color-primary-soft);border-radius:50%;place-items:center;margin-bottom:.75rem;font-size:1.5rem;display:grid}.empty-state__title{margin-bottom:.35rem;font-size:1.1rem}.empty-state__description{max-width:25rem;color:var(--color-muted);margin-bottom:1rem}.alert{border-radius:var(--radius-sm);border:1px solid;margin-bottom:1rem;padding:.85rem 1rem;line-height:1.45}.alert--warning{background:var(--color-warning-bg);border-color:var(--color-warning-border)}.app-status{z-index:50;color:#fff;border-radius:var(--radius-sm);max-width:min(28rem,100% - 2rem);box-shadow:var(--shadow-md);pointer-events:none;background:#33433b;padding:.75rem 1rem;font-size:.88rem;font-weight:700;position:fixed;bottom:1rem;right:1rem}.app-status:empty{display:none}.app-status--success{background:#245a40}.app-status--error{background:#76242b}.startup-error{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid #e1b8c0;width:min(100% - 2rem,38rem);margin:5rem auto;padding:1.5rem}#print-root{display:none}@media (width>=42rem){.app-header__inner{flex-direction:row;justify-content:space-between;align-items:center;padding-top:0}.app-nav{min-width:29rem}.nav-button{min-height:4.5rem}.app-main{padding-top:2.25rem}.service-details{grid-template-columns:minmax(0,1fr) minmax(11rem,.45fr);align-items:end}.service-details .save-hint{grid-column:1/-1}.service-item{grid-template-columns:2.2rem minmax(0,1fr) auto;align-items:center}.service-item__actions{grid-column:3}.print-actions{justify-items:center}.button--wide{width:auto;min-width:18rem}}@media (width>=52rem){.library-layout{grid-template-columns:minmax(17rem,20rem) minmax(0,1fr);align-items:start}.catalog-panel{position:sticky;top:1rem}.song-results{max-height:calc(100vh - 15rem)}.song-settings__fields{grid-template-columns:repeat(2,minmax(0,1fr))}.song-create__fields{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=64rem){.auth-controls{margin-inline-end:2rem}}@media (width<=51.99rem){.button.song-back{display:inline-flex}.song-detail{scroll-margin-top:1rem}}@media screen{.song-detail .song-content{padding:1.5rem 1.25rem;font-family:Cascadia Code,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.95rem}.song-detail .chord{font-family:inherit;font-size:.95em;font-weight:700}}@media (width<=40rem){.app-header__inner{grid-template-columns:minmax(0,1fr) auto;gap:.5rem;padding-top:.85rem;display:grid}.brand__name{font-size:1rem}.brand__mark{width:2rem;height:2rem;font-size:1.2rem}.auth-controls{grid-area:1/2;padding-bottom:0}.auth-button{max-width:8rem;padding:.45rem .55rem;font-size:.73rem}.app-nav{grid-column:1/-1;grid-template-columns:.9fr 1.4fr 1fr}.nav-button{gap:.3rem;min-width:0;padding-inline:.4rem;font-size:.85rem}.modal{border:0;border-radius:0;width:100%;height:100dvh;max-height:100dvh;margin:0}.modal__form{min-height:100%;padding:.85rem}.modal .song-settings__actions .button{flex:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}@page{size:A4;margin:8mm}@media print{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-ink:#000;--color-muted:#333;--color-primary:#000;--color-primary-strong:#000;--color-surface:#fff;--color-surface-soft:#fff;--color-canvas:#fff;--color-primary-soft:#fff;--color-accent:#000;--border:#bbb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html,body{color:#000;background:#fff;min-height:auto}#app-root{display:none!important}#print-root{display:block!important}.print-header{border-bottom:1px solid #555;margin-bottom:4mm;padding-bottom:2mm}.print-header h1{margin-bottom:.5mm;font-size:18pt}.print-header__eyebrow{letter-spacing:.12em;text-transform:uppercase;margin-bottom:1mm;font-size:8pt;font-weight:700}.print-header__date{margin:0;font-size:10pt}.print-song+.print-song{break-before:page;page-break-before:always}.song-sheet{box-shadow:none;background:#fff;border:0;border-radius:0;overflow:visible}.song-sheet__header{background:#fff;border-bottom:1px solid #bbb;padding:0 0 2.5mm}.song-sheet__title{margin-bottom:.5mm;font-size:16pt}.song-content{padding:3mm 0 0;overflow:visible}.song-section{break-after:avoid-column;page-break-after:avoid;margin:3mm 0 1.5mm;font-size:8pt}.song-line{break-inside:avoid-column;page-break-inside:avoid;min-height:6.6mm;margin-bottom:.5mm;font-size:10pt}.chord{color:#000;font-size:8.5pt}.print-song[data-print-layout=compact] .song-section{margin:2mm 0 1mm}.print-song[data-print-layout=compact] .song-line{min-height:5.2mm;margin-bottom:.25mm;font-size:9pt;line-height:1.2}.print-song[data-print-layout=compact] .chord{min-height:.95rem;font-size:8pt}.print-song[data-print-layout=columns] .song-content,.print-song[data-print-layout=dense] .song-content{column-count:2;column-rule:.2mm solid #ddd;column-gap:7mm}.print-song[data-print-layout=columns] .song-line,.print-song[data-print-layout=dense] .song-line{min-height:4.8mm;margin-bottom:.25mm;font-size:8.5pt;line-height:1.15}.print-song[data-print-layout=columns] .chord,.print-song[data-print-layout=dense] .chord{min-height:.85rem;font-size:7.5pt}.print-song[data-print-layout=columns] .lyric,.print-song[data-print-layout=dense] .lyric{white-space:pre-wrap}.print-song[data-print-layout=columns] .song-chunk--lyrics-only,.print-song[data-print-layout=dense] .song-chunk--lyrics-only{min-width:0;padding-top:.85rem}.print-song[data-print-layout=dense] .song-section{margin:1.5mm 0 .7mm;font-size:7pt}.print-song[data-print-layout=dense] .song-sheet__header{padding-bottom:1mm}.print-song[data-print-layout=dense] .song-sheet__title{font-size:14pt}.print-song[data-print-layout=dense] .song-content{padding-top:1mm}.print-song[data-print-layout=dense] .song-line{min-height:3.6mm;font-size:7pt;line-height:1.05}.print-song[data-print-layout=dense] .chord{min-height:.62rem;font-size:6.5pt;line-height:1}.print-song[data-print-layout=dense] .song-chunk--lyrics-only{padding-top:.62rem}}
