.app{display:flex;flex-direction:column;width:100%;min-height:100vh;background-color:var(--surface)}.app-header{background-color:var(--primary-color);color:var(--text-on-primary);padding:2rem 1rem;text-align:center;box-shadow:var(--shadow-md)}.app-header h1{font-size:2rem;font-weight:600}.app-main{flex:1;display:flex;flex-direction:column;padding:2rem 1rem 3rem;gap:1.75rem;max-width:1200px;margin:0 auto;width:100%}.panel{background-color:var(--background);border-radius:8px;padding:1.5rem}.panel--primary{border:1px solid var(--border-color);box-shadow:var(--shadow-sm)}.panel--interaction{border:1px solid var(--border-color);box-shadow:var(--shadow-sm);flex:0 0 auto}.panel--supporting{padding:1rem 1.25rem 1.25rem;background-color:transparent;border:1px dashed var(--border-color);box-shadow:none}.panel__title{font-size:1.25rem;margin-bottom:1rem;color:var(--text-primary)}.panel__title--quiet{font-size:.95rem;font-weight:600;margin-bottom:.25rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.panel__hint{font-size:.85rem;color:var(--text-secondary);margin-bottom:.75rem}.progression-display h2,.suggestion-cards h2,.debug-view h2{font-size:1.25rem;margin-bottom:0;color:var(--text-primary)}.progression-display__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem 1rem;margin-bottom:1.25rem}.progression-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.progression-row{display:flex;flex-wrap:wrap;gap:.75rem;align-items:stretch}.chord-badge{background-color:var(--secondary-color);color:var(--text-on-primary);padding:.75rem 1rem;border-radius:10px;font-weight:600;font-size:1rem;min-width:100px;min-height:140px;text-align:center;box-shadow:0 2px 4px #0000001a;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.4rem;overflow:visible}.chord-badge__name{margin-top:.15rem}.no-progression{color:var(--text-secondary);font-style:italic}.play-button,.delete-button{background-color:var(--primary-color);color:var(--text-on-primary);border:none;border-radius:6px;padding:.625rem 1.25rem;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.play-button:hover:not(:disabled),.delete-button:hover:not(:disabled){background-color:var(--primary-hover);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.play-button:active:not(:disabled),.delete-button:active:not(:disabled){transform:translateY(0)}.play-button:disabled,.delete-button:disabled{background-color:var(--disabled-bg);color:var(--text-disabled);cursor:not-allowed;box-shadow:none}.delete-button{background-color:var(--danger-color)}.delete-button:hover:not(:disabled){background-color:var(--danger-hover)}.cards-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.suggestion-card{background:linear-gradient(135deg,var(--primary-color) 0%,var(--primary-hover) 100%);color:var(--text-on-primary);border:none;border-radius:10px;padding:1.25rem;cursor:pointer;transition:all .3s ease;text-align:center;box-shadow:0 2px 8px #00000026;font-size:.95rem;display:flex;flex-direction:column;gap:.5rem}.suggestion-card__notation{display:flex;flex-direction:column;align-items:center}.suggestion-card:hover{transform:translateY(-4px);box-shadow:0 6px 16px #0003}.suggestion-card:active{transform:translateY(-2px)}.card-name{font-weight:700;font-size:1.1rem}.card-label{font-size:.85rem;opacity:.9}.card-explanation{font-size:.8rem;opacity:.85}.card-notes{font-size:.75rem;opacity:.8;margin-top:.25rem}.debug-view pre{background-color:var(--surface);border:1px solid var(--border-color);border-radius:6px;padding:1rem;overflow-x:auto;font-size:.85rem;line-height:1.4;color:var(--text-primary);font-family:var(--font-mono)}@media (max-width: 768px){.app-header h1{font-size:1.5rem}.app-main{padding:1rem 1rem 2rem;gap:1.25rem}.panel{padding:1rem}.panel--supporting{padding:.85rem 1rem 1rem}.progression-display__header{flex-direction:column;align-items:flex-start}.progression-toolbar{width:100%}.cards-container{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}.progression-row{gap:.5rem}.chord-badge{padding:.6rem 1.2rem;font-size:.9rem;min-width:70px}}.timeline-graph{width:100%;min-height:0;overflow-x:auto;background-color:var(--timeline-bg);border-radius:4px;border:1px solid var(--border-color)}.timeline-graph svg{display:block;width:100%;height:auto;min-height:180px;max-height:280px;pointer-events:auto}.timeline-lane{stroke:var(--timeline-lane);stroke-width:.5;opacity:.4}.timeline-edge{stroke:var(--timeline-edge);stroke-width:1;fill:none;opacity:.3;transition:opacity .2s ease,stroke .2s ease;pointer-events:none}.timeline-edge.active{stroke:var(--timeline-edge-active);opacity:.7;stroke-width:1.2}.timeline-node{transition:all .15s ease;cursor:pointer}.timeline-node:hover .node-dot{r:6.5;opacity:.8}.timeline-node.selected .node-dot{r:7.5;fill:var(--timeline-node-selected);opacity:1}.node-dot{fill:var(--timeline-node);stroke:var(--timeline-bg);stroke-width:2;opacity:.5;cursor:pointer;transition:all .15s ease;pointer-events:auto}.node-label{fill:var(--timeline-label);font-size:11px;font-weight:500;letter-spacing:.5px;pointer-events:auto;opacity:.7;transition:fill .15s ease;font-family:var(--font-mono)}.timeline-node.selected .node-label{fill:var(--timeline-node-selected);font-weight:600;opacity:1}.timeline-node:hover .node-label{fill:var(--timeline-node-selected);opacity:1}.branch-inactive .timeline-edge,.branch-inactive .node-dot,.branch-inactive .node-label{opacity:.25;filter:grayscale(60%)}.branch-active .timeline-edge,.branch-active .node-dot,.branch-active .node-label{opacity:.95}.export-pdf-button{background-color:var(--export-color);color:var(--text-on-primary);border:none;border-radius:6px;padding:.625rem 1.25rem;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.export-pdf-button:hover:not(:disabled){background-color:var(--export-hover);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.export-pdf-button:active:not(:disabled){transform:translateY(0)}.export-pdf-button:disabled{background-color:var(--disabled-bg);color:var(--text-disabled);cursor:not-allowed;box-shadow:none}.pdf-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:pdf-overlay-in .15s ease}@keyframes pdf-overlay-in{0%{opacity:0}to{opacity:1}}.pdf-modal-panel{background:var(--background);border-radius:12px;box-shadow:var(--shadow-modal);width:100%;max-width:480px;display:flex;flex-direction:column;animation:pdf-panel-in .18s ease;overflow:hidden}@keyframes pdf-panel-in{0%{opacity:0;transform:translateY(-12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.pdf-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem 1rem;border-bottom:1px solid var(--border-color)}.pdf-modal-heading{font-size:1.15rem;font-weight:700;color:var(--text-primary);margin:0}.pdf-modal-close{background:none;border:none;font-size:1rem;color:var(--text-secondary);cursor:pointer;padding:.25rem .5rem;border-radius:4px;line-height:1;transition:background-color .15s ease,color .15s ease}.pdf-modal-close:hover{background-color:var(--surface);color:var(--text-primary)}.pdf-modal-body{padding:1.25rem 1.5rem;display:flex;flex-direction:column;gap:1.1rem}.pdf-modal-field{display:flex;flex-direction:column;gap:.4rem}.pdf-modal-field__label{font-size:.82rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.pdf-modal-field__input{border:1px solid var(--border-color);border-radius:7px;padding:.55rem .85rem;font-size:.95rem;color:var(--text-primary);background:var(--surface);transition:border-color .15s ease,box-shadow .15s ease;outline:none;width:100%}.pdf-modal-field__input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px var(--focus-ring);background:var(--background)}.pdf-modal-preview{display:flex;flex-direction:column;gap:.55rem}.pdf-modal-preview__meta{font-size:.8rem;color:var(--text-secondary);font-style:italic}.pdf-modal-preview__pills{display:flex;flex-wrap:wrap;gap:.4rem}.pdf-chord-pill{background-color:var(--surface);border:1px solid var(--border-color);border-radius:20px;padding:.2rem .7rem;font-size:.8rem;font-weight:600;color:var(--text-primary);font-family:var(--font-mono);letter-spacing:.02em}.pdf-modal-error{background-color:var(--danger-surface);border:1px solid var(--danger-border);border-radius:7px;padding:.65rem .9rem;font-size:.85rem;color:var(--danger-text);line-height:1.4}.pdf-modal-footer{display:flex;justify-content:flex-end;gap:.65rem;padding:1rem 1.5rem 1.25rem;border-top:1px solid var(--border-color);background-color:var(--surface)}.pdf-modal-btn{border:none;border-radius:7px;padding:.6rem 1.2rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease;display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap}.pdf-modal-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.pdf-modal-btn--secondary{background-color:var(--background);color:var(--text-primary);border:1px solid var(--border-color)}.pdf-modal-btn--secondary:hover:not(:disabled){background-color:var(--surface);border-color:var(--border-strong)}.pdf-modal-btn--primary{background-color:var(--export-color);color:var(--text-on-primary);box-shadow:0 2px 4px #0000001f}.pdf-modal-btn--primary:hover:not(:disabled){background-color:var(--export-hover);box-shadow:0 4px 10px #0000002e;transform:translateY(-1px)}.pdf-modal-btn--primary:active:not(:disabled){transform:translateY(0)}.suggestion-cards__header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.suggestion-cards__header h2{margin-bottom:0}.suggestion-cards__controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.control-label{display:flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:500;color:var(--text-secondary);white-space:nowrap}.control-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--surface);border:1px solid var(--border-color);border-radius:6px;padding:.3rem 1.8rem .3rem .6rem;font-size:.85rem;color:var(--text-primary);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%236b7280'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;transition:border-color .15s ease,box-shadow .15s ease}.control-select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--focus-ring)}.control-select:disabled{opacity:.5;cursor:not-allowed}.control-refresh{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--border-color);border-radius:6px;background-color:var(--surface);color:var(--text-secondary);font-size:1.1rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;flex-shrink:0}.control-refresh:hover:not(:disabled){background-color:var(--primary-color);border-color:var(--primary-color);color:var(--text-on-primary)}.control-refresh:disabled{opacity:.45;cursor:not-allowed}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;width:.85rem;height:.85rem;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite}.suggestion-error{display:flex;align-items:center;justify-content:space-between;gap:.75rem;background-color:var(--danger-surface);border:1px solid var(--danger-border);border-radius:8px;padding:.65rem 1rem;margin-bottom:1rem;font-size:.85rem;color:var(--danger-text)}.suggestion-error__retry{background-color:var(--danger-color);color:var(--text-on-primary);border:none;border-radius:5px;padding:.3rem .75rem;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:background-color .15s ease;flex-shrink:0}.suggestion-error__retry:hover{background-color:var(--danger-hover)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.suggestion-card--skeleton{background:linear-gradient(135deg,color-mix(in srgb,var(--primary-color) 55%,transparent),color-mix(in srgb,var(--primary-hover) 55%,transparent));pointer-events:none;cursor:default;gap:.75rem}.skeleton-notation,.skeleton-line{border-radius:6px;background:linear-gradient(90deg,#ffffff1f 25%,#ffffff47,#ffffff1f 75%);background-size:400px 100%;animation:shimmer 1.4s infinite linear}.skeleton-notation{width:100px;height:60px;margin:0 auto}.skeleton-line{height:.75rem;margin:0 auto}.skeleton-line--name{width:60%}.skeleton-line--explanation{width:85%}:root{color-scheme:light;--primary-color: #4f46e5;--primary-hover: #4338ca;--secondary-color: #06b6d4;--background: #ffffff;--surface: #f3f4f6;--text-primary: #1f2937;--text-secondary: #6b7280;--text-on-primary: #ffffff;--text-disabled: #9ca3af;--border-color: #e5e7eb;--border-strong: #9ca3af;--success-color: #10b981;--danger-color: #ef4444;--danger-hover: #dc2626;--danger-text: #b91c1c;--danger-surface: #fef2f2;--danger-border: #fecaca;--export-color: #0f766e;--export-hover: #0d6b63;--disabled-bg: #d1d5db;--focus-ring: color-mix(in srgb, var(--primary-color) 15%, transparent);--overlay-bg: rgba(0, 0, 0, .45);--timeline-bg: #f9f9f9;--timeline-lane: #f0f0f0;--timeline-edge: #999999;--timeline-edge-active: #666666;--timeline-node: #b0b0b0;--timeline-node-selected: #333333;--timeline-label: #666666;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--shadow-md: 0 2px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .15);--shadow-modal: 0 20px 60px rgba(0, 0, 0, .2), 0 4px 16px rgba(0, 0, 0, .08);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "Monaco", "Menlo", "Ubuntu Mono", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--surface);color:var(--text-primary);line-height:1.5;min-height:100vh}#root{width:100%;min-height:100vh}button{font-family:inherit;font-size:inherit;line-height:inherit;cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit;text-decoration:none}img,svg{display:block;max-width:100%}
