.harmony-ruler-app{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#20242c;--muted:#667181;--line:#20242c24;--panel:#ffffffc2;--panel-strong:#ffffffeb;--indigo:#243f8f;--cyan:#65c7d8;--red:#b95757;--soft-red:#f1d7d3;--bg:#f7f4ed;--shadow:0 18px 48px #2830401f;width:min(100%,620px);min-height:100svh;padding:max(18px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));flex-direction:column;gap:14px;margin:0 auto;font-family:ui-sans-serif,system-ui,-apple-system,blinkmacsystemfont,Helvetica Neue,Hiragino Sans,Yu Gothic,meiryo,sans-serif;display:flex}.harmony-ruler-app,.harmony-ruler-app *{box-sizing:border-box}.harmony-ruler-app button,.harmony-ruler-app select{font:inherit}.harmony-ruler-app .topbar{justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.harmony-ruler-app .brand{min-width:0}.harmony-ruler-app .eyebrow{color:var(--muted);margin:0 0 4px;font-size:12px;line-height:1.2}.harmony-ruler-app h1{letter-spacing:0;margin:0;font-size:clamp(24px,8vw,38px);line-height:1}.harmony-ruler-app .status{border:1px solid var(--line);min-height:32px;color:var(--muted);background:#ffffff9e;border-radius:999px;flex:none;align-items:center;gap:7px;padding:7px 10px;font-size:12px;display:inline-flex}.harmony-ruler-app .status-dot{background:#9aa4b2;border-radius:999px;width:8px;height:8px}.harmony-ruler-app .status.is-playing .status-dot{background:var(--cyan);box-shadow:0 0 0 4px #65c7d82e}.harmony-ruler-app .readout{grid-template-columns:1fr 1fr;gap:10px;display:grid}.harmony-ruler-app .metric{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px;min-width:0;padding:14px;box-shadow:0 8px 28px #28304014}.harmony-ruler-app .metric.wide{grid-column:1/-1}.harmony-ruler-app .label{-webkit-user-select:none;user-select:none;color:var(--muted);justify-content:space-between;align-items:center;padding:.5rem .25rem;font-size:12px;line-height:1.2;display:flex}.harmony-ruler-app .value{font-variant-numeric:tabular-nums;white-space:nowrap;min-width:0;margin-top:4px;line-height:1}.harmony-ruler-app .value.large{font-size:clamp(42px,18vw,84px);font-weight:760}.harmony-ruler-app .value.medium{font-size:22px;font-weight:680}.harmony-ruler-app .nearest{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.harmony-ruler-app .nearest-main{min-width:0;font-size:clamp(20px,8vw,34px);font-weight:760;line-height:1.1}.harmony-ruler-app .nearest-sub{color:var(--muted);margin-top:4px;font-size:13px;line-height:1.35}.harmony-ruler-app .delta{color:var(--indigo);font-variant-numeric:tabular-nums;background:#243f8f14;border-radius:999px;flex:none;padding:7px 9px;font-size:13px}.harmony-ruler-app .controls{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px;padding:12px;box-shadow:0 8px 28px #28304014}.harmony-ruler-app .control-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.harmony-ruler-app .current-do{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.harmony-ruler-app .note-strip{overscroll-behavior-x:contain;scrollbar-width:none;gap:8px;padding:1px 1px 4px;display:flex;overflow-x:auto}.harmony-ruler-app .note-strip::-webkit-scrollbar{display:none}.harmony-ruler-app .note-button{min-width:58px;min-height:42px;color:var(--ink);cursor:pointer;background:#ffffffad;border:1px solid #20242c24;border-radius:999px;flex:none;font-size:14px;font-weight:680}.harmony-ruler-app .note-button[aria-pressed=true]{color:var(--indigo);background:#243f8f1a;border-color:#243f8f8f}.harmony-ruler-app .ruler-shell{min-height:330px;box-shadow:var(--shadow), inset 0 0 0 1px #20242c14;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:linear-gradient(#ffffffc2,#ffffff61),linear-gradient(90deg,#65c7d81a,#243f8f14);border:1px solid #fffc;border-radius:8px;padding:14px 10px 12px;position:relative;overflow:hidden}.harmony-ruler-app .ruler-shell *,.harmony-ruler-app .readout *,.harmony-ruler-app .controls *,.harmony-ruler-app .legend *{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.harmony-ruler-app .ruler-shell:before{content:"";pointer-events:none;border:1px solid #ffffffd1;border-radius:7px;position:absolute;inset:8px}.harmony-ruler-app .instruction{z-index:5;pointer-events:none;justify-content:center;display:flex;position:absolute;inset:auto 18px 18px}.harmony-ruler-app .instruction span{border:1px solid var(--line);color:var(--muted);background:#ffffffbd;border-radius:999px;padding:8px 12px;font-size:13px}.harmony-ruler-app .ruler-shell.is-playing .instruction{opacity:0}.harmony-ruler-app .meter,.harmony-ruler-app .ticks,.harmony-ruler-app .labels,.harmony-ruler-app .cursor{pointer-events:none;position:absolute;inset:0}.harmony-ruler-app .bar{width:var(--bar-width,3px);height:var(--bar-height,78px);opacity:.72;background:linear-gradient(#65c7d8c7,#243f8fb8);border-radius:999px 999px 2px 2px;position:absolute;bottom:118px;transform:translate(-50%)}.harmony-ruler-app .bar.interval{opacity:.38;background:#243f8f61;bottom:124px}.harmony-ruler-app .bar.red{opacity:.86;background:linear-gradient(#f1d7d3eb,#b95757c7)}.harmony-ruler-app .tick{background:#20242c38;width:1px;height:14px;position:absolute;bottom:88px;transform:translate(-50%)}.harmony-ruler-app .tick.major{background:#20242c6b;height:34px}.harmony-ruler-app .cent-label{color:#20242c94;font-variant-numeric:tabular-nums;font-size:10px;position:absolute;bottom:65px;transform:translate(-50%)}.harmony-ruler-app .scale-line{left:var(--pad);right:var(--pad);background:#20242c2e;height:1px;position:absolute;bottom:88px}.harmony-ruler-app .solfege-label,.harmony-ruler-app .interval-label{text-align:center;white-space:nowrap;position:absolute;transform:translate(-50%)}.harmony-ruler-app .solfege-label{min-width:40px;color:var(--indigo);font-size:13px;font-weight:780;top:18px}.harmony-ruler-app .solfege-label.red{color:var(--red)}.harmony-ruler-app .solfege-label small{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:2px;font-size:10px;font-weight:620;display:block}.harmony-ruler-app .interval-label{color:#20242cb3;writing-mode:vertical-rl;font-size:10px;line-height:1.1;bottom:30px}.harmony-ruler-app .interval-label strong{color:#20242cdb;font-size:10px;font-weight:680}.harmony-ruler-app .cursor-line{background:var(--red);border-radius:999px;width:2px;position:absolute;top:10px;bottom:16px;transform:translate(-50%);box-shadow:0 0 0 5px #b957571f}.harmony-ruler-app .cursor-cap{background:var(--red);border:2px solid #fff;border-radius:999px;width:18px;height:18px;position:absolute;bottom:93px;transform:translate(-50%,50%);box-shadow:0 4px 14px #b9575747}.harmony-ruler-app .footer-note{color:var(--muted);text-align:center;font-size:12px;line-height:1.5}.harmony-ruler-app .legend{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:8px;padding:12px;box-shadow:0 8px 28px #28304014}.harmony-ruler-app .legend-strip{overscroll-behavior-x:contain;scrollbar-width:none;gap:8px;margin-top:10px;padding-bottom:3px;display:flex;overflow-x:auto}.harmony-ruler-app .legend-strip::-webkit-scrollbar{display:none}.harmony-ruler-app .legend-chip{color:var(--ink);white-space:nowrap;background:#ffffff9e;border:1px solid #20242c1f;border-radius:999px;flex:none;padding:8px 10px;font-size:12px;line-height:1}.harmony-ruler-app .legend-chip span{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:5px}@media (width<=390px){.harmony-ruler-app{padding-left:12px;padding-right:12px}.harmony-ruler-app .topbar{flex-direction:column;align-items:flex-start}.harmony-ruler-app h1{font-size:clamp(24px,13vw,48px)}.harmony-ruler-app .readout{grid-template-columns:1fr;gap:8px}.harmony-ruler-app .metric.wide{grid-column:auto}.harmony-ruler-app .metric{padding:12px}.harmony-ruler-app .ruler-shell{min-height:350px}.harmony-ruler-app .interval-label{font-size:9px}}body.harmony-ruler-active{color:#20242c;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#65c7d81f,#0000 32%),linear-gradient(315deg,#243f8f1a,#0000 34%),#f7f4ed;min-height:100svh;margin:0;overflow-x:hidden}
