.sidebar{width:240px;background-color:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow-y:auto;transition:width .3s ease}.sidebar.collapsed{width:70px}.sidebar-header{padding:20px;border-bottom:1px solid var(--border-color);display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar.collapsed .sidebar-header{padding:20px 12px;justify-content:center}.sidebar-title{font-size:20px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden}.sidebar.collapsed .sidebar-title{font-size:24px}.sidebar-toggle{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:14px;padding:4px;display:flex;align-items:center;justify-content:center;transition:color .2s ease}.sidebar-toggle:hover{color:var(--text-primary)}.current-workspace{padding:12px 20px;border-bottom:1px solid var(--border-color);display:flex;flex-direction:column;gap:4px}.workspace-label{font-size:11px;text-transform:uppercase;color:var(--text-secondary);font-weight:600;letter-spacing:.5px}.workspace-name{font-size:14px;color:var(--text-primary);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-nav{flex:1;padding:12px;display:flex;flex-direction:column;gap:4px}.sidebar-logout{margin:auto 16px 16px;padding:9px 12px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-secondary);cursor:pointer}.nav-item-nested{margin-left:14px;font-size:13px}.sidebar.collapsed .sidebar-nav{padding:12px 8px}.nav-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:6px;color:var(--text-secondary);text-decoration:none;transition:all .2s ease;white-space:nowrap}.sidebar.collapsed .nav-item{justify-content:center;padding:12px 8px}.nav-item:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.nav-item.active{background-color:var(--accent-primary);color:#fff}.nav-icon{font-size:18px;width:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.nav-label{font-size:14px;font-weight:500;overflow:hidden}.sidebar.collapsed .nav-label{display:none}.sidebar--drawer{position:fixed;top:0;bottom:0;left:0;z-index:45;width:min(300px,85vw);padding-bottom:env(safe-area-inset-bottom);transform:translate(-100%);visibility:hidden;transition:transform .25s ease,visibility 0s linear .25s;box-shadow:12px 0 32px #00000080}.sidebar--drawer.is-open{transform:none;visibility:visible;transition:transform .25s ease}.sidebar--drawer .nav-item{min-height:48px}.sidebar--drawer .sidebar-toggle{min-width:44px;min-height:44px;font-size:18px}@media (prefers-reduced-motion: reduce){.sidebar,.sidebar--drawer,.sidebar--drawer.is-open{transition:none}}.layout{display:flex;width:100vw;height:100vh;overflow:hidden}.main-content{flex:1;overflow-y:auto;background-color:var(--bg-primary)}.layout--phone{flex-direction:column}.app-topbar{display:flex;align-items:center;gap:12px;min-height:52px;padding:4px 12px;padding-top:max(4px,env(safe-area-inset-top));background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0}.app-menu-button{min-height:44px;min-width:44px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:1px solid var(--border-color);border-radius:8px;background:transparent;color:var(--text-primary);font:inherit;font-size:1rem;cursor:pointer}.app-topbar-title{min-width:0;overflow:hidden;color:var(--text-primary);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.app-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;border:none;background:#0000008c;cursor:default}.layout--phone .main-content{min-height:0}.app-menu-button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.workspaces-view{padding:24px;max-width:1400px;margin:0 auto}.view-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.view-header h1{font-size:28px;font-weight:600;color:var(--text-primary)}.header-actions{display:flex;gap:12px}.btn-primary{background-color:var(--accent-primary);color:#fff;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500}.btn-secondary{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500;transition:all .2s}.btn-secondary:hover{background-color:var(--bg-tertiary);border-color:var(--accent-primary)}.workspaces-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.workspace-card{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:24px;cursor:pointer;transition:all .2s ease;position:relative}.workspace-card:hover{border-color:var(--accent-primary);transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.workspace-icon{font-size:48px;margin-bottom:16px}.workspace-name{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.workspace-description{font-size:13px;color:var(--text-secondary);margin-bottom:12px;line-height:1.4}.workspace-stats{display:flex;flex-direction:column;gap:6px}.stat-item{font-size:13px;color:var(--text-secondary)}.cloud-badge{font-size:12px;color:var(--accent-primary);font-weight:500}.workspace-info{font-size:14px;color:var(--text-secondary)}.workspace-actions{position:absolute;top:12px;right:12px;display:flex;gap:8px}.btn-export,.btn-delete{background-color:transparent;border:1px solid var(--border-color);color:var(--text-secondary);width:36px;height:36px;border-radius:6px;font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.btn-export:hover{background-color:#007bff1a;border-color:var(--accent-primary);color:var(--accent-primary)}.btn-delete:hover{background-color:#dc35451a;border-color:#d9534f;color:#d9534f}.empty-state{grid-column:1 / -1;text-align:center;padding:60px 20px;color:var(--text-secondary)}.empty-state p{margin:8px 0}.loading{display:flex;justify-content:center;align-items:center;height:400px;font-size:18px;color:var(--text-secondary)}.error-message{background-color:var(--danger);color:#fff;padding:12px 16px;border-radius:6px;margin-bottom:20px}.input-with-button{display:flex;gap:12px}.input-with-button input{flex:1}.btn-browse{padding:.75rem 1rem;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:8px;font-size:14px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .2s ease;white-space:nowrap}.modal-description{color:var(--text-secondary);margin-bottom:1.5rem;font-size:14px}.import-progress{margin:1.5rem 0}.progress-bar{width:100%;height:8px;background-color:var(--bg-secondary);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background-color:var(--accent-primary);transition:width .3s ease}.progress-message{margin-top:.5rem;font-size:14px;color:var(--text-secondary);text-align:center}.ch-toggle{position:relative;z-index:1;min-height:40px;display:inline-flex;align-items:center;flex-wrap:wrap;gap:.15rem .5rem;padding:.2rem .6rem;border:1px solid var(--border-color);border-radius:999px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.85rem;font-variant-numeric:tabular-nums;text-align:left;cursor:pointer}.ch-toggle:hover,.ch-toggle[aria-expanded=true]{border-color:var(--accent-primary);color:var(--text-primary)}.ch-count{color:var(--text-primary);font-weight:600}.ch-next{color:#e8b04b}.ch-caret{font-size:.75rem}.ch-list{padding:.25rem .5rem .75rem}.ch-list ul{list-style:none;margin:0;padding:0;border-left:2px solid var(--border-color)}.ch-list li{display:flex;flex-direction:column;gap:.1rem;min-height:40px;padding:.45rem 0 .45rem .75rem;font-variant-numeric:tabular-nums}.ch-when,.ch-what{display:flex;align-items:baseline;flex-wrap:wrap;gap:.1rem .5rem}.ch-list li.is-upcoming{border-left:2px solid #e8b04b;margin-left:-2px}.ch-list time{color:var(--text-secondary);font-size:.85rem}.ch-list a{color:var(--text-primary);font-weight:600;text-decoration:none}.ch-list a:hover{color:var(--accent-primary);text-decoration:underline}.ch-meta{color:var(--text-secondary);font-size:.85rem}.ch-badge{padding:0 .45rem;border:1px solid #e8b04b;border-radius:999px;color:#e8b04b;font-size:.75rem;font-weight:600}.ch-more{min-height:40px;margin-left:.75rem;padding:0;border:none;background:none;color:var(--accent-primary);font:inherit;font-size:.9rem;cursor:pointer}.ch-toggle:focus-visible,.ch-list :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.ssp-panel{display:inline-flex;gap:.4rem;align-items:center}.ssp-trigger{font-size:.72rem;font-weight:700;padding:.25rem .55rem;border-radius:4px;cursor:pointer;border:1px solid;transition:background .15s,transform .1s;line-height:1.4;letter-spacing:.02em}.ssp-trigger:hover{transform:translateY(-1px)}.ssp-trigger-ze{background:#ffa0001a;border-color:#ffa0008c;color:#b07000}.ssp-trigger-ze:hover{background:#ffa00033}.ssp-trigger-csecsy{background:#007bff14;border-color:#007bff66;color:var(--accent-primary, #007bff)}.ssp-trigger-csecsy:hover{background:#007bff2e}.ssp-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;z-index:2000;display:flex;align-items:center;justify-content:center}.ssp-modal{background:var(--bg-primary, #1a1a2e);border:1px solid var(--border-color, #2a2a4a);border-radius:12px;padding:1.75rem;width:92vw;max-width:960px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.ssp-title{margin:0;font-size:1.25rem;color:var(--text-primary, #e0e0f0)}.ssp-search-bar{display:flex;gap:.75rem}.ssp-search-input{flex:1;padding:.6rem 1rem;font-size:1rem;border:2px solid var(--border-color, #2a2a4a);border-radius:8px;background:var(--bg-secondary, #252545);color:var(--text-primary, #e0e0f0);transition:border-color .2s}.ssp-search-input:focus{outline:none;border-color:var(--accent-primary, #007bff)}.ssp-status{color:var(--text-secondary, #888);font-style:italic;font-size:.9rem;margin:0}.ssp-error{color:#e05555;background:#dc35451a;border-radius:6px;padding:.5rem .9rem;font-size:.9rem;margin:0}.ssp-results-layout{display:grid;grid-template-columns:240px 1fr;gap:1rem;min-height:52vh}.ssp-results-list{overflow-y:auto;border:1px solid var(--border-color, #2a2a4a);border-radius:8px;padding:.4rem}.ssp-result{padding:.65rem .75rem;border-radius:6px;cursor:pointer;margin-bottom:.2rem;transition:background .15s;border:1px solid transparent}.ssp-result:hover{background:var(--bg-secondary, #252545)}.ssp-result.active{background:#007bff1a;border-color:#007bff4d}.ssp-result-title{font-weight:600;font-size:.9rem;color:var(--text-primary, #e0e0f0)}.ssp-variants{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.ssp-variant{display:flex;align-items:center;gap:.3rem;font-size:.82rem;color:var(--text-secondary, #888);cursor:pointer}.ssp-preview-wrap{display:flex;flex-direction:column;gap:.4rem}.ssp-iframe{width:100%;height:52vh;border:1px solid var(--border-color, #2a2a4a);border-radius:8px;background:#fff}.ssp-modal>.ssp-preview-wrap .ssp-iframe{height:58vh}.ssp-open-link{font-size:.82rem;color:var(--accent-primary, #007bff);text-decoration:none}.ssp-open-link:hover{text-decoration:underline}.ssp-preview-placeholder{display:flex;align-items:center;justify-content:center;height:52vh;border:1px dashed var(--border-color, #2a2a4a);border-radius:8px;color:var(--text-secondary, #888);font-size:.9rem}.ssp-actions{display:flex;justify-content:flex-end;gap:.75rem;padding-top:.75rem;border-top:1px solid var(--border-color, #2a2a4a);margin-top:auto}@media (max-width: 640px){.ssp-results-layout{grid-template-columns:1fr}.ssp-iframe{height:38vh}}.view-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:32px}.btn-back{background-color:transparent;color:var(--text-secondary);padding:8px 12px;border-radius:4px;font-size:14px;margin-bottom:12px;display:inline-block}.btn-back:hover{background-color:var(--bg-secondary);color:var(--text-primary)}.btn-edit,.btn-delete{background-color:#6366f11a;border:1px solid rgba(99,102,241,.3);color:#818cf8;padding:8px 12px;border-radius:6px;font-size:18px;cursor:pointer;transition:all .2s ease;opacity:.7;flex-shrink:0;min-width:42px;text-align:center}.btn-edit:hover,.btn-delete:hover{opacity:1;transform:scale(1.1)}.btn-edit:hover{background-color:#6366f133;border-color:#818cf8}.btn-delete{background-color:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.btn-delete:hover{background-color:#ef444433;border-color:#ef4444}.btn-edit:active,.btn-delete:active{transform:scale(.95)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.header-actions{display:flex;gap:12px;align-items:center}.search-bar{margin-bottom:16px}.search-input{width:100%;max-width:500px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:14px;transition:all .2s ease}.search-input::placeholder{color:var(--text-secondary)}.btn-icon{background:transparent;border:none;color:var(--text-secondary);padding:4px 8px;cursor:pointer;font-size:16px;transition:all .2s ease;border-radius:4px}.btn-icon:hover{background:#ffffff1a;color:var(--text-primary)}.pcs-view{--pcs-mark: #e8b04b;max-width:960px;margin:0 auto;padding:2rem;color:var(--text-primary)}.pcs-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.25rem}.pcs-header h1{margin:0;font-size:2rem}.pcs-header .btn-primary{min-height:44px}.pcs-summary,.pcs-muted{color:var(--text-secondary);font-variant-numeric:tabular-nums}.pcs-error{color:#fca5a5}.pcs-tools{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem}.pcs-search{flex:1 1 260px;min-height:44px;padding:0 .9rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font:inherit}.pcs-sort{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary);font-size:.9rem}.pcs-sort select{min-height:44px;padding:0 .6rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font:inherit}.pcs-filter{display:flex;align-items:center;gap:.5rem;min-height:44px;color:var(--text-secondary);font-size:.9rem;cursor:pointer}.pcs-filter input{width:20px;height:20px;accent-color:var(--accent-primary)}.pcs-group+.pcs-group{margin-top:1.25rem}.pcs-letter{margin:0 0 .25rem .5rem;color:var(--pcs-mark);font-size:1.5rem;font-weight:800;line-height:1.2}.pcs-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.pcs-item{border-bottom:1px solid var(--border-color)}.pcs-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto 44px;align-items:center;gap:.75rem;min-height:60px;padding:.5rem .25rem .5rem .5rem}.pcs-main .ch-toggle{margin-top:.35rem}.pcs-never{margin:.2rem 0 0;color:var(--text-secondary);font-size:.85rem;font-style:italic}.pcs-row:hover{background:var(--bg-secondary)}.pcs-main{min-width:0}.pcs-main h3{margin:0;font-size:1.05rem;font-weight:650}.pcs-open{max-width:100%;padding:0;border:none;background:none;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.pcs-open:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.pcs-open:focus-visible{outline:none}.pcs-open:focus-visible:after{outline:2px solid var(--accent-primary);outline-offset:-2px;border-radius:6px}.pcs-details{margin:.1rem 0 0;overflow:hidden;color:var(--text-secondary);font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.pcs-facts{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem;margin:0;color:var(--text-secondary);font-size:.85rem;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.pcs-source{color:var(--text-primary);font-weight:600}.pcs-missing{font-style:italic}.pcs-edit{position:relative;z-index:1;width:44px;height:44px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-secondary);font-size:1.1rem;cursor:pointer}.pcs-edit:hover,.pcs-edit:focus-visible{border-color:var(--border-color);color:var(--text-primary)}.pcs-dialog{margin:auto;width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);color:var(--text-primary)}.pcs-dialog::backdrop{background:#0009}.pcs-dialog form{display:flex;flex-direction:column;gap:.4rem;padding:1.25rem}.pcs-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.25rem}.pcs-dialog h2{font-size:1.2rem}.pcs-dialog label{display:block;margin-top:.5rem;margin-bottom:.3rem;color:var(--text-secondary);font-size:.9rem}.pcs-optional{font-size:.8rem;opacity:.8}.pcs-dialog input,.pcs-dialog textarea{width:100%;min-height:44px;padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font:inherit}.pcs-dialog textarea{resize:vertical}.pcs-dialog-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 1rem}.pcs-score-search{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.pcs-score-search h3{margin-bottom:.5rem;color:var(--text-secondary);font-size:.95rem;font-weight:600}.pcs-dialog-foot{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.pcs-dialog-foot button{min-height:44px}.pcs-spacer{flex:1}.pcs-icon{min-width:40px;min-height:40px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-secondary);font:inherit;cursor:pointer}.pcs-icon:hover{border-color:var(--border-color);color:var(--text-primary)}.pcs-link-danger{padding:0 .25rem;border:none;background:none;color:#fca5a5;font:inherit;cursor:pointer}.pcs-link-danger:hover{text-decoration:underline}.pcs-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;flex-basis:100%;color:#fca5a5}.pcs-btn-danger{padding:0 1rem;border:1px solid #ef4444;border-radius:8px;background:#ef4444;color:#fff;font:inherit;font-weight:600;cursor:pointer}.pcs-view :focus-visible,.pcs-dialog :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width: 640px){.pcs-view{padding:1rem}.pcs-header h1{font-size:1.6rem}.pcs-row{grid-template-columns:minmax(0,1fr) 44px}.pcs-facts{grid-column:1;grid-row:2;flex-direction:row;gap:.5rem;align-items:baseline}.pcs-edit{grid-column:2;grid-row:1 / span 2}}:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors: active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--scale-factor));width:100%;min-width:calc(180px * var(--scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) #888;border-radius:calc(2px * var(--scale-factor));padding:calc(6px * var(--scale-factor));margin-left:calc(5px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors: active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;top:0;right:0;bottom:0;left:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;top:100%;right:0;bottom:0;left:0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer .endOfContent.active{top:0}.lp-panel{display:flex;flex-direction:column;gap:10px;width:280px;max-height:min(70vh,560px);overflow-y:auto;color:var(--text-primary);font-size:.9rem}.lp-group h3{margin-bottom:4px;color:var(--text-secondary);font-size:.8rem;font-weight:600}.lp-group ul,.lp-deleted ul,.lp-versions{list-style:none;margin:0;padding:0}.lp-row{display:flex;align-items:center;gap:6px;min-height:40px;border-radius:6px}.lp-row input[type=checkbox]{flex-shrink:0;width:20px;height:20px;margin:0 4px;accent-color:var(--accent-primary)}.lp-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}button.lp-name{min-height:36px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer}button.lp-name:hover{border-color:var(--border-color)}.lp-row.is-active button.lp-name{border-color:var(--accent-primary);background:#3b82f626;font-weight:600}.lp-tag{flex-shrink:0;padding:1px 7px;border:1px solid var(--border-color);border-radius:999px;color:var(--text-secondary);font-size:.75rem}.lp-icon{min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-secondary);font:inherit;cursor:pointer;list-style:none}.lp-icon::-webkit-details-marker{display:none}.lp-icon:hover{border-color:var(--border-color);color:var(--text-primary)}.lp-menu{position:relative;flex-shrink:0}.lp-menu-items{position:absolute;right:0;top:calc(100% + 4px);z-index:5;min-width:200px;display:flex;flex-direction:column;padding:4px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 10px 28px #00000073}.lp-menu-items button{min-height:40px;padding:0 10px;border:none;border-radius:6px;background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.lp-menu-items button:hover{background:var(--bg-tertiary)}.lp-menu-items .lp-danger{color:#fca5a5}.lp-add,.lp-link{min-height:36px;padding:0 8px;border:none;background:transparent;color:var(--accent-primary);font:inherit;cursor:pointer}.lp-add:hover,.lp-link:hover{text-decoration:underline}.lp-deleted summary{min-height:36px;display:flex;align-items:center;color:var(--text-secondary);cursor:pointer}.lp-deleted li{display:flex;align-items:center;justify-content:space-between;gap:8px}.lp-notice{display:flex;align-items:center;gap:6px;padding:6px 4px 6px 10px;border-radius:6px;border:1px solid var(--border-color);background:var(--bg-tertiary)}.lp-notice span{flex:1}.lp-notice--update{border-color:#e8b04b}.lp-notice--conflict,.lp-notice--error{border-color:#fca5a5}.lp-error{color:#fca5a5}.lp-muted{color:var(--text-secondary)}.lp-history{display:flex;flex-direction:column;gap:8px;padding-top:8px;border-top:1px solid var(--border-color)}.lp-history-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.lp-history-head h3{font-size:.9rem}.lp-preview{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px;border:1px solid #e8b04b;border-radius:6px}.lp-preview span{flex-basis:100%}.lp-versions button{width:100%;min-height:44px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.lp-versions button:hover{border-color:var(--border-color)}.lp-versions button.is-current{border-color:#e8b04b}.lp-version-when{color:var(--text-secondary);font-size:.8rem;font-variant-numeric:tabular-nums}.lp-dialog{margin:auto;width:min(420px,calc(100vw - 32px));padding:20px;border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);color:var(--text-primary)}.lp-dialog::backdrop{background:#0009}.lp-dialog form{display:flex;flex-direction:column;gap:8px}.lp-dialog h2{margin-bottom:4px;font-size:1.15rem}.lp-dialog label{margin-top:4px;color:var(--text-secondary);font-size:.85rem}.lp-dialog input{min-height:44px;padding:0 10px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font:inherit}.lp-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.lp-dialog-actions button{min-height:44px}.lp-dialog .btn-danger{padding:0 16px;border:1px solid #ef4444;border-radius:8px;background:#ef4444;color:#fff;font:inherit;font-weight:600;cursor:pointer}.lp-panel :focus-visible,.lp-dialog :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width: 768px){.layer-panel.lp-panel:not(.read-only){position:fixed;left:0;right:0;bottom:0;top:auto;width:auto;max-width:none;max-height:45vh;margin:0;z-index:40;padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-radius:12px 12px 0 0;background:var(--bg-secondary);box-shadow:0 -12px 32px #00000080}}.annotator-toolbar{position:absolute;left:20px;top:20px;z-index:35;display:flex;gap:6px;align-items:center;flex-wrap:wrap;max-width:calc(100% - 40px);padding:8px;border-radius:8px;background:#111827d9;border:1px solid rgba(148,163,184,.35)}.annotator-toolbar.in-header{position:static;left:auto;top:auto;z-index:auto;max-width:none;margin-left:8px;padding:0;border:none;border-radius:0;background:transparent}.annotator-toolbar .sep{width:1px;height:20px;background:#94a3b873;margin:0 4px}.annotator-toolbar button,.layer-row button{border:1px solid #374151;background:#1f2937;color:#e5e7eb;border-radius:6px;padding:5px 9px;font-size:12px;cursor:pointer}.annotator-toolbar button.active,.layer-row button.active{background:#2563eb;border-color:#2563eb;color:#fff}.annotator-toolbar button:disabled{opacity:.5;cursor:not-allowed}.annotator-toolbar button.danger{border-color:#7f1d1d;color:#fecaca;background:#3f1515}.annotator-toolbar button.danger:disabled{border-color:#374151;color:#94a3b8;background:#1f2937}.layer-panel{position:absolute;right:20px;top:20px;z-index:35;display:flex;flex-direction:column;gap:6px;width:240px;padding:10px;border-radius:8px;background:#111827d9;border:1px solid rgba(148,163,184,.35)}.layer-panel-toggle{position:absolute;right:20px;top:20px;z-index:36;border:1px solid #334155;background:#0f172ae6;color:#e2e8f0;border-radius:7px;padding:6px 10px;font-size:12px;cursor:pointer}.layer-panel-toggle:hover{background:#1e293bf2}.layer-panel.read-only{width:220px}.layer-panel-title{font-size:12px;color:#cbd5e1;margin-bottom:4px;letter-spacing:.02em}.layer-row{display:grid;grid-template-columns:20px 1fr auto;gap:6px;align-items:center}.layer-row .danger{color:#fca5a5;border-color:#7f1d1d;background:#3f1515}.layer-name-readonly{color:#e5e7eb;font-size:12px;padding:0 4px}.annotation-overlay{position:absolute;z-index:20;pointer-events:none}.annotator-scroll-locked{touch-action:auto;overscroll-behavior:contain}.annotation-overlay.editable{pointer-events:auto}.annotation-svg{position:absolute;top:0;right:0;bottom:0;left:0}.annotation-bbox{fill:#0f172a0f;stroke:#1e293b61;stroke-width:1;stroke-dasharray:4 3;pointer-events:none}.annotation-bbox-selected{stroke:#2563ebe6;fill:#2563eb14}.annotation-selected{filter:drop-shadow(0 0 1px rgba(37,99,235,.85))}.annotation-text{position:absolute;min-width:40px;max-width:380px;white-space:pre-wrap;transform:translate(-1px,-1px);padding:2px 4px;border-radius:4px;background:#ffffff59;pointer-events:auto;-webkit-user-select:none;user-select:none}.annotation-text.with-frame{border:1px dashed rgba(15,23,42,.35)}.annotation-text.selected{border-color:#2563ebf2;background:#dbeafe99}.annotation-text.editable{cursor:move}.annotation-text-editor{position:absolute;min-width:120px;min-height:34px;max-width:420px;border:1px solid #2563eb;border-radius:6px;padding:6px;color:#111827;background:#fffffff5;resize:both;z-index:40}.annotation-delete-chip{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:999px;border:1px solid #991b1b;background:#7f1d1df2;color:#fee2e2;font-size:14px;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;z-index:45;padding:0}.annotation-delete-chip:hover{background:#b91c1cfa}.annotation-delete-chip.selected{background:#dc2626;border-color:#b91c1c}@media (max-width: 1200px){.layer-panel{width:210px}}@media (max-width: 768px){.annotator-toolbar,.layer-panel{position:static;width:100%;max-width:none;margin-bottom:8px}}rect.annotation-fresh{fill:none;stroke:#e8b04b;stroke-width:2;rx:4;animation:annotation-fresh 3s ease-out forwards}.annotation-text.annotation-fresh{outline:2px solid #e8b04b;outline-offset:2px;border-radius:3px}@keyframes annotation-fresh{0%,70%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){rect.annotation-fresh{animation:none}}.practice-view{--stage-bg: #121417;--loop: #e8b04b;--loop-soft: rgba(232, 176, 75, .22);--transport-bg: #1c1f24;display:flex;flex-direction:column;height:100vh;overflow:hidden;font-variant-numeric:tabular-nums}.btn-nav{background-color:#fff3;color:#fff;padding:8px 16px;border-radius:6px;font-size:14px;font-weight:500;border:1px solid rgba(255,255,255,.3);transition:all .2s ease}.btn-nav:hover:not(:disabled){background-color:#ffffff4d;transform:translateY(-1px)}.btn-nav:disabled{opacity:.3;cursor:not-allowed}.concert-position{display:flex;align-items:center;gap:10px}.position-text{font-size:15px;font-weight:600;color:#fff;white-space:nowrap}.btn-back-to-setlist{background-color:#fff3;color:#fff;padding:6px 12px;border-radius:6px;font-size:13px;border:1px solid rgba(255,255,255,.3);transition:all .2s ease;white-space:nowrap}.btn-back-to-setlist:hover{background-color:#ffffff4d}.practice-header{display:flex;align-items:center;gap:20px;padding:10px 24px;background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.practice-header--concert{background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border-bottom:2px solid var(--accent-primary);gap:12px;padding:8px 16px}.practice-header--concert .piece-info h1{font-size:18px;color:#fff;margin-bottom:2px}.practice-header--concert .piece-info .composer{color:#fffc}.practice-header-left{display:flex;align-items:center;gap:8px;flex-shrink:0}.btn-back--concert{color:#fff!important;border:1px solid rgba(255,255,255,.3)!important;background-color:#ffffff26!important}.btn-back--concert:hover{background-color:#ffffff4d!important;color:#fff!important}.badge--concert{background-color:#fff3!important;color:#fff!important;border:1px solid rgba(255,255,255,.3)}.btn-back{background-color:transparent;color:var(--text-secondary);padding:8px 12px;border-radius:4px;font-size:14px}.btn-back:hover{background-color:var(--bg-primary);color:var(--text-primary)}.piece-info{flex:1}.piece-info h1{font-size:24px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.piece-info .composer{font-size:14px;color:var(--text-secondary);font-style:italic}.piece-meta-info{display:flex;gap:8px}.piece-meta-info .badge{padding:6px 12px;border-radius:12px;font-size:12px;font-weight:500;background-color:#6366f133;color:#818cf8}.annotator-toolbar-host{display:flex;align-items:center;flex:1;min-width:0}.btn-annotator-toggle{display:inline-flex;align-items:center;gap:6px;min-height:36px;background:transparent;border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);cursor:pointer;padding:0 12px;font-size:13px;line-height:1}.btn-annotator-toggle:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent-primary)}.score-selector,.video-selector{display:flex;gap:8px;flex-wrap:wrap}.score-option,.video-option{padding:8px 70px 8px 12px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;display:flex;align-items:center;gap:4px}.score-option:hover,.video-option:hover{border-color:var(--accent-primary);color:var(--text-primary)}.score-option.active,.video-option.active{background-color:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.score-option .recommended,.video-option .recommended{margin-left:4px}.score-option .option-actions,.video-option .option-actions{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;gap:2px;z-index:10;background:transparent;border:none;padding:0}.score-option .btn-edit-inline,.video-option .btn-edit-inline,.score-option .btn-delete-inline,.video-option .btn-delete-inline{background-color:#6366f11a;border:1px solid rgba(99,102,241,.3);color:#818cf8;padding:4px 8px;border-radius:4px;font-size:14px;cursor:pointer;opacity:.8;transition:all .2s ease;flex-shrink:0}.score-option .btn-delete-inline,.video-option .btn-delete-inline{background-color:#ef44441a;border:1px solid rgba(239,68,68,.3);color:#ef4444}.score-option .btn-edit-inline:hover,.video-option .btn-edit-inline:hover{opacity:1;background-color:#6366f133;border-color:#818cf8;transform:scale(1.05)}.score-option .btn-delete-inline:hover,.video-option .btn-delete-inline:hover{opacity:1;background-color:#ef444433;border-color:#ef4444;transform:scale(1.05)}.score-option.active .btn-edit-inline,.video-option.active .btn-edit-inline{background-color:#fff3;border-color:#fff6;color:#fff}.score-option.active .btn-edit-inline:hover,.video-option.active .btn-edit-inline:hover{background-color:#6366f14d;border-color:#818cf8;color:#818cf8}.score-option.active .btn-delete-inline,.video-option.active .btn-delete-inline{background-color:#fff3;border-color:#fff6;color:#fff}.score-option.active .btn-delete-inline:hover,.video-option.active .btn-delete-inline:hover{background-color:#ef44444d;border-color:#ef4444;color:#ef4444}.pdf-viewer{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:flex-start;overflow:auto;padding:16px}.pdf-viewer .react-pdf__Document{display:flex;flex-direction:column;align-items:center}.pdf-document-layer{position:relative}.pdf-viewer .react-pdf__Page__canvas{display:block;box-shadow:0 2px 24px #0009}.pdf-loading{color:var(--text-secondary);font-size:14px}.pdf-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:40px 20px;color:#ef4444}.pdf-error .file-path{font-family:monospace;font-size:12px;color:var(--text-secondary);background-color:#ef44441a;padding:8px 12px;border-radius:4px}.pdf-error small{color:var(--text-secondary);font-size:12px}.no-pdf{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:12px;text-align:center;padding:40px 20px}.no-pdf .file-path{font-family:monospace;font-size:12px;color:var(--accent-primary);background-color:#6366f11a;padding:8px 12px;border-radius:4px;margin:8px 0}.no-pdf .info-text{font-size:13px;max-width:400px;line-height:1.6}.video-player{position:relative;aspect-ratio:16 / 9;background-color:#000;overflow:hidden}.video-player iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.btn-secondary{padding:8px 16px;background-color:var(--bg-primary);border:1px solid var(--border-color);color:var(--text-secondary);border-radius:4px;font-size:13px;cursor:pointer;transition:all .2s ease}.btn-secondary:hover{border-color:var(--accent-primary);color:var(--text-primary)}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:var(--text-secondary);min-height:300px}.empty-state p{margin-bottom:20px;font-size:16px}.empty-state-buttons{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.btn-primary{background-color:var(--accent-primary);color:#fff;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500;border:none;cursor:pointer;transition:all .2s ease}.btn-primary:hover{background-color:var(--accent-secondary)}.loading{display:flex;align-items:center;justify-content:center;height:100vh;font-size:16px;color:var(--text-secondary)}.modal-content{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.modal-content h2{margin:0 0 1.5rem;font-size:1.8rem;color:var(--text-primary)}.form-group input,.form-group textarea{width:100%;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:1rem;font-family:inherit}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #007bff1a}.form-group small{display:block;margin-top:.5rem;font-size:.85rem;color:var(--text-secondary)}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:400!important}.checkbox-label input[type=checkbox]{width:auto;cursor:pointer}.btn-secondary{background-color:transparent;border:1px solid var(--border-color);color:var(--text-primary);padding:12px 24px;border-radius:6px;font-size:14px;font-weight:500}.btn-secondary:hover{background-color:var(--bg-secondary)}.btn-add-item{background-color:var(--bg-secondary);border:1px dashed var(--border-color);color:var(--accent-primary);padding:12px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-add-item:hover{border-color:var(--accent-primary);background-color:#007bff0d}.file-drop-zone{border:2px dashed var(--border-color);border-radius:8px;padding:40px 20px;text-align:center;cursor:pointer;transition:all .3s ease;background-color:var(--bg-secondary)}.file-drop-zone:hover{border-color:var(--accent-primary);background-color:var(--bg-tertiary)}.file-drop-zone.dragging{border-color:var(--accent-primary);background-color:#007bff1a;transform:scale(1.02)}.file-drop-zone.has-file{border-style:solid;border-color:var(--accent-primary);background-color:#007bff0d}.drop-instructions{display:flex;flex-direction:column;align-items:center;gap:12px}.upload-icon{font-size:48px;opacity:.5}.drop-instructions p{color:var(--text-secondary);font-size:14px;margin:0}.file-info{display:flex;align-items:center;justify-content:center;gap:12px}.file-icon{font-size:32px}.file-name{font-size:14px;font-weight:500;color:var(--text-primary)}.btn-remove-file{background:none;border:none;color:var(--text-secondary);font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .2s ease}.btn-remove-file:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.audio-selector{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1rem}.audio-option{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--bg-tertiary);border:2px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s;position:relative}.audio-option.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.audio-option:hover:not(.active){border-color:var(--accent-primary);background:var(--bg-hover)}.yt-modal-content{max-width:720px!important}.yt-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.yt-modal-header h2{margin:0}.yt-mode-tabs{display:flex;gap:.25rem;background:var(--bg-secondary);border-radius:8px;padding:4px}.yt-tab{background:transparent;border:none;color:var(--text-secondary);padding:6px 14px;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .15s}.yt-tab.active{background:var(--accent-primary);color:#fff}.yt-tab:hover:not(.active){background:var(--bg-hover);color:var(--text-primary)}.yt-search-section{display:flex;flex-direction:column;gap:1rem}.yt-search-bar{display:flex;gap:.5rem}.yt-search-bar input{flex:1;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:1rem}.yt-search-bar input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #007bff1a}.yt-loading,.yt-no-results{text-align:center;color:var(--text-secondary);padding:2rem 0;font-size:.95rem}.yt-results-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.yt-result-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s}.yt-result-card:hover{border-color:var(--accent-primary);box-shadow:0 2px 12px #007bff1f}.yt-result-media{width:100%;aspect-ratio:16 / 9;background:#000;overflow:hidden;flex-shrink:0}.yt-result-thumb{width:100%;height:100%;object-fit:cover;display:block}.yt-result-iframe{width:100%;height:100%;border:none;display:block}.yt-result-info{padding:.6rem .75rem .25rem;flex:1;min-height:0}.yt-result-title{margin:0 0 .25rem;font-size:.85rem;font-weight:600;color:var(--text-primary);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.yt-result-channel{margin:0;font-size:.78rem;color:var(--text-secondary)}.yt-result-add{margin:.5rem .75rem .75rem;width:calc(100% - 1.5rem);font-size:.85rem;padding:6px 0}.yt-pagination{display:flex;justify-content:space-between;gap:.5rem;margin-top:.25rem}.practice-header .piece-info h1{font-size:18px;margin-bottom:0}.practice-header .piece-info .composer{font-size:13px}.btn-drawer-toggle{min-height:36px;padding:0 14px;border-radius:6px;border:1px solid var(--border-color);background:transparent;color:var(--text-primary);font-size:13px;white-space:nowrap;cursor:pointer}.btn-drawer-toggle:hover,.btn-drawer-toggle.active{border-color:var(--accent-primary);color:var(--accent-primary)}.practice-header--concert .btn-drawer-toggle{color:#fff;border-color:#fff6}.practice-body{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:var(--stage-bg)}.score-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.score-toolbar-group{display:inline-flex;align-items:center;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.score-toolbar-group button{min-width:36px;min-height:32px;padding:0 10px;background:transparent;border:none;color:var(--text-secondary);font-size:13px;cursor:pointer}.score-toolbar-group button+button{border-left:1px solid var(--border-color)}.score-toolbar-group button:hover:not(:disabled){color:var(--text-primary);background:var(--bg-tertiary)}.score-toolbar-group button.active{color:var(--text-primary);background:var(--bg-tertiary)}.score-toolbar-group button:disabled{opacity:.35;cursor:default}.score-toolbar .page-info,.score-toolbar .zoom-value{min-width:52px;text-align:center;font-size:13px;color:var(--text-primary);border-left:1px solid var(--border-color);border-right:1px solid var(--border-color);line-height:32px}.score-toolbar--annotator .score-toolbar-group{display:none}.practice-stage{position:relative;flex:1;min-height:0}.video-dock{position:absolute;right:16px;bottom:16px;width:356px;border-radius:8px;overflow:hidden;background:#000;border:1px solid var(--border-color);box-shadow:0 8px 28px #0000008c;z-index:5}.video-dock-bar{display:flex;align-items:center;gap:8px;padding:4px 4px 4px 10px;background:var(--transport-bg)}.video-dock-title{flex:1;min-width:0;font-size:12px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.video-dock-toggle{min-height:28px;padding:0 10px;border:none;border-radius:4px;background:transparent;color:var(--text-primary);font-size:12px;cursor:pointer}.video-dock-toggle:hover{background:var(--bg-tertiary)}.video-dock--closed{width:auto;overflow:visible}.video-dock--closed .video-dock-title{display:none}.video-dock--closed .video-player{position:fixed;left:-10000px;top:0;width:356px}.transport{display:flex;align-items:center;gap:14px;padding:10px 84px 10px 16px;min-height:64px;background:var(--transport-bg);border-top:1px solid var(--border-color)}.transport button{font-family:inherit;font-variant-numeric:tabular-nums}.transport-play{flex-shrink:0;width:44px;height:44px;border-radius:50%;border:none;background:var(--accent-primary);color:#fff;font-size:15px;cursor:pointer}.transport-play:hover{background:var(--accent-secondary)}.transport-seek,.transport-tempo,.transport-source{display:inline-flex;flex-shrink:0;border:1px solid var(--border-color);border-radius:6px;overflow:hidden}.transport-seek button,.transport-tempo button,.transport-source button{min-width:40px;min-height:40px;padding:0 10px;border:none;background:transparent;color:var(--text-secondary);font-size:13px;cursor:pointer}.transport-seek button+button,.transport-tempo button+button,.transport-source button+button{border-left:1px solid var(--border-color)}.transport-seek button:hover,.transport-tempo button:hover,.transport-source button:hover{background:var(--bg-tertiary);color:var(--text-primary)}.transport-tempo .tempo-value{min-width:58px;color:var(--text-primary)}.transport-source button.active{background:var(--bg-tertiary);color:var(--text-primary)}.transport-time{flex-shrink:0;min-width:40px;font-size:13px;color:var(--text-primary);text-align:right}.transport-time--total{text-align:left;color:var(--text-secondary)}.timeline{position:relative;flex:1;min-width:160px;padding-top:22px}.timeline-marks{position:absolute;top:0;left:0;right:0;height:20px}.rehearsal-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:2px solid var(--loop);color:var(--loop);font-size:11px;font-weight:700;line-height:1}.timeline-marks .rehearsal-mark{position:absolute;top:0;transform:translate(-50%);background:var(--transport-bg)}.timeline-track{position:relative;height:8px;border-radius:4px;background:var(--bg-tertiary)}.timeline-loop{position:absolute;top:-3px;bottom:-3px;background:var(--loop-soft);border-left:2px solid var(--loop);border-right:2px solid var(--loop)}.timeline-loop--on{background:#e8b04b66}.timeline-progress{position:absolute;top:0;left:0;bottom:0;border-radius:4px;background:var(--accent-primary);pointer-events:none}.timeline-input{position:absolute;top:-10px;right:0;bottom:-10px;left:0;width:100%;height:calc(100% + 20px);margin:0;opacity:0;cursor:pointer}.timeline:has(.timeline-input:focus-visible) .timeline-track{outline:2px solid var(--accent-primary);outline-offset:4px}.transport-loop{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.mark-button{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 10px 0 6px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-primary);font-size:13px;cursor:pointer}.mark-button:hover{border-color:var(--loop)}.transport .btn-loop{min-height:40px;padding:0 12px;border:1px solid var(--border-color);border-radius:6px;background:transparent;color:var(--text-secondary);font-size:13px;cursor:pointer}.transport .btn-loop:hover:not(:disabled){border-color:var(--loop);color:var(--text-primary)}.transport .btn-loop.active{background:var(--loop);border-color:var(--loop);color:#1b1405;font-weight:600}.transport .btn-loop:disabled{opacity:.4;cursor:default}.btn-loop-clear{width:32px;height:32px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer}.btn-loop-clear:hover{background:var(--bg-tertiary);color:var(--text-primary)}.transport-empty{display:flex;align-items:center;gap:16px;color:var(--text-secondary);font-size:14px}.transport :focus-visible,.score-toolbar :focus-visible,.video-dock :focus-visible,.practice-drawer :focus-visible,.btn-drawer-toggle:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.practice-drawer{position:absolute;top:0;right:0;bottom:0;width:min(420px,100%);overflow-y:auto;background:var(--bg-secondary);border-left:1px solid var(--border-color);box-shadow:-12px 0 32px #00000073;z-index:20}.drawer-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);z-index:1}.drawer-header h2{font-size:16px;font-weight:600;margin:0}.btn-drawer-close{width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer}.btn-drawer-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.drawer-section{padding:16px;border-bottom:1px solid var(--border-color)}.drawer-section h3{font-size:14px;font-weight:600;color:var(--text-primary);margin:0 0 10px}.drawer-notes{font-size:14px;line-height:1.6;color:var(--text-secondary);white-space:pre-wrap}@media (max-width: 900px){.transport{flex-wrap:wrap;row-gap:10px}.timeline{order:-1;flex-basis:100%}.transport-time{display:none}.video-dock{right:8px;bottom:8px}}@media (prefers-reduced-motion: reduce){.practice-view *{transition:none!important}}.concert-dialog{margin:auto;overflow:hidden;width:min(560px,calc(100vw - 32px));max-height:min(90vh,860px);padding:0;border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);color:var(--text-primary);box-shadow:0 24px 64px #0000008c}.concert-dialog::backdrop{background:#000000a6}.concert-dialog-form{display:flex;flex-direction:column;max-height:inherit}.concert-dialog-header,.concert-dialog-footer{display:flex;align-items:center;gap:.75rem;padding:1rem 1.5rem;background:var(--bg-secondary)}.concert-dialog-header{justify-content:space-between;border-bottom:1px solid var(--border-color)}.concert-dialog-header h2{margin:0;font-size:1.25rem;font-weight:650}.concert-dialog-close{width:36px;height:36px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer}.concert-dialog-close:hover{background:var(--bg-tertiary);color:var(--text-primary)}.concert-dialog-body{flex:1;min-height:0;overflow-y:auto;padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1.1rem}.concert-dialog-footer{justify-content:flex-end;border-top:1px solid var(--border-color)}.cd-field{display:flex;flex-direction:column;gap:.4rem;min-width:0;margin:0;padding:0;border:none}.cd-field>label,.cd-field>legend{padding:0;font-size:.9rem;font-weight:600;color:var(--text-primary)}.cd-field>legend{margin-bottom:.4rem}.cd-optional{font-weight:400;color:var(--text-secondary)}.concert-dialog input:not([type=radio]),.concert-dialog select{width:100%;min-height:42px;padding:0 .75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font:inherit;color-scheme:dark}.concert-dialog input:focus-visible,.concert-dialog select:focus-visible,.concert-dialog button:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.cd-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.cd-segmented{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border-color);border-radius:8px;overflow:hidden}.cd-segmented label{position:relative;display:flex;align-items:center;justify-content:center;min-height:40px;padding:0 .5rem;font-size:.875rem;color:var(--text-secondary);cursor:pointer;text-align:center}.cd-segmented label+label{border-left:1px solid var(--border-color)}.cd-segmented input{position:absolute;opacity:0;top:0;right:0;bottom:0;left:0;margin:0;cursor:pointer}.cd-segmented label:hover{color:var(--text-primary)}.cd-segmented label.is-selected{background:var(--accent-primary);color:#fff;font-weight:600}.cd-segmented label:has(input:focus-visible){outline:2px solid var(--accent-primary);outline-offset:-2px}.cd-lineup-list{list-style:none;margin:0 0 .75rem;padding:0;border-top:1px solid var(--border-color)}.cd-lineup-list li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px;align-items:center;gap:.75rem;min-height:44px;border-bottom:1px solid var(--border-color)}.cd-lineup-name{font-weight:600}.cd-lineup-instrument{color:var(--text-secondary)}.cd-lineup-remove{width:32px;height:32px;border:none;border-radius:50%;background:transparent;color:var(--text-secondary);cursor:pointer}.cd-lineup-remove:hover{background:var(--bg-tertiary);color:#ef4444}.cd-lineup-add{display:grid;grid-template-columns:1fr 1fr auto;gap:.5rem}.cd-lineup-add-btn{min-height:42px;padding:0 1rem;border:1px solid var(--border-color);border-radius:8px;background:transparent;color:var(--accent-primary);font-weight:600;cursor:pointer}.cd-lineup-add-btn:hover:not(:disabled){border-color:var(--accent-primary)}.cd-lineup-add-btn:disabled{color:var(--text-secondary);opacity:.6;cursor:not-allowed}.cd-hint{margin:0 0 .5rem;font-size:.875rem;color:var(--text-secondary)}.cd-hint a{color:var(--accent-primary)}.cd-error{margin:0;padding:.75rem 1rem;border-radius:8px;background:#ef44441f;color:#fca5a5}@media (max-width: 520px){.cd-row,.cd-lineup-add{grid-template-columns:1fr}.cd-segmented{grid-template-columns:repeat(2,1fr)}.cd-segmented label:nth-child(3){border-left:none}.cd-segmented label:nth-child(n+3){border-top:1px solid var(--border-color)}}.cd-layer-sets .cd-check{display:flex;align-items:center;gap:.6rem;min-height:40px;cursor:pointer}.cd-layer-sets .cd-check input{width:20px;height:20px;accent-color:var(--accent-primary)}.concerts-view{padding:2rem;max-width:1400px;margin:0 auto}.view-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.view-header>div{display:flex;align-items:center;gap:1rem}.view-header h1{margin:0;font-size:2rem;color:var(--text-primary)}.btn-back{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);padding:.5rem 1rem;border-radius:8px;cursor:pointer;font-size:.95rem;transition:all .2s}.btn-back:hover{background:var(--bg-tertiary);transform:translate(-2px)}.btn-export{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);padding:.6rem 2rem .6rem 1rem;border-radius:8px;font-size:.95rem;cursor:pointer;transition:all .2s;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .5rem center;background-size:1em}.btn-export:hover{background-color:var(--bg-tertiary);border-color:var(--accent-primary)}.btn-primary{background:var(--accent-primary);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-primary:hover{background:var(--accent-secondary);transform:translateY(-2px);box-shadow:0 4px 12px #007bff4d}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color);padding:.75rem 1.5rem;border-radius:8px;font-size:1rem;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:var(--bg-tertiary)}.view-toggle{display:flex;gap:.5rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:.25rem}.btn-view{background:transparent;border:none;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:.95rem;color:var(--text-secondary);transition:all .2s}.btn-view:hover{background:var(--bg-tertiary);color:var(--text-primary)}.btn-view.active{background:var(--accent-primary);color:#fff}.concert-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem;gap:1rem}.status-badge{padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:600;white-space:nowrap}.status-upcoming{background:#007bff26;color:#4da6ff}.status-completed{background:#28a74526;color:#5cb85c}.status-cancelled{background:#dc354526;color:#d9534f}.concert-meta{display:flex;gap:1.5rem;padding-top:1rem;border-top:1px solid var(--border-color);margin-top:1rem}.meta-item{font-size:.9rem;color:var(--text-secondary)}.btn-edit,.btn-delete{background:#ffffff1a;border:1px solid var(--border-color);color:var(--text-primary);padding:.5rem .75rem;border-radius:6px;cursor:pointer;font-size:1.2rem;transition:all .2s;flex-shrink:0;min-width:44px;height:44px;display:flex;align-items:center;justify-content:center}.btn-edit:hover{background:#007bff33;border-color:var(--accent-primary);color:var(--accent-primary);transform:scale(1.1)}.btn-delete:hover{background:#dc354533;border-color:#d9534f;color:#d9534f;transform:scale(1.1)}.empty-state{grid-column:1 / -1;text-align:center;padding:4rem 2rem;color:var(--text-secondary)}.empty-state p{margin:.5rem 0;font-size:1.1rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:16px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.modal h2{margin:0 0 1.5rem;font-size:1.8rem;color:var(--text-primary)}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;color:var(--text-primary);font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:1rem;font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #007bff1a}.form-group textarea{min-height:100px;resize:vertical}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem}.loading{text-align:center;padding:4rem;font-size:1.2rem;color:var(--text-secondary)}.error-message{background:#dc35451a;border:1px solid rgba(220,53,69,.3);color:#d9534f;padding:1rem;border-radius:8px;margin-bottom:1.5rem}.search-bar{margin-bottom:1.5rem}.search-input{width:100%;padding:.75rem 1rem;font-size:1rem;border:2px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);transition:all .2s}.search-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #3b82f61a}.empty-state{padding:3rem;text-align:center;color:var(--text-secondary)}@media (max-width: 768px){.concerts-view{padding:1rem}.view-header{flex-direction:column;align-items:flex-start;gap:1rem}.modal{width:95%;padding:1.5rem}}.concerts-view{--gig-mark: #e8b04b;max-width:960px}.concerts-view .view-header{gap:1rem;flex-wrap:wrap}.export-menu{position:relative}.export-menu summary{list-style:none;min-height:40px;display:inline-flex;align-items:center;padding:0 1rem;border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);cursor:pointer;-webkit-user-select:none;user-select:none}.export-menu summary::-webkit-details-marker{display:none}.export-menu[open] summary,.export-menu summary:hover{border-color:var(--accent-primary)}.export-menu-items{position:absolute;right:0;top:calc(100% + 6px);min-width:180px;display:flex;flex-direction:column;padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 10px 30px #00000073;z-index:10}.export-menu-items button{padding:.6rem .75rem;border:none;border-radius:6px;background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.export-menu-items button:hover{background:var(--bg-tertiary)}.gig-group+.gig-group{margin-top:2.5rem}.gig-group h2{margin-bottom:.75rem;font-size:1rem;font-weight:600;color:var(--text-secondary)}.gig-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.gig-row{position:relative;display:grid;grid-template-columns:4rem minmax(0,1fr) auto auto;align-items:center;gap:1.25rem;padding:1rem .5rem;border-bottom:1px solid var(--border-color)}.gig-row:hover{background:var(--bg-secondary)}.gig-leaf{display:flex;flex-direction:column;align-items:center;padding:.35rem 0;border:1px solid var(--border-color);border-radius:8px;line-height:1.1;font-variant-numeric:tabular-nums}.leaf-month,.leaf-weekday{font-size:.75rem;color:var(--text-secondary)}.leaf-day{font-size:1.6rem;font-weight:800;color:var(--text-primary)}.gig-row--next .gig-leaf{border-color:var(--gig-mark);background:#e8b04b1f}.gig-row--next .leaf-day,.gig-row--next .gig-countdown{color:var(--gig-mark)}.gig-main{min-width:0}.gig-main h3{margin:0;font-size:1.15rem;font-weight:650;line-height:1.3}.gig-open{padding:0;border:none;background:none;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.gig-open:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.gig-open:focus-visible{outline:none}.gig-open:focus-visible:after{outline:2px solid var(--accent-primary);outline-offset:-2px;border-radius:6px}.gig-where{margin-top:.15rem;color:var(--text-secondary);font-size:.95rem}.gig-facts{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:.15rem;color:var(--text-secondary);font-size:.85rem;font-variant-numeric:tabular-nums}.gig-countdown{min-width:7rem;color:var(--text-primary);font-size:.95rem;font-weight:600;text-align:right;white-space:nowrap}.gig-row--cancelled .gig-main h3{text-decoration:line-through;text-decoration-color:var(--text-secondary)}.gig-row--cancelled .gig-open{color:var(--text-secondary)}.gig-actions{position:relative;z-index:1;display:flex;gap:.25rem}.gig-actions .btn-icon{width:40px;height:40px;border:1px solid transparent;border-radius:6px;background:transparent;cursor:pointer;opacity:.7}.gig-actions .btn-icon:hover,.gig-actions .btn-icon:focus-visible{opacity:1;border-color:var(--border-color)}.gig-live{display:inline-flex;align-items:center;gap:.4rem;min-height:40px;padding:0 .75rem;border:1px solid var(--accent-primary);border-radius:6px;color:var(--accent-primary);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap}.gig-live:hover{background:var(--bg-secondary)}.gig-live-dot{width:.5rem;height:.5rem;border-radius:50%;background:currentColor}.concerts-view :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width: 640px){.gig-row{grid-template-columns:3.25rem minmax(0,1fr) auto;gap:.75rem}.gig-countdown{grid-column:2;grid-row:2;min-width:0;font-size:.85rem;text-align:left}.gig-actions{grid-column:3;grid-row:1}}.gig-facts .status-badge{padding:.05rem .5rem;font-size:.75rem}.setlist-editor{--setlist-mark: #e8b04b;padding:2rem;max-width:1200px;margin:0 auto}.setlist-header{margin-bottom:2rem}.setlist-header .btn-back{margin-bottom:1rem}.setlist-title-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem 2rem}.setlist-editor .concert-info h1{margin:0 0 .35rem;font-size:2rem;line-height:1.15;color:var(--text-primary)}.concert-meta-info{color:var(--text-secondary);font-size:.95rem}.concert-counts{margin-top:.15rem;color:var(--text-secondary);font-size:.9rem;font-variant-numeric:tabular-nums}.header-actions{display:flex;gap:.75rem;flex-wrap:wrap}.btn-practice,.btn-performance{min-height:44px;padding:0 1.25rem;border-radius:8px;font-size:1rem;font-weight:600;white-space:nowrap;cursor:pointer}.btn-practice{background:var(--accent-primary);border:1px solid var(--accent-primary);color:#fff}.btn-practice:hover:not(:disabled){background:var(--accent-secondary)}.btn-performance{background:transparent;border:1px solid var(--border-color);color:var(--text-primary)}.btn-performance:hover:not(:disabled){border-color:var(--accent-primary)}.btn-practice:disabled,.btn-performance:disabled{opacity:.45;cursor:not-allowed}.setlist-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:2.5rem;align-items:start}.setlist-heading-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem}.setlist-container h2,.setlist-aside h2{font-size:1rem;font-weight:600;color:var(--text-primary)}.btn-add-piece{min-height:36px;padding:0 .9rem;border-radius:6px;border:1px solid var(--border-color);background:transparent;color:var(--accent-primary);font-size:.9rem;font-weight:600;cursor:pointer}.btn-add-piece:hover{border-color:var(--accent-primary)}.setlist-hint{margin-bottom:.75rem;font-size:.8rem;color:var(--text-secondary)}.empty-setlist{padding:3rem 1rem;text-align:center;color:var(--text-secondary);border:1px dashed var(--border-color);border-radius:8px}.empty-setlist p{margin-bottom:1rem}.setlist-items{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.setlist-item{position:relative;display:grid;grid-template-columns:32px 3.25rem minmax(0,1fr) auto;align-items:center;gap:.5rem;min-height:64px;padding:.5rem .25rem;border-bottom:1px solid var(--border-color);background:var(--bg-primary)}.setlist-item:hover{background:var(--bg-secondary)}.setlist-item.is-dragging{opacity:.4}.setlist-item.drop-before:before,.setlist-item.drop-after:after{content:"";position:absolute;left:0;right:0;height:3px;background:var(--setlist-mark);border-radius:2px}.setlist-item.drop-before:before{top:-2px}.setlist-item.drop-after:after{bottom:-2px}.drag-handle{width:32px;height:40px;border:none;border-radius:4px;background:transparent;color:var(--text-secondary);font-size:1.1rem;cursor:grab}.drag-handle:hover{color:var(--text-primary);background:var(--bg-tertiary)}.item-order{font-size:1.9rem;font-weight:800;line-height:1;color:var(--setlist-mark);font-variant-numeric:tabular-nums;text-align:right;padding-right:.35rem}.item-content{min-width:0}.item-content h3{margin:0;font-size:1.2rem;font-weight:650;line-height:1.25;color:var(--text-primary);overflow-wrap:anywhere}.item-sub{display:flex;align-items:center;flex-wrap:wrap;gap:0 .5rem;margin-top:.15rem;font-size:.85rem;color:var(--text-secondary)}.item-sub-sep{width:3px;height:3px;border-radius:50%;background:var(--border-color)}.item-genre{color:var(--text-secondary);opacity:.85}.item-actions{display:flex;gap:.25rem}.btn-practice-item,.setlist-editor .btn-remove{width:40px;height:40px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-secondary);font-size:.95rem;cursor:pointer}.btn-practice-item:hover{color:var(--accent-primary);border-color:var(--border-color)}.setlist-editor .btn-remove{margin-left:0;padding:0}.setlist-editor .btn-remove:hover{color:#ef4444;border-color:var(--border-color);background:transparent;transform:none}.setlist-aside{display:flex;flex-direction:column;gap:2rem;position:sticky;top:1.5rem}.setlist-aside h2{margin-bottom:.75rem}.setlist-editor .lineup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.lineup-list li{display:flex;flex-direction:column}.lineup-name{color:var(--text-primary);font-weight:600}.lineup-instruments,.aside-empty{color:var(--text-secondary);font-size:.875rem}.print-links{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.btn-link{padding:.35rem 0;border:none;background:transparent;color:var(--accent-primary);font-size:.95rem;text-align:left;cursor:pointer}.btn-link:hover:not(:disabled){text-decoration:underline}.btn-link:disabled{color:var(--text-secondary);cursor:not-allowed}.setlist-editor :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.search-box{position:relative;margin:1.5rem 0 1rem}.search-input{width:100%;padding:.75rem 2.5rem .75rem 1rem;font-size:1rem;border:2px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);transition:all .2s}.search-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #007bff1a}.search-input::placeholder{color:var(--text-secondary);opacity:.7}.clear-search{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:#0000001a;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);font-size:1rem;transition:all .2s}.clear-search:hover{background:#dc354533;color:#d9534f}.pieces-list{max-height:60vh;overflow-y:auto;margin:1.5rem 0}.piece-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;margin-bottom:.75rem;cursor:pointer;transition:all .2s}.piece-item:hover{border-color:var(--accent-primary);background:var(--bg-tertiary);transform:translate(4px)}.piece-info h4{margin:0 0 .25rem;font-size:1.1rem;color:var(--text-primary)}.piece-info .piece-meta{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.piece-info .composer{font-size:.9rem;color:var(--text-secondary);font-style:italic}.piece-info .source-id{font-size:.85rem;color:var(--accent-primary);background:#007bff1a;padding:.2rem .6rem;border-radius:4px;font-weight:500}.piece-badges{display:flex;gap:.75rem;align-items:center}.piece-badges .badge{padding:.25rem .75rem;background:#007bff26;color:var(--accent-primary);border-radius:20px;font-size:.85rem;font-weight:600}.quick-create-form{margin-top:1.5rem}.quick-create-form .form-group{margin-bottom:1.25rem}.quick-create-form label{display:block;margin-bottom:.4rem;font-size:.9rem;font-weight:600;color:var(--text-secondary)}.quick-create-form .form-input{width:100%;padding:.75rem 1rem;font-size:1rem;border:2px solid var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);transition:border-color .2s;box-sizing:border-box}.quick-create-form .form-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px #007bff1a}.btn-create-new{background:transparent;border:2px dashed var(--accent-primary);color:var(--accent-primary);padding:.6rem 1.25rem;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-create-new:hover{background:#007bff14}.empty-state .btn-create-new{margin-top:1rem}@media (max-width: 900px){.setlist-layout{grid-template-columns:1fr}.setlist-aside{position:static}}@media (max-width: 768px){.setlist-editor{padding:1rem}.setlist-editor .concert-info h1{font-size:1.6rem}.setlist-item{grid-template-columns:28px 2.5rem minmax(0,1fr) auto}.item-order{font-size:1.5rem}.piece-item{flex-direction:column;align-items:flex-start;gap:.5rem}.piece-badges{align-self:flex-start}}@media (prefers-reduced-motion: reduce){.setlist-editor *{transition:none!important}}.pf-view{--pf-stage: #121417;--pf-bar: #1c1f24;--pf-mark: #e8b04b;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;background:var(--pf-stage);color:var(--text-primary);font-variant-numeric:tabular-nums}.pf-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;min-height:48px;padding:4px 6px 4px 12px;padding-top:max(4px,env(safe-area-inset-top));background:var(--pf-bar);border-bottom:1px solid var(--border-color)}.pf-where{display:flex;align-items:baseline;gap:.5rem;flex:1;min-width:0;white-space:nowrap;overflow:hidden}.pf-position{color:var(--pf-mark);font-weight:800;font-size:1rem}.pf-title{font-size:1.05rem;font-weight:650;overflow:hidden;text-overflow:ellipsis}.pf-composer{display:none;color:var(--text-secondary);font-size:.9rem;overflow:hidden;text-overflow:ellipsis}.pf-score-pick{display:flex;flex-direction:column;gap:.3rem;padding:.4rem .4rem .6rem;border-bottom:1px solid var(--border-color);margin-bottom:.3rem}.pf-score-label{color:var(--text-secondary);font-size:.85rem}.pf-score-pick select{width:100%;background:var(--pf-bar);text-overflow:ellipsis}.pf-live{order:1;flex-basis:100%;display:flex;align-items:center;gap:.6rem;min-width:0;padding-bottom:2px;font-size:.85rem}.pf-baton{min-width:0;padding:.2rem .65rem;border:1px solid var(--pf-mark);border-radius:999px;color:var(--pf-mark);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-baton:before{content:"";display:inline-block;width:8px;height:8px;margin-right:.45rem;border-radius:50%;background:var(--pf-mark)}.pf-baton--me{background:var(--pf-mark);color:#1b1405}.pf-baton--me:before{background:#1b1405}.pf-baton--away{border-style:dashed;opacity:.75}.pf-baton--away:before{background:transparent;border:1px solid var(--pf-mark)}.pf-people,.pf-offline{flex-shrink:0;color:var(--text-secondary)}.pf-people{display:none}.pf-offline{color:#fca5a5}.pf-live .pf-nav{flex-shrink:0;margin-left:auto;min-height:40px;padding:0 .85rem;font-size:.9rem}.pf-tools{display:flex;gap:.35rem;flex-shrink:0}.pf-tool{min-width:44px;min-height:40px;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border-color);border-radius:8px;background:transparent;color:var(--text-primary);font:inherit;cursor:pointer;list-style:none}.pf-tool::-webkit-details-marker{display:none}.pf-tool:hover{border-color:var(--accent-primary)}.pf-menu{position:relative}.pf-menu-items{position:absolute;right:0;top:calc(100% + 6px);width:min(280px,calc(100vw - 16px));max-height:calc(100dvh - 72px);overflow-y:auto;display:flex;flex-direction:column;padding:6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 12px 32px #00000080;z-index:5}.pf-menu-items button{min-height:44px;padding:.7rem .8rem;border:none;border-radius:6px;background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.pf-menu-items button:hover{background:var(--bg-tertiary)}.pf-layers{position:relative}.pf-layers:empty{display:none}.pf-layers .layer-panel-toggle{position:static;width:100%;min-height:44px;padding:.7rem .8rem;border:none;border-radius:6px;background:transparent;color:var(--text-primary);font:inherit;text-align:left}.pf-layers .layer-panel-toggle:hover{background:var(--bg-tertiary)}.pf-layers .layer-panel{position:static;width:auto;margin:0 0 .3rem;background:var(--pf-bar);border-color:var(--border-color)}.pf-layers .layer-row{min-height:40px}.pf-stage{position:relative;flex:1;min-height:0;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:4px;cursor:default;-webkit-tap-highlight-color:transparent}.pf-page-layer{position:relative}.pf-page-layer .react-pdf__Page__canvas{display:block;box-shadow:0 2px 28px #0009}.pf-message{color:var(--text-secondary);padding:3rem 1rem}.pf-no-score{margin:auto;padding:1rem;text-align:center;color:var(--text-secondary)}.pf-no-score-title{margin-bottom:.5rem;font-size:1.8rem;font-weight:700;color:var(--text-primary)}.pf-flash{position:absolute;top:16px;left:50%;transform:translate(-50%);max-width:calc(100% - 32px);padding:.65rem 1.25rem;border-radius:999px;background:var(--pf-mark);color:#1b1405;font-size:1rem;font-weight:700;white-space:nowrap;box-shadow:0 10px 30px #00000080;animation:pf-flash 2.6s ease-out forwards;pointer-events:none}@keyframes pf-flash{0%{opacity:0;transform:translate(-50%,-8px)}10%,75%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%)}}.pf-bottombar{display:flex;align-items:center;gap:.5rem;min-height:60px;padding:6px 8px;padding-bottom:max(6px,env(safe-area-inset-bottom));background:var(--pf-bar);border-top:1px solid var(--border-color)}.pf-nav{min-height:48px;padding:0 .85rem;border:1px solid var(--border-color);border-radius:10px;background:transparent;color:var(--text-primary);font:inherit;font-size:1rem;font-weight:600;white-space:nowrap;cursor:pointer;touch-action:manipulation}.pf-nav:hover:not(:disabled){border-color:var(--accent-primary)}.pf-nav:disabled{opacity:.35;cursor:default}.pf-nav--take{background:var(--pf-mark);border-color:var(--pf-mark);color:#1b1405}.pf-nav--follow{border-color:var(--pf-mark);color:var(--pf-mark)}.pf-progress{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.1rem;color:var(--text-secondary);font-size:.8rem}.pf-next-up{color:var(--text-primary);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.pf-setlist{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;overflow-y:auto;padding:1.5rem clamp(1rem,6vw,4rem) 3rem;background:#121417f7}.pf-setlist-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.pf-setlist-head h2{font-size:1.3rem}.pf-setlist ol{list-style:none;margin:0 auto;padding:0;max-width:900px}.pf-setlist li button{width:100%;display:flex;align-items:baseline;gap:1.25rem;padding:.9rem .5rem;border:none;border-bottom:1px solid var(--border-color);background:transparent;color:var(--text-primary);font:inherit;font-size:clamp(1.4rem,3vw,2.1rem);font-weight:650;text-align:left;cursor:pointer}.pf-setlist-num{min-width:2.5ch;text-align:right;color:var(--text-secondary);font-weight:800}.pf-setlist li button.is-current,.pf-setlist li button.is-current .pf-setlist-num{color:var(--pf-mark)}.pf-view :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (min-width: 900px){.pf-topbar{flex-wrap:nowrap;gap:1rem;min-height:52px;padding:6px 12px 6px 16px}.pf-position{font-size:1.05rem}.pf-title{font-size:1.15rem}.pf-score-pick{flex-direction:row;align-items:center;flex-shrink:1;min-width:0;padding:0;margin:0;border:none}.pf-score-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.pf-score-pick select{width:auto;max-width:11rem}.pf-live{order:0;flex-basis:auto;flex-shrink:0;gap:.75rem;padding:0;font-size:.9rem}.pf-baton{padding:.3rem .75rem}.pf-people{display:inline}.pf-tools{gap:.4rem}.pf-tool{padding:0 .9rem}.pf-layers .layer-panel-toggle{width:auto;min-width:44px;min-height:40px;padding:0 .9rem;border:1px solid var(--border-color);border-radius:8px}.pf-layers .layer-panel-toggle:hover{border-color:var(--accent-primary);background:transparent}.pf-layers .layer-panel{position:absolute;top:calc(100% + 6px);right:0;width:220px;margin:0;z-index:60}.pf-stage{padding:24px}.pf-no-score-title{font-size:2.5rem}.pf-flash{top:24px;padding:.75rem 1.5rem;font-size:1.1rem}.pf-bottombar{gap:.75rem;min-height:72px;padding:10px 16px}.pf-nav{min-height:52px;padding:0 1.4rem;font-size:1.05rem}.pf-progress{font-size:.9rem}.pf-next-up{font-size:1rem}}@media (min-width: 1200px){.pf-composer{display:inline}}@media (prefers-reduced-motion: reduce){.pf-flash{animation:none}}.pf-gate{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem;background:#121417;color:var(--text-primary);text-align:center}.pf-join{align-items:stretch;padding-inline:max(1.5rem,calc((100vw - 420px)/2));text-align:left}.pf-join h1{font-size:1.8rem;line-height:1.2}.pf-join p{color:var(--text-secondary)}.pf-join label{margin-top:.5rem;font-weight:600}.pf-join input{min-height:48px;padding:0 .9rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font:inherit;font-size:1.1rem}.pf-join .btn-primary{min-height:48px;font-size:1.05rem}.pf-toast{position:fixed;left:50%;bottom:96px;z-index:60;transform:translate(-50%);padding:.75rem 1.25rem;border-radius:8px;background:#ef4444f2;color:#fff}.rep-view{--rep-mark: #e8b04b;max-width:960px;margin:0 auto;padding:2rem;color:var(--text-primary);font-variant-numeric:tabular-nums}.rep-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.rep-header h1{margin:0;font-size:2rem}.rep-summary,.rep-muted{color:var(--text-secondary)}.rep-section>.rep-muted{margin-bottom:.75rem}.rep-error{color:#fca5a5}.rep-link{min-height:44px;display:inline-flex;align-items:center;color:var(--accent-primary);text-decoration:none}.rep-link:hover{text-decoration:underline}.rep-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2.5rem}.rep-section h2{margin-bottom:.75rem;font-size:1rem;font-weight:600;color:var(--text-secondary)}.rep-section a{color:var(--text-primary);text-decoration:none}.rep-section a:hover{color:var(--accent-primary);text-decoration:underline}.rep-ranked,.rep-plain{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.rep-ranked li{display:grid;grid-template-columns:2.5rem minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:52px;padding:.4rem .25rem;border-bottom:1px solid var(--border-color)}.rep-rank{color:var(--rep-mark);font-size:1.6rem;font-weight:800;text-align:right}.rep-piece{display:flex;flex-direction:column;min-width:0}.rep-piece a,.rep-plain a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.rep-ranked small,.rep-plain small{color:var(--text-secondary);font-size:.85rem}.rep-times{font-weight:600}.rep-plain li{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;min-height:44px;padding:.6rem .25rem;border-bottom:1px solid var(--border-color)}.rep-plain+.rep-more,.rep-more{min-height:44px;margin-top:.25rem;padding:0 .25rem;border:none;background:none;color:var(--accent-primary);font:inherit;cursor:pointer}.rep-genres{margin-top:2.5rem}.rep-genres p{line-height:1.6}.rep-view :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width: 640px){.rep-view{padding:1rem}.rep-header h1{font-size:1.6rem}}.settings-view{padding:40px;max-width:800px;margin:0 auto}.settings-header{margin-bottom:40px}.settings-header h1{font-size:32px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.subtitle{font-size:16px;color:var(--text-secondary);margin:0}.settings-content{background-color:var(--bg-secondary);border-radius:12px;padding:32px;border:1px solid var(--border-color)}.settings-section{margin-bottom:32px;padding-bottom:32px;border-bottom:1px solid var(--border-color)}.settings-section:last-of-type{border-bottom:none;margin-bottom:0;padding-bottom:0}.settings-section h2{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.section-description{font-size:14px;color:var(--text-secondary);margin-bottom:16px}.settings-input{width:100%;padding:12px 16px;border:1px solid var(--border-color);border-radius:6px;font-size:14px;background-color:var(--bg-primary);color:var(--text-primary);transition:border-color .2s ease}.settings-input:focus{outline:none;border-color:var(--accent-primary)}.input-with-button{display:flex;gap:12px;margin-bottom:8px}.input-with-button .settings-input{flex:1}.btn-browse{padding:12px 20px;background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:6px;font-size:14px;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn-browse:hover{background-color:var(--bg-secondary);border-color:var(--accent-primary)}.hint{display:block;font-size:12px;color:var(--text-secondary);font-style:italic}.settings-actions{display:flex;gap:12px;margin-top:32px;padding-top:24px;border-top:1px solid var(--border-color)}.settings-link-button{display:inline-block;padding:10px 14px;border-radius:6px;background:var(--accent-primary);color:#fff;text-decoration:none;font-size:14px;font-weight:600}.save-notification{margin-top:16px;padding:12px 20px;background-color:#10b9811a;border:1px solid rgba(16,185,129,.3);border-radius:6px;color:#10b981;font-size:14px;font-weight:500;text-align:center;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.layer-sets-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.layer-sets-list li{display:flex;align-items:center;gap:8px}.layer-sets-list .settings-input{flex:1;min-width:0;margin:0}.layer-sets-list button{min-height:40px}.layer-sets-list .btn-danger{padding:0 14px;border:1px solid #ef4444;border-radius:8px;background:#ef4444;color:#fff;font:inherit;cursor:pointer}.settings-error{color:#fca5a5}.ens-view{max-width:960px;margin:0 auto;padding:2rem;color:var(--text-primary);font-variant-numeric:tabular-nums}.ens-header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.ens-header h1{margin:0;font-size:2rem}.ens-summary,.ens-empty{color:var(--text-secondary)}.ens-header .btn-primary{min-height:44px}.ens-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-color)}.ens-item,.ens-list--compact .ens-row{border-bottom:1px solid var(--border-color)}.ens-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem;min-height:64px;padding:.75rem .5rem}.ens-row:hover{background:var(--bg-secondary)}.ens-main{min-width:0}.ens-main h2,.ens-main h3{margin:0;font-size:1.1rem;font-weight:650}.ens-main h3{font-size:1rem}.ens-open{padding:0;border:none;background:none;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.ens-open:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.ens-open:focus-visible{outline:none}.ens-open:focus-visible:after{outline:2px solid var(--accent-primary);outline-offset:-2px;border-radius:6px}.ens-plays{margin:.15rem 0 0;color:var(--text-secondary);font-size:.95rem}.ens-facts{display:flex;flex-direction:column;align-items:flex-end;gap:.1rem;margin:0;color:var(--text-secondary);font-size:.85rem;text-align:right;white-space:nowrap}.ens-instruments{margin-top:2.5rem}.ens-instruments summary{min-height:44px;display:flex;align-items:center;color:var(--text-secondary);font-weight:600;cursor:pointer}.ens-instruments[open] summary{margin-bottom:.5rem}.ens-list--compact .ens-row{min-height:52px}.ens-add{min-height:44px;margin-top:.5rem;padding:0 .5rem;border:none;background:none;color:var(--accent-primary);font:inherit;cursor:pointer}.ens-add:hover{text-decoration:underline}.ens-dialog{margin:auto;width:min(480px,calc(100vw - 32px));padding:0;border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);color:var(--text-primary)}.ens-dialog::backdrop{background:#0009}.ens-dialog form{display:flex;flex-direction:column;gap:.4rem;padding:1.25rem}.ens-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.5rem}.ens-dialog h2{font-size:1.2rem}.ens-dialog label{margin-top:.5rem;color:var(--text-secondary);font-size:.9rem}.ens-optional{font-size:.8rem;opacity:.8}.ens-dialog input,.ens-dialog textarea{min-height:44px;padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font:inherit}.ens-dialog textarea{resize:vertical}.ens-dialog-foot{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.ens-dialog-foot button{min-height:44px}.ens-spacer{flex:1}.ens-icon{min-width:40px;min-height:40px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-secondary);font:inherit;cursor:pointer}.ens-icon:hover{border-color:var(--border-color);color:var(--text-primary)}.ens-link-danger{padding:0 .25rem;border:none;background:none;color:#fca5a5;font:inherit;cursor:pointer}.ens-link-danger:hover{text-decoration:underline}.ens-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;flex-basis:100%;color:#fca5a5}.ens-confirm button{min-height:44px}.ens-btn-danger{padding:0 1rem;border:1px solid #ef4444;border-radius:8px;background:#ef4444;color:#fff;font:inherit;font-weight:600;cursor:pointer}.ens-error{margin-top:.5rem;color:#fca5a5}.ens-view :focus-visible,.ens-dialog :focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}@media (max-width: 640px){.ens-view{padding:1rem}.ens-header h1{font-size:1.6rem}.ens-item .ens-row{grid-template-columns:minmax(0,1fr);gap:.4rem}.ens-item .ch-toggle{justify-self:start}}.flyer-page{min-height:100vh;background:#f5f5f5;padding:20px}.flyer-toolbar{display:flex;gap:12px;margin-bottom:24px;align-items:center}.btn-print{background:#2563eb;color:#fff;border:none;padding:8px 18px;border-radius:6px;cursor:pointer;font-size:.95rem}.btn-print:hover{background:#1d4ed8}.flyer{background:#fff;max-width:640px;margin:0 auto;padding:48px 56px;border-radius:8px;box-shadow:0 2px 16px #0000001a}.flyer-header{text-align:center;border-bottom:2px solid #1e293b;padding-bottom:24px;margin-bottom:32px}.flyer-app-name{font-size:.85rem;color:#64748b;letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px}.flyer-concert-name{font-size:1.75rem;font-weight:700;color:#1e293b;margin:0 0 12px;line-height:1.2}.flyer-meta{display:flex;justify-content:center;gap:24px;color:#475569;font-size:.95rem}.flyer-section{margin-bottom:32px}.flyer-section h2{font-size:.8rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#64748b;margin:0 0 14px;padding-bottom:6px;border-bottom:1px solid #e2e8f0}.flyer-setlist{list-style:none;margin:0;padding:0;counter-reset:none}.flyer-setlist-item{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid #f1f5f9;font-size:1rem}.flyer-item-number{color:#94a3b8;font-size:.85rem;min-width:22px;text-align:right}.flyer-item-title{flex:1;color:#1e293b;font-weight:500}.flyer-item-source{color:#94a3b8;font-size:.8rem;font-family:monospace}.flyer-lineup{list-style:none;margin:0;padding:0}.flyer-lineup-item{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:1rem;border-bottom:1px solid #f1f5f9}.flyer-musician-name{font-weight:500;color:#1e293b}.flyer-musician-sep{color:#94a3b8}.flyer-musician-instrument{color:#475569}@media print{.no-print,.sidebar{display:none!important}.layout{display:block!important}.main-content{margin:0!important;padding:0!important}.flyer-page{background:#fff;padding:0}.flyer{box-shadow:none;border-radius:0;padding:32px 40px;max-width:100%}}.flyer-loading,.flyer-error{text-align:center;padding:60px;color:#64748b}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg-primary)}.login-panel{width:min(100%,420px);padding:36px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:0 18px 45px #00000014}.login-eyebrow{color:var(--accent-primary);font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.login-panel h1{margin:8px 0;font-size:32px}.login-panel p{color:var(--text-secondary);margin-bottom:28px}.login-panel form,.login-providers{display:grid;gap:14px}.login-panel label{display:grid;gap:6px;font-size:13px;font-weight:600}.login-panel input{width:100%;padding:11px 12px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary)}.login-primary,.login-providers a{display:block;padding:12px;border:0;border-radius:6px;text-align:center;text-decoration:none;cursor:pointer}.login-primary{background:var(--accent-primary);color:#fff;font-weight:700}.login-providers{margin-top:20px;padding-top:18px;border-top:1px solid var(--border-color)}.login-providers span{color:var(--text-secondary);text-align:center;font-size:12px}.login-providers a{border:1px solid var(--border-color);color:var(--text-primary)}.login-error{color:#b42318;font-size:13px}.admin-view{max-width:1100px;margin:0 auto;padding:32px;color:var(--text-primary)}.admin-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:24px}.admin-header h1{margin:6px 0 0}.admin-header>span,.admin-eyebrow,.admin-user-row span,.admin-workspace span{color:var(--text-secondary);font-size:13px}.admin-eyebrow{color:var(--accent-primary);font-weight:700;letter-spacing:.08em;text-transform:uppercase}.admin-panel{padding:20px;margin-bottom:18px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px}.admin-panel h2{margin:0 0 18px;font-size:18px}.admin-user-list,.admin-workspace-list{display:grid;gap:10px}.admin-user-row,.admin-member{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--border-color)}.admin-user-row:last-child{border-bottom:0}.admin-user-row div{display:grid;gap:4px}.admin-button,.admin-member button,.admin-primary{border:1px solid var(--border-color);border-radius:6px;padding:8px 12px;background:transparent;color:var(--text-primary);cursor:pointer}.admin-button.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.admin-assignment-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;margin-bottom:20px}.admin-assignment-form select{padding:10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary)}.admin-primary{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary)}.admin-workspace{display:grid;gap:6px;padding:14px;background:var(--bg-tertiary);border-radius:6px}.admin-member{padding:6px 0;border-bottom:0}.admin-member button{padding:4px 8px;font-size:12px}.admin-error{padding:12px;margin-bottom:16px;color:#b42318;background:#fef3f2;border-radius:6px}.admin-empty{padding:48px;text-align:center;color:var(--text-secondary)}@media (max-width: 700px){.admin-view{padding:20px}.admin-assignment-form{grid-template-columns:1fr}}.profile-view{max-width:900px;margin:0 auto;padding:32px;color:var(--text-primary)}.profile-header{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:24px}.profile-eyebrow{color:var(--accent-primary);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.profile-header h1{margin:6px 0 0;font-size:30px}.profile-back{color:var(--text-secondary);font-size:13px}.profile-panel{padding:24px;margin-bottom:18px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px}.profile-panel h2{margin:0 0 8px;font-size:18px}.profile-panel-heading{display:flex;justify-content:space-between;align-items:start;gap:20px}.profile-panel p{margin:0 0 18px;color:var(--text-secondary);font-size:14px}.profile-url{max-width:300px;overflow-wrap:anywhere;color:var(--text-secondary);font-family:monospace;font-size:12px;text-align:right}.profile-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.profile-fields div{display:grid;gap:5px;padding:12px;background:var(--bg-tertiary);border-radius:6px}.profile-fields span,.profile-hint{color:var(--text-secondary);font-size:12px}.profile-warning{padding:12px;margin-bottom:16px;color:#7a4d00;background:#fff7e6;border:1px solid #f4d58d;border-radius:6px;font-size:13px}.profile-primary,.profile-secondary,.profile-token-row button{padding:10px 14px;border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-weight:600}.profile-primary{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.profile-secondary{margin-top:10px;background:transparent;color:var(--text-primary)}.profile-install{display:block;margin-top:10px;padding:10px 14px;border:0;border-radius:6px;background:#d97706;color:#fff;cursor:pointer;font-weight:700}.profile-install:disabled{opacity:.5;cursor:not-allowed}.profile-installed{margin-top:12px;padding:10px;border-radius:6px;background:#ecfdf3;color:#166534;font-size:12px;overflow-wrap:anywhere}.profile-token-row{display:flex;gap:8px;margin-top:16px}.profile-token-row input,.profile-panel textarea{width:100%;padding:10px;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-family:monospace;font-size:12px}.profile-token-row input{min-width:0}.profile-token-row button{white-space:nowrap;background:var(--bg-tertiary);color:var(--text-primary)}.profile-config-label{display:block;margin-top:22px;margin-bottom:8px;font-size:13px;font-weight:700}.profile-panel textarea{resize:vertical;line-height:1.5}.profile-hint{display:block;margin-top:8px}.profile-error{margin-top:12px;color:#b42318;font-size:13px}.profile-token-list{display:grid;gap:8px;margin-top:24px;padding-top:18px;border-top:1px solid var(--border-color)}.profile-token-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;color:var(--text-secondary);font-size:12px}.profile-token-item button,.profile-token-item em{padding:5px 8px;border:1px solid var(--border-color);border-radius:5px;background:transparent;color:var(--text-primary);font-size:11px;font-style:normal;cursor:pointer}.profile-token-item em{color:var(--text-secondary);cursor:default}@media (max-width: 650px){.profile-view{padding:20px}.profile-header,.profile-panel-heading{align-items:start;flex-direction:column}.profile-url{max-width:none;text-align:left}.profile-fields{grid-template-columns:1fr}.profile-token-row{align-items:stretch;flex-direction:column}}*{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary: #1a1a1a;--bg-secondary: #252525;--bg-tertiary: #303030;--text-primary: #e0e0e0;--text-secondary: #a0a0a0;--border-color: #404040;--accent-primary: #4a9eff;--accent-secondary: #3d7bd4;--success: #4caf50;--warning: #ff9800;--danger: #f44336}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-primary);color:var(--text-primary);overflow:hidden}#root{width:100vw;height:100vh;overflow:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#404040}button{font-family:inherit;cursor:pointer;border:none;outline:none;transition:all .2s ease}button:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{font-family:inherit;background-color:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);padding:8px 12px;border-radius:4px;outline:none;transition:border-color .2s ease}input:focus,textarea:focus,select:focus{border-color:var(--accent-primary)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
