:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ececf1;background-color:#343541;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;background-color:#343541;color:#ececf1}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}#root{min-height:100vh;background:#343541;color:#ececf1}.page-center{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;gap:12px;padding:2rem;background:#343541;color:#ececf1}.nav-link{font-weight:500;color:inherit}.about-iframe{width:100%;height:100vh;border:0;display:block}.status-json{width:min(90vw,60rem);max-height:60vh;overflow:auto;text-align:left}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.tuner-container{max-width:800px;margin:0 auto;padding:2rem;font-family:system-ui,-apple-system,sans-serif;background-color:#000;min-height:100vh}.tuner-header{text-align:center;margin-bottom:2rem}.tuner-header h1{margin:0 0 .5rem;font-size:2.5rem;color:#fff}.tuner-subtitle{margin:0;color:#6b7280;font-size:1.1rem}.tuner-error{background-color:#fee;color:#c00;padding:1rem;border-radius:8px;margin-bottom:1rem;text-align:center}.tuner-controls{display:flex;justify-content:center;margin-bottom:2rem}.tuner-button{padding:1rem 2rem;font-size:1.2rem;font-weight:600;border:none;border-radius:12px;cursor:pointer;transition:all .2s;box-shadow:0 4px 6px #0000001a}.tuner-button:hover{transform:translateY(-2px);box-shadow:0 6px 8px #00000026}.tuner-button:active{transform:translateY(0)}.tuner-button-start{background-color:#10b981;color:#fff}.tuner-button-stop{background-color:#ef4444;color:#fff}.volume-meter{background-color:#f9fafb;border-radius:12px;padding:1.5rem;margin-bottom:1.5rem;box-shadow:0 2px 4px #0000001a}.volume-label{font-size:.9rem;font-weight:600;color:#6b7280;margin-bottom:.5rem;text-align:center}.volume-bar-container{height:24px;background-color:#e5e7eb;border-radius:12px;overflow:hidden;position:relative;margin-bottom:.5rem}.volume-bar-fill{height:100%;transition:width .1s ease-out,background-color .2s;border-radius:12px;box-shadow:inset 0 2px 4px #0000001a}.frequency-chart{margin-bottom:1.5rem}.frequency-chart h3{margin:0 0 1rem;color:#f3f4f6;font-size:1rem;text-align:center;font-weight:600}.frequency-chart svg{display:block;background-color:transparent}.tuner-display-compact .note-display{padding:1rem}.tuner-display-compact .note-name{font-size:2.5rem}.tuner-display-compact .frequency{font-size:.9rem}.volume-meter-inline{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;background-color:transparent;margin:.75rem 0}.volume-meter-inline .volume-label{font-size:.8rem;font-weight:600;color:#6b7280;min-width:40px}.volume-meter-inline .volume-bar-container{flex:1;height:16px;background-color:#e5e7eb;border-radius:8px;overflow:hidden;position:relative}.volume-meter-inline .volume-bar-fill{height:100%;transition:width .1s ease-out,background-color .2s;border-radius:8px}.volume-meter-inline .volume-value{font-size:.8rem;font-weight:600;color:#6b7280;min-width:40px;text-align:right}.volume-value{text-align:center;font-size:.85rem;font-weight:600;color:#4b5563}.tuner-display{padding:.5rem;padding-top:0;margin-bottom:2rem}.note-display{text-align:center;margin-bottom:2rem;padding:0}.note-name{font-size:6rem;font-weight:700;color:#fff;margin:0;text-shadow:0 4px 8px rgba(0,0,0,.3)}.note-name.waiting{opacity:.5}.frequency{font-size:1.5rem;color:#ffffffe6;margin-top:.5rem}.cents-display{background-color:#ffffff26;border-radius:12px;padding:1.5rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.cents-scale{position:relative;margin-bottom:.5rem}.cents-tick{position:absolute;transform:translate(-50%);color:#ffffffb3;font-size:.9rem}.cents-bar{position:relative;height:60px;background-color:#fff3;border-radius:30px;margin:1rem 0;overflow:hidden}.cents-center{position:absolute;left:50%;top:0;bottom:0;width:3px;background-color:#fff;transform:translate(-50%);z-index:1}.cents-indicator{position:absolute;top:50%;width:20px;height:20px;border-radius:50%;transform:translate(-50%,-50%);transition:left .1s ease-out,background-color .2s;box-shadow:0 0 10px #0000004d,0 0 20px currentColor;z-index:2}.cents-value{text-align:center;font-size:1.5rem;font-weight:700;margin-top:1rem}.guitar-strings{background-color:#f9fafb;border-radius:12px;padding:1.5rem;margin-bottom:2rem}.guitar-strings h3{margin:0 0 1rem;color:#1f2937;text-align:center}.strings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1rem}.string-item{background-color:#fff;border-radius:8px;padding:1rem;text-align:center;box-shadow:0 2px 4px #0000001a;transition:transform .2s}.string-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.string-number{font-size:.9rem;color:#6b7280;margin-bottom:.5rem}.string-note{font-size:2rem;font-weight:700;color:#1f2937;margin-bottom:.25rem}.string-freq{font-size:.85rem;color:#6b7280}.tuner-instructions{background-color:#eff6ff;border-left:4px solid #3b82f6;border-radius:8px;padding:1.5rem}.tuner-instructions h3{margin:0 0 1rem;color:#1e40af}.tuner-instructions ol{margin:0;padding-left:1.5rem;color:#1e3a8a}.tuner-instructions li{margin-bottom:.5rem}@media (max-width: 640px){.tuner-container{padding:1rem}.note-name{font-size:4rem}.strings-grid{grid-template-columns:repeat(2,1fr)}}
