:root{--color-ink-black:#171b21;--color-paper-white:#f7f3ec;--color-slate-blue:#5b7186;--color-surface-card:#fff;--color-slate-light:#e4e9ed;--color-border-default:#cbd5e1;--color-border-control:#7a8896;--color-status-ok:#2e9e5b;--color-status-ok-bg:#e6f4ea;--color-status-ok-border:#a8dfb9;--color-status-ok-text:#1f7a44;--color-status-warn:#d97706;--color-text-warn:#a64a06;--color-status-warn-bg:#fdefd9;--color-status-warn-border:#f5d096;--color-status-danger:#c0392b;--color-status-danger-bg:#fadbd8;--color-disabled-bg:#edeae2;--color-disabled-fg:#94a3b8;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-1:4px;--radius-2:8px;--radius-3:12px;--font-heading:"Noto Serif SC", "Noto Serif CJK SC", "Noto Serif", serif;--font-body:"Noto Sans SC", "Noto Sans CJK SC", "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}body{background:var(--color-paper-white);color:var(--color-ink-black);font-family:var(--font-body);margin:0}.app-shell{max-width:430px;height:100dvh;min-height:100dvh;padding-bottom:calc(66px + env(safe-area-inset-bottom));flex-direction:column;margin-inline:auto;display:flex}.brand{padding:var(--space-6);font-family:var(--font-heading);font-weight:700}main{min-height:0;padding:var(--space-6);padding-bottom:calc(100px + env(safe-area-inset-bottom));flex:auto;overflow-y:auto}h1{margin:0 0 var(--space-4);font-family:var(--font-heading);font-size:28px}p{color:var(--color-slate-blue);line-height:1.7}.numeric{font-variant-numeric:tabular-nums}.tab-bar{width:100%;max-width:430px;padding:var(--space-2) var(--space-2) calc(var(--space-2) + env(safe-area-inset-bottom));background:var(--color-paper-white);border-top:1px solid var(--color-border-default);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.tab-bar button{justify-content:center;align-items:center;gap:var(--space-1);min-height:48px;color:var(--color-slate-blue);font:400 12px var(--font-body);cursor:pointer;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.tab-icon{border-radius:var(--radius-2);place-items:center;width:48px;height:28px;display:grid}.tab-icon svg{width:24px;height:24px;display:block}.tab-bar button[aria-current=page]{color:var(--color-ink-black);font-weight:700}.tab-bar button[aria-current=page] .tab-icon{background:var(--color-slate-light)}.tab-bar button[aria-current=page] .tab-icon svg{stroke-width:2px}.tab-bar button:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px;border-radius:var(--radius-2)}.about-line{padding:3px var(--space-4);color:var(--color-slate-blue);text-align:center;flex:none;margin:0;font-size:11px;line-height:16px}.sw-update{justify-content:center;align-items:center;gap:var(--space-3);padding:6px var(--space-4);background:var(--color-status-ok-bg);border-bottom:1px solid var(--color-status-ok-border);color:var(--color-status-ok-text);font-size:12px;line-height:18px;display:flex}.sw-update button{border:1px solid var(--color-status-ok-border);background:var(--color-surface-card);min-height:32px;color:var(--color-status-ok-text);font:600 12px var(--font-body);cursor:pointer;border-radius:999px;padding:0 14px}.sw-update button:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}body[data-view=fretboard] .brand{display:none}body[data-view=fretboard] main{padding:0}.fb-view{width:100%;color:var(--color-ink-black);font-family:var(--font-body);padding:20px 20px 78px;position:relative;overflow-x:hidden}.fb-view button{font-family:var(--font-body)}.fb-view button:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}.fb-view [hidden]{display:none!important}.fb-gear{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:44px;height:44px;color:var(--color-slate-blue);cursor:default;border-radius:12px;flex:none;place-items:center;padding:0;display:grid}.fb-gear svg{width:20px;height:20px}.fb-desc-row{align-items:center;gap:12px;min-height:36px;margin-top:12px;display:flex}.fb-desc{min-width:0;max-height:32px;color:var(--color-slate-blue);white-space:normal;word-break:break-word;flex:1;margin:0;font-size:12px;font-weight:400;line-height:16px;overflow:hidden}.fb-accidental{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:74px;height:36px;color:var(--color-slate-blue);cursor:pointer;border-radius:9999px;flex:none;justify-content:center;align-items:center;gap:6px;padding:0;font-size:14px;font-weight:500;line-height:20px;display:flex}.fb-accidental span[data-active=true]{color:var(--color-ink-black);font-weight:700}.fb-board-frame{--fb-board-width:660px;--fb-board-height:214px;--fb-board-board-height:188px;width:100%;height:var(--fb-board-height);margin-top:16px;position:relative}.fb-board-frame:before{height:var(--fb-board-board-height);background:var(--color-ink-black);content:"";border-radius:14px;position:absolute;top:0;left:0;right:0}.fb-board-scroll{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;position:absolute;inset:0;overflow:auto hidden}.fb-board-scroll::-webkit-scrollbar{display:none}.fb-board{width:var(--fb-board-width);height:var(--fb-board-height)}.fb-board svg{width:100%;height:100%;display:block}.fb-row{align-items:center;gap:8px;margin-top:10px;display:flex}.fb-row-label{width:42px;color:var(--color-ink-black);flex:none;font-size:14px;font-weight:700;line-height:20px}.fb-track{overscroll-behavior-x:contain;scrollbar-width:none;flex:1;gap:6px;min-width:0;margin-right:-20px;padding-right:20px;display:flex;overflow-x:auto}.fb-track::-webkit-scrollbar{display:none}.fb-root-chip{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:42px;height:36px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;flex:none;padding:0;font-size:13px;font-weight:500;line-height:20px}.fb-root-chip[aria-pressed=true]{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-paper-white);font-weight:700}.fb-chip{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:36px;color:var(--color-ink-black);white-space:nowrap;cursor:pointer;border-radius:9999px;flex:none;padding:0 16px;font-size:14px;font-weight:500;line-height:20px}.fb-chip[aria-pressed=true]{border-color:var(--color-ink-black);background:var(--color-slate-light);color:var(--color-ink-black);font-weight:700}.fb-chip-box{font-variant-numeric:tabular-nums;padding:0 13px}.fb-mode-row{margin-top:12px}.fb-mode-seg{gap:8px;display:flex}.fb-mode-btn{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:80px;height:40px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;padding:0;font-size:14px;font-weight:500;line-height:20px}.fb-mode-btn[aria-pressed=true]{border-color:var(--color-ink-black);background:var(--color-slate-light);font-weight:700}.fb-summary{border:1px solid var(--color-status-ok-border);background:var(--color-status-ok-bg);min-height:40px;color:var(--color-ink-black);text-align:center;border-radius:12px;justify-content:center;align-items:center;margin-top:12px;padding:10px 12px;font-size:13px;font-weight:700;line-height:20px;display:flex}.fb-legend-row{justify-content:space-between;align-items:center;gap:8px;min-height:36px;margin-top:12px;display:flex}.fb-legend{flex:1;align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}.fb-legend-item{color:var(--color-slate-blue);white-space:nowrap;flex:none;align-items:center;gap:5px;font-size:12px;line-height:16px;display:flex}.fb-swatch{flex:none;width:14px;height:14px}.fb-swatch-root{background:var(--color-status-ok);border-radius:4px}.fb-swatch-scale{background:var(--color-slate-blue);border-radius:50%}.fb-swatch-chord{border:1.5px solid var(--color-slate-blue);background:var(--color-paper-white);border-radius:50%}.fb-display-seg{border:1px solid var(--color-border-default);background:var(--color-surface-card);border-radius:9999px;flex:none;grid-template-columns:1fr 1fr;gap:4px;padding:3px;display:grid}.fb-display-btn{height:28px;color:var(--color-slate-blue);cursor:pointer;background:0 0;border:0;border-radius:9999px;padding:0 10px;font-size:12px;font-weight:500;line-height:16px}.fb-display-btn[aria-pressed=true]{background:var(--color-ink-black);color:var(--color-paper-white);font-weight:700}.fb-footnote{color:var(--color-slate-blue);margin:12px 0 0;font-size:12px;font-weight:400;line-height:1.6}body[data-view=tuner] .brand{display:none}body[data-view=tuner] main{padding:0}.tuner-view{width:100%;color:var(--color-ink-black);font-family:var(--font-body);padding:20px 20px 78px;position:relative;overflow-x:hidden}.tuner-view button{font-family:var(--font-body)}.tuner-view button:focus-visible,.tuner-view .hs-string:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}.tuner-view [hidden]{display:none!important}.tuner-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.tuner-brand{font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:22px;font-weight:700;line-height:28px}.tuner-sub{color:var(--color-slate-blue);margin-top:8px;font-size:14px;font-weight:500;line-height:20px}.gear-btn{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:44px;height:44px;color:var(--color-slate-blue);cursor:pointer;border-radius:12px;flex:none;place-items:center;padding:0;display:grid}.gear-btn svg{width:20px;height:20px}.instrument-seg{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px;display:grid}.seg-btn{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:48px;color:var(--color-ink-black);cursor:pointer;border-radius:14px;padding:0;font-size:15px;font-weight:400;line-height:22px}.seg-btn[aria-pressed=true]{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-paper-white);font-weight:700}.preset-row{align-items:center;gap:8px;height:36px;margin-top:12px;display:flex}.preset-label{flex:none;width:34px;font-size:14px;font-weight:700;line-height:20px}.preset-scroll{overscroll-behavior-x:contain;scrollbar-width:none;flex:1;gap:8px;height:36px;margin-right:-20px;padding-right:20px;display:flex;overflow-x:auto}.preset-scroll::-webkit-scrollbar{display:none}.chip{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:36px;color:var(--color-ink-black);white-space:nowrap;cursor:pointer;border-radius:9999px;flex:none;padding:0 16px;font-size:14px;font-weight:500;line-height:20px}.chip[aria-pressed=true]{border-color:var(--color-slate-blue);background:var(--color-slate-blue);color:var(--color-paper-white);font-weight:700}.mode-row{align-items:center;gap:8px;height:36px;margin-top:12px;display:flex}.mode-chip{border:1px solid var(--color-border-default);height:36px;color:var(--color-slate-blue);cursor:pointer;background:0 0;border-radius:9999px;padding:0 18px;font-size:14px;font-weight:500;line-height:20px}.mode-chip[aria-pressed=true]{border:1.5px solid var(--color-slate-blue);background:var(--color-slate-light);color:var(--color-ink-black);font-weight:700}.cents-readout{color:var(--color-text-warn);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto;font-size:15px;font-weight:700;line-height:20px}.cents-readout.is-ok{color:var(--color-status-ok-text)}.cents-readout.is-danger{color:var(--color-status-danger)}.gauge-wrap{margin-top:20px}.tuner-gauge{--gauge-angle:0deg;width:100%;height:auto;display:block;overflow:visible}.gauge-track{fill:none;stroke:var(--color-slate-light);stroke-linecap:butt}.gauge-target{fill:none;stroke:var(--color-status-ok);stroke-linecap:butt}.gauge-deviation{fill:none;stroke:var(--color-status-warn);stroke-linecap:butt;transition:stroke .14s linear}.gauge-dot{fill:var(--color-ink-black);transition:opacity .14s linear}.gauge-dot-zero{transition:opacity .14s linear}.gauge-label{fill:var(--color-slate-blue);font-family:var(--font-body);font-size:12px;font-weight:400}.gauge-pointer{transform-box:view-box;transform-origin:175px 144px;transform:rotate(var(--gauge-angle));transition:transform .14s cubic-bezier(.2,.7,.3,1)}.gauge-pointer polygon{fill:var(--color-ink-black);transition:fill .14s linear}.gauge-hub{fill:var(--color-ink-black)}.gauge-hub-core{fill:var(--color-slate-blue);transition:fill .14s linear}.tuner-gauge.is-ok .gauge-pointer{transition-duration:.24s}.tuner-gauge.is-ok .gauge-deviation,.tuner-gauge.is-ok .gauge-target{stroke:var(--color-status-ok)}.tuner-gauge.is-ok .gauge-pointer polygon,.tuner-gauge.is-ok .gauge-hub-core{fill:var(--color-status-ok)}.tuner-gauge.is-ok .gauge-dot-zero{opacity:0}.tuner-gauge.is-danger .gauge-deviation{stroke:var(--color-status-danger)}.tuner-gauge.is-danger .gauge-pointer polygon,.tuner-gauge.is-danger .gauge-hub-core{fill:var(--color-status-danger)}.tuner-gauge.is-frozen .gauge-deviation,.tuner-gauge.is-frozen .gauge-pointer,.tuner-gauge.is-frozen .gauge-dots{opacity:.55}.tuner-gauge.is-idle .gauge-deviation{opacity:0}.note-block{text-align:center;margin-top:12px}.note-name{color:var(--color-ink-black);font-family:var(--font-body);letter-spacing:-1.5px;font-variant-numeric:tabular-nums;font-size:72px;font-weight:900;line-height:76px;transition:color .14s linear}.note-name.is-ok{color:var(--color-status-ok)}.status-slot{justify-content:center;align-items:center;height:46px;margin-top:2px;display:flex}.direction{color:var(--color-text-warn);letter-spacing:.5px;white-space:nowrap;font-size:28px;font-weight:700;line-height:36px}.direction.is-idle{color:var(--color-slate-blue);letter-spacing:0;font-size:20px;font-weight:500;line-height:28px}.ok-pill{background:var(--color-status-ok);width:208px;height:46px;color:var(--color-ink-black);letter-spacing:.5px;border-radius:23px;justify-content:center;align-items:center;font-size:28px;font-weight:700;line-height:36px;display:flex}.freq-line{min-height:16px;color:var(--color-slate-blue);text-align:center;font-variant-numeric:tabular-nums;margin-top:6px;font-size:13px;font-weight:400;line-height:16px}.freq-line.is-frozen{color:var(--color-text-warn)}.volume-row{grid-template-columns:78px 1fr;align-items:center;gap:8px;margin-top:8px;display:grid}.volume-label{color:var(--color-slate-blue);white-space:nowrap;font-size:13px;line-height:16px}.volume-track{background:var(--color-slate-light);border-radius:9999px;height:10px;overflow:hidden}.volume-fill{border-radius:inherit;background:var(--color-slate-blue);width:0;height:100%;transition:width 80ms linear}.lower-grid{grid-template-columns:166px 168px;align-items:start;gap:16px;margin-top:12px;display:grid}.headstock-card{border:1px solid var(--color-border-default);background:var(--color-surface-card);border-radius:16px;width:166px;height:148px;position:relative}.headstock-card svg{width:100%;height:100%;display:block}.headstock-svg{width:100%;height:100%}.mirror-btn{z-index:2;border:1px solid var(--color-border-default);background:var(--color-surface-card);width:26px;height:26px;color:var(--color-slate-blue);cursor:pointer;border-radius:50%;place-items:center;padding:0;font-size:14px;line-height:1;display:grid;position:absolute;top:-10px;right:-6px}.mirror-btn[aria-pressed=true]{border-color:var(--color-slate-blue);background:var(--color-slate-light);color:var(--color-ink-black)}.hs-frame{fill:var(--color-paper-white);stroke:var(--color-ink-black);stroke-width:1.75px}.hs-string-line,.hs-connector{stroke:var(--color-border-control);stroke-width:1.25px;stroke-linecap:round}.hs-string.is-selected .hs-string-line,.hs-string.is-selected .hs-connector{stroke:var(--color-ink-black);stroke-width:2.25px}.hs-post{fill:var(--color-surface-card);stroke:var(--color-slate-blue);stroke-width:1.2px}.hs-dot{fill:var(--color-surface-card);stroke:var(--color-border-default);stroke-width:1.5px}.hs-string.is-selected .hs-dot{fill:var(--color-ink-black);stroke:var(--color-ink-black)}.hs-label{fill:var(--color-ink-black);font-family:var(--font-body);font-size:13px;font-weight:700}.hs-hit{fill:#0000;stroke:none;pointer-events:all}.hs-string{cursor:pointer}.hs-string:focus-visible{outline:none}.hs-string:focus-visible .hs-hit{stroke:var(--color-slate-blue);stroke-width:2px}.ref-col{width:168px}.ref-btn{background:var(--color-ink-black);width:168px;height:56px;color:var(--color-paper-white);text-align:left;cursor:pointer;border:0;border-radius:14px;grid-template-rows:22px 16px;grid-template-columns:20px auto;place-content:center;align-items:center;column-gap:6px;padding:0 13px;display:grid}.ref-btn:active{background:#2a313a}.ref-btn svg{grid-row:1/3;width:20px;height:20px}.ref-main{font-size:18px;font-weight:700;line-height:22px}.ref-sub{color:var(--color-disabled-fg);font-variant-numeric:tabular-nums;font-size:11px;font-weight:400;line-height:14px}.ref-hint{color:var(--color-slate-blue);margin:8px 0 0;font-size:12px;line-height:18px}.harmonic-btn{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:168px;height:36px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;margin-top:6px;padding:0;font-size:12px;font-weight:500;line-height:16px}.tuner-empty{text-align:center;flex-direction:column;align-items:center;padding-top:32px;display:flex}.empty-icon{border:1px solid var(--color-border-default);background:var(--color-slate-light);width:72px;height:72px;color:var(--color-slate-blue);border-radius:18px;place-items:center;display:grid}.empty-icon.is-error{background:var(--color-status-danger-bg);color:var(--color-status-danger);border-color:#f1948a}.empty-icon svg{width:32px;height:32px}.empty-title{font-family:var(--font-heading);margin:20px 0 0;font-size:24px;font-weight:700;line-height:32px}.empty-sub{max-width:330px;color:var(--color-slate-blue);margin:6px 0 0;font-size:14px;line-height:20px}.fallback-card{border:1px solid var(--color-border-default);background:var(--color-surface-card);text-align:left;border-radius:16px;width:350px;margin-top:22px;padding:18px 20px}.fallback-title{margin-bottom:12px;font-size:15px;font-weight:700;line-height:22px}.fallback-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.fallback-list li{color:var(--color-ink-black);gap:10px;font-size:14px;line-height:22px;display:flex}.fallback-list li:before{background:var(--color-slate-blue);content:"";border-radius:50%;flex:none;width:6px;height:6px;margin-top:8px}.fallback-list strong{font-weight:500}.primary-btn{background:var(--color-ink-black);width:350px;height:52px;color:var(--color-paper-white);cursor:pointer;border:0;border-radius:14px;margin-top:20px;padding:0;font-size:18px;font-weight:700;line-height:24px}.primary-btn:disabled{background:var(--color-disabled-fg);cursor:progress}.footnote{max-width:330px;color:var(--color-slate-blue);margin:12px 0 0;font-size:12px;line-height:18px}.danger-banner{left:50%;bottom:calc(76px + env(safe-area-inset-bottom));z-index:30;border:1.5px solid var(--color-status-danger);background:var(--color-status-warn-bg);border-radius:12px;grid-template-columns:100px 1fr auto;align-items:center;gap:2px 8px;width:min(350px,100vw - 40px);min-height:64px;padding:9px 16px;display:grid;position:fixed;transform:translate(-50%)}.danger-col{flex-direction:column;gap:2px;display:flex}.danger-col span{line-height:18px}.danger-title{align-items:center;gap:6px;display:flex}.danger-title svg{flex:none;width:16px;height:16px}.danger-col-left span:first-child{color:var(--color-text-warn);font-size:14px;font-weight:700}.danger-col-left span:last-child{color:var(--color-text-warn);white-space:nowrap;font-size:13px;font-weight:500}.danger-col-mid span:first-child{color:var(--color-ink-black);white-space:nowrap;font-size:13px;font-weight:500}.danger-cents{color:var(--color-status-danger);font-variant-numeric:tabular-nums;font-size:15px;font-weight:700}.danger-col-right{text-align:right;align-items:flex-end}.danger-col-right span:first-child{color:var(--color-ink-black);font-size:14px;font-weight:700}.danger-col-right span:last-child{color:var(--color-text-warn);white-space:nowrap;font-size:12px;font-weight:500}.settings-dialog{border:1px solid var(--color-border-default);background:var(--color-paper-white);width:min(350px,100vw - 40px);color:var(--color-ink-black);font-family:var(--font-body);border-radius:16px;padding:0}.settings-dialog::backdrop{background:#171b2159}.settings-form{padding:20px}.settings-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.settings-title{font-family:var(--font-heading);margin:0;font-size:20px;font-weight:700;line-height:28px}.settings-close{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:32px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;padding:0 12px;font-size:13px}.setting-row{border-top:1px solid var(--color-slate-light);cursor:pointer;justify-content:space-between;align-items:center;min-height:52px;font-size:15px;display:flex}.setting-input{opacity:0;width:1px;height:1px;position:absolute}.switch{background:var(--color-border-default);border-radius:9999px;width:48px;height:28px;transition:background .12s linear;position:relative}.switch:after{background:var(--color-surface-card);content:"";border-radius:50%;width:22px;height:22px;transition:transform .12s ease-out;position:absolute;top:3px;left:3px}.setting-input:checked+.switch{background:var(--color-slate-blue)}.setting-input:checked+.switch:after{transform:translate(20px)}.setting-input:focus-visible+.switch{outline:2px solid var(--color-slate-blue);outline-offset:2px}.settings-note{color:var(--color-slate-blue);margin:12px 0 0;font-size:12px;line-height:18px}.demo-badge{z-index:40;color:var(--color-slate-blue);letter-spacing:.08em;background:#f7f3ece0;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:500;line-height:14px;position:fixed;top:6px;right:8px}body[data-view=metronome] .brand{display:none}body[data-view=metronome] main{padding:0}.metro-view{width:100%;color:var(--color-ink-black);font-family:var(--font-body);padding:20px 20px 78px;position:relative;overflow-x:hidden}.metro-view button,.metro-view input{font-family:var(--font-body)}.metro-view button:focus-visible,.metro-view input:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}.metro-view [hidden]{display:none!important}.metro-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.metro-brand{font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:22px;font-weight:700;line-height:28px}.metro-sub{color:var(--color-slate-blue);margin-top:8px;font-size:14px;font-weight:500;line-height:20px}.metro-gear{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:44px;height:44px;color:var(--color-slate-blue);cursor:default;border-radius:12px;flex:none;place-items:center;padding:0;display:grid}.metro-gear svg{width:20px;height:20px}.metro-song{border:1px solid var(--color-border-default);background:var(--color-slate-light);white-space:nowrap;border-radius:9999px;align-items:center;gap:8px;width:100%;height:36px;margin-top:16px;padding:0 14px;display:flex;overflow:hidden}.metro-song-dot{background:var(--color-status-ok);border-radius:50%;flex:none;width:8px;height:8px}.metro-song-text{text-overflow:ellipsis;font-size:13px;font-weight:700;line-height:18px;overflow:hidden}.metro-bpm-block{text-align:center;margin-top:24px}.metro-bpm-line{height:88px;position:relative}.metro-bpm{width:100%;height:88px;color:var(--color-ink-black);letter-spacing:-2px;font-variant-numeric:tabular-nums;cursor:text;background:0 0;border:0;padding:0;font-size:88px;font-weight:900;line-height:88px;display:block;transform:translateY(-7px)}.metro-bpm-input{border:0;border-bottom:2px solid var(--color-slate-blue);width:100%;height:88px;color:var(--color-ink-black);letter-spacing:-2px;text-align:center;font-variant-numeric:tabular-nums;appearance:textfield;background:0 0;border-radius:0;padding:0;font-size:88px;font-weight:900;line-height:88px;position:absolute;inset:0;transform:translateY(-7px)}.metro-bpm-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.metro-bpm-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.metro-bpm-caption{color:var(--color-slate-blue);font-variant-numeric:tabular-nums;margin-top:4px;font-size:14px;font-weight:500;line-height:20px}.metro-beats{justify-content:center;height:28px;margin-top:18px;display:flex}.metro-beat{place-items:center;width:28px;height:28px;display:grid}.metro-beat-mark{border-radius:50%;transition:transform 90ms ease-out,opacity 90ms linear;display:block}.metro-beat.is-normal .metro-beat-mark{border:1.5px solid var(--color-border-control);background:var(--color-surface-card);width:16px;height:16px}.metro-beat.is-accent .metro-beat-mark{background:var(--color-ink-black);border:0;width:22px;height:22px}.metro-beat.is-mute .metro-beat-mark{border:1.5px dashed var(--color-border-control);background:var(--color-disabled-bg);width:14px;height:14px}.metro-beat.is-active .metro-beat-mark{animation:.15s ease-out metro-beat-pop;transform:scale(1.32);box-shadow:0 0 0 4px #5b718629}.metro-beat.is-active.is-normal .metro-beat-mark{border-color:var(--color-slate-blue);border-width:2.5px}.metro-beats.is-countin .metro-beat-mark{opacity:.45}@keyframes metro-beat-pop{0%{transform:scale(1)}to{transform:scale(1.32)}}.metro-stepper{align-items:center;height:48px;margin-top:20px;display:flex}.metro-step{width:48px;height:48px;color:var(--color-ink-black);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.metro-step svg{width:30px;height:30px}.metro-step:active{color:var(--color-slate-blue)}.metro-slider{appearance:none;cursor:pointer;background:0 0;flex:1;height:48px;margin:0 16px;padding:0}.metro-slider::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--color-slate-blue) 0%, var(--color-slate-blue) var(--bpm-progress,0%), var(--color-slate-light) var(--bpm-progress,0%), var(--color-slate-light) 100%);border-radius:9999px;height:6px}.metro-slider::-webkit-slider-thumb{border:2px solid var(--color-surface-card);background:var(--color-slate-blue);appearance:none;border-radius:50%;width:24px;height:24px;margin-top:-9px}.metro-slider::-moz-range-track{background:var(--color-slate-light);border-radius:9999px;height:6px}.metro-slider::-moz-range-progress{background:var(--color-slate-blue);border-radius:9999px;height:6px}.metro-slider::-moz-range-thumb{border:2px solid var(--color-surface-card);background:var(--color-slate-blue);border-radius:50%;width:24px;height:24px}.metro-slider:focus-visible{outline-offset:0;border-radius:9999px}.metro-hint{color:var(--color-slate-blue);text-align:center;margin:6px 0 0;font-size:12px;font-weight:400;line-height:16px}.metro-tap{background:var(--color-ink-black);width:100%;height:62px;color:var(--color-paper-white);cursor:pointer;touch-action:manipulation;border:0;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;margin-top:18px;padding:0;transition:transform 70ms ease-out,filter 70ms linear;display:flex}.metro-tap:active{filter:brightness(1.18);transform:scale(.985)}.metro-tap-main{font-size:18px;font-weight:700;line-height:24px}.metro-tap-sub{color:var(--color-border-default);font-size:12px;font-weight:400;line-height:16px}.metro-tap.is-result .metro-tap-sub{color:var(--color-status-ok-border)}.metro-row{align-items:flex-start;display:flex}.metro-row-meter{margin-top:22px}.metro-row-sub{margin-top:16px}.metro-row-accent{margin-top:12px}.metro-row-label{width:42px;color:var(--color-ink-black);flex:none;font-size:14px;font-weight:700;line-height:36px}.metro-row-accent .metro-row-label{line-height:44px}.metro-track{overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1;gap:4px;min-width:0;height:36px;display:flex;overflow:auto hidden}.metro-track::-webkit-scrollbar{display:none}.metro-chip{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:36px;color:var(--color-ink-black);white-space:nowrap;cursor:pointer;border-radius:9999px;flex:none;padding:0 16px;font-size:14px;font-weight:500;line-height:20px}.metro-chip[aria-pressed=true]{border-color:var(--color-slate-blue);background:var(--color-slate-blue);color:var(--color-paper-white);font-weight:700}.metro-chip-meter{width:44px;padding:0}.metro-chip-sub{padding:0}.metro-sub-track{overflow:visible}.metro-accent-track{gap:8px;height:44px}.metro-row-accent{height:44px}.metro-chip-accent{border-radius:12px;width:68px;height:44px;padding:0;font-weight:400}.metro-chip-accent[data-accent=accent]{background:var(--color-ink-black);color:var(--color-paper-white);border:0;font-weight:700}.metro-chip-accent[data-accent=normal]{border:1px solid var(--color-border-default);background:var(--color-surface-card);color:var(--color-ink-black)}.metro-chip-accent[data-accent=mute]{border:1.5px dashed var(--color-border-control);background:var(--color-disabled-bg);color:var(--color-border-control)}.metro-transport{align-items:center;height:72px;margin-top:38px;display:flex;position:relative}.metro-countin{text-align:center;border:1px solid var(--color-border-default);background:var(--color-surface-card);width:124px;height:36px;color:var(--color-ink-black);white-space:nowrap;cursor:pointer;border-radius:9999px;padding:0;font-size:13px;font-weight:500;line-height:18px}.metro-countin[aria-pressed=true]{border-color:var(--color-slate-blue);background:var(--color-slate-blue);color:var(--color-paper-white);font-weight:700}.metro-play{background:var(--color-slate-blue);width:72px;height:72px;color:var(--color-paper-white);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;transition:box-shadow .14s ease-out,filter 70ms linear;display:grid;position:absolute;left:50%;transform:translate(-50%)}.metro-play svg{width:28px;height:28px}.metro-play.is-playing{box-shadow:0 0 0 6px #5b718629}.metro-play:active{filter:brightness(1.08)}.metro-toast{left:50%;bottom:calc(72px + env(safe-area-inset-bottom));z-index:30;border:1px solid var(--color-border-default);background:var(--color-surface-card);width:min(350px,100vw - 40px);min-height:44px;color:var(--color-ink-black);border-radius:12px;align-items:center;gap:8px;padding:8px 8px 8px 16px;font-size:13px;line-height:18px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 6px 18px #171b211f}.metro-toast>span{flex:1}.metro-toast-close{width:28px;height:28px;color:var(--color-slate-blue);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;padding:0;font-size:18px;line-height:1;display:grid}.metro-demo-badge{z-index:40;color:var(--color-slate-blue);letter-spacing:.08em;background:#f7f3ece0;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:500;line-height:14px;position:fixed;top:6px;right:8px}body[data-view=setlist] .brand{display:none}body[data-view=setlist] main{padding:0}.setlist-view{width:100%;color:var(--color-ink-black);font-family:var(--font-body);padding:20px 20px 88px;position:relative;overflow-x:hidden}.setlist-view button,.setlist-view input,.setlist-view select{font-family:var(--font-body)}.setlist-view button{-webkit-tap-highlight-color:transparent}.setlist-view button:focus-visible,.setlist-view input:focus-visible,.setlist-view select:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}.setlist-view [hidden]{display:none!important}.set-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.set-head-text{min-width:0}.set-brand{font-family:var(--font-heading);letter-spacing:0;margin:0;font-size:22px;font-weight:700;line-height:28px}.set-sub{color:var(--color-slate-blue);margin-top:8px;font-size:14px;font-weight:500;line-height:20px}.set-gear{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:44px;height:44px;color:var(--color-slate-blue);cursor:default;border-radius:12px;flex:none;place-items:center;padding:0;display:grid}.set-gear svg{width:20px;height:20px}.set-search{border:1px solid var(--color-border-default);background:var(--color-surface-card);border-radius:14px;align-items:center;gap:10px;height:48px;margin-top:20px;padding:0 16px;display:flex}.set-search:focus-within{border-color:var(--color-border-control);box-shadow:0 0 0 2px var(--color-slate-light)}.set-search-icon{width:20px;height:20px;color:var(--color-slate-blue);flex:none;place-items:center;display:grid}.set-search-icon svg{width:20px;height:20px}.set-search-input{min-width:0;height:100%;color:var(--color-ink-black);background:0 0;border:0;flex:1;padding:0;font-size:15px;line-height:20px}.set-search-input:focus-visible{outline:none}.set-search-input::placeholder{color:var(--color-disabled-fg)}.set-filter{justify-content:space-between;align-items:center;gap:8px;min-height:36px;margin-top:18px;display:flex}.set-bands{gap:8px;min-width:0;display:flex}.set-band{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:36px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;flex:none;padding:0 16px;font-size:14px;font-weight:500;line-height:20px}.set-band[aria-pressed=true]{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-paper-white);font-weight:700}.set-sort{min-height:36px;color:var(--color-slate-blue);white-space:nowrap;cursor:pointer;flex:none;align-items:center;gap:2px;font-size:13px;font-weight:500;line-height:18px;display:flex}.set-sort-label{color:var(--color-slate-blue)}.set-sort-select{width:44px;max-width:44px;color:var(--color-slate-blue);appearance:none;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:500;line-height:18px}.set-sort-select option{background:var(--color-surface-card);color:var(--color-ink-black)}.set-sort-caret{color:var(--color-slate-blue);pointer-events:none;font-size:10px}.set-card{background:var(--color-ink-black);min-height:108px;color:var(--color-paper-white);border-radius:16px;margin-top:6px;padding:16px 16px 12px;display:block}.set-card-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.set-card-text{flex:1;min-width:0}.set-card-label{color:var(--color-slate-light);font-size:12px;font-weight:500;line-height:16px}.set-card-title{overflow-wrap:anywhere;color:var(--color-paper-white);font-family:var(--font-heading);margin:4px 0 0;font-size:24px;font-weight:700;line-height:32px}.set-card-actions{flex:none;align-items:center;gap:8px;display:flex}.set-card-step,.set-card-play{cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid}.set-card-step{border:1.5px solid var(--color-slate-blue);width:44px;height:44px;color:var(--color-paper-white);background:0 0}.set-card-step svg{width:16px;height:16px}.set-card-play{background:var(--color-status-ok);width:48px;height:48px;color:var(--color-paper-white);border:0}.set-card-play svg{width:22px;height:22px}.set-card-step:disabled,.set-card-play:disabled{opacity:.35;cursor:default}.set-card-status-row{align-items:center;gap:6px;min-height:18px;margin-top:10px;display:flex}.set-status-dot{background:var(--color-status-ok);border-radius:50%;flex:none;width:8px;height:8px}.set-card-status-row.is-manual .set-status-dot{background:var(--color-status-warn)}.set-card-status{color:var(--color-paper-white);font-size:12px;font-weight:500;line-height:18px}.set-card-status-row.is-manual .set-card-status{color:var(--color-status-warn);font-weight:700}.set-card-note{color:var(--color-slate-light);margin:6px 0 0;font-size:12px;font-weight:400;line-height:1.6}.set-card-manual{border:1px solid var(--color-status-warn);height:30px;color:var(--color-status-warn);cursor:pointer;background:0 0;border-radius:9999px;margin-top:10px;padding:0 12px;font-size:12px;font-weight:700;line-height:16px}.set-list{margin-top:12px}.set-row{border:1px solid var(--color-border-default);background:var(--color-surface-card);width:100%;color:var(--color-ink-black);text-align:left;border-radius:12px;padding:11px 16px 12px;display:block;position:relative;overflow:hidden}.set-row-main{cursor:pointer}.set-row-main:focus-visible{outline:2px solid var(--color-slate-blue);outline-offset:2px}.set-row+.set-row{margin-top:10px}.set-row.is-current{background:var(--color-status-ok-bg)}.set-row.is-current.is-unverified{background:var(--color-status-warn-bg)}.set-row.is-current:before{background:var(--color-status-ok);content:"";border-radius:0 2px 2px 0;width:4px;position:absolute;top:10px;bottom:10px;left:0}.set-row.is-current.is-unverified:before{background:var(--color-text-warn)}.set-row-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.set-row-title{min-width:0;color:var(--color-ink-black);font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:20px;font-weight:700;line-height:28px;overflow:hidden}.set-row-pill{white-space:nowrap;border-radius:9999px;flex:none;align-items:center;height:24px;margin-top:2px;padding:0 10px;font-size:12px;font-weight:700;line-height:16px;display:inline-flex}.set-row-pill.is-rehearsing{border:1px solid var(--color-status-ok-border);background:var(--color-status-ok-bg);color:var(--color-status-ok-text)}.set-row-pill.is-performed{border:1px solid var(--color-slate-light);background:var(--color-slate-light);color:var(--color-slate-blue)}.set-row-pill.is-unverified{border:1px solid var(--color-status-warn-border);background:var(--color-status-warn-bg);color:var(--color-text-warn)}.set-row-meta{grid-template-columns:122px minmax(0,1fr);align-items:baseline;margin-top:2px;display:grid}.set-row-artist{color:var(--color-slate-blue);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400;line-height:18px;overflow:hidden}.set-row-tempo{min-width:0;color:var(--color-ink-black);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700;line-height:20px}.set-row-tempo.is-unverified{color:var(--color-text-warn)}.set-row-note{border-top:1px solid var(--color-slate-light);color:var(--color-slate-blue);margin-top:8px;padding-top:7px;font-size:12px;font-weight:400;line-height:1.6}.set-row-tools{justify-content:flex-end;margin-top:6px;display:flex}.set-note-btn{border:1px solid var(--color-border-default);height:28px;color:var(--color-slate-blue);cursor:pointer;background:0 0;border-radius:9999px;padding:0 10px;font-size:12px;font-weight:500;line-height:16px}.set-note-btn:hover{border-color:var(--color-border-control);color:var(--color-ink-black)}.set-note-editor{border-top:1px solid var(--color-slate-light);margin-top:8px;padding-top:9px}.set-note-input{border:1px solid var(--color-border-default);background:var(--color-paper-white);width:100%;height:38px;color:var(--color-ink-black);border-radius:8px;padding:0 10px;font-size:13px;line-height:18px}.set-note-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.set-note-meter{color:var(--color-slate-blue);align-items:center;gap:4px;margin-right:auto;font-size:12px;line-height:16px;display:inline-flex}.set-note-meter-select{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:30px;color:var(--color-ink-black);border-radius:8px;padding:0 6px;font-size:12px}.set-note-save,.set-note-clear,.set-note-cancel{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:30px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;padding:0 12px;font-size:12px;font-weight:500}.set-note-save{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-paper-white)}.set-note-clear{color:var(--color-status-danger);border-color:var(--color-status-danger-bg)}.set-empty{border:1px dashed var(--color-border-default);background:var(--color-surface-card);color:var(--color-slate-blue);text-align:center;border-radius:12px;margin:0;padding:26px 16px;font-size:14px;line-height:20px}.set-footer{margin-top:16px}.set-footer-line{color:var(--color-slate-blue);margin:0;font-size:12px;font-weight:400;line-height:1.6}.set-mine{border-top:1px solid var(--color-border-default);margin-top:24px;padding-top:18px}.set-mine-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.set-mine-title{font-family:var(--font-heading);margin:0;font-size:16px;font-weight:700;line-height:24px}.set-mine-new{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:32px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;flex:none;align-items:center;gap:4px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.set-mine-new svg{width:14px;height:14px}.set-mine-empty{color:var(--color-slate-blue);margin:8px 0 0;font-size:12px;font-weight:400;line-height:1.6}.set-mine-form{align-items:center;gap:8px;margin-top:10px;display:flex}.set-mine-input{border:1px solid var(--color-border-default);background:var(--color-surface-card);min-width:0;height:36px;color:var(--color-ink-black);border-radius:8px;flex:1;padding:0 10px;font-size:13px}.set-mine-form-save,.set-mine-form-cancel{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:32px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;flex:none;padding:0 12px;font-size:13px;font-weight:500}.set-mine-form-save{border-color:var(--color-ink-black);background:var(--color-ink-black);color:var(--color-paper-white)}.set-custom{border:1px solid var(--color-border-default);background:var(--color-surface-card);border-radius:12px;margin-top:10px;padding:12px}.set-custom-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.set-custom-toggle{min-width:0;color:var(--color-ink-black);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:baseline;gap:8px;padding:0;display:flex}.set-custom-name{font-family:var(--font-heading);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:700;line-height:22px;overflow:hidden}.set-custom-count{color:var(--color-slate-blue);font-variant-numeric:tabular-nums;flex:none;font-size:12px;font-weight:400;line-height:16px}.set-custom-actions{flex:none;align-items:center;gap:6px;display:flex}.set-custom-rehearse,.set-custom-rename,.set-custom-delete{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:28px;color:var(--color-ink-black);cursor:pointer;border-radius:9999px;padding:0 9px;font-size:12px;font-weight:500;line-height:16px}.set-custom-rehearse{border-color:var(--color-status-ok-border);background:var(--color-status-ok-bg);color:var(--color-status-ok-text);font-weight:700}.set-custom-rehearse:disabled{opacity:.4;cursor:default}.set-custom-delete{color:var(--color-status-danger)}.set-custom-confirm{background:var(--color-status-danger-bg);border-radius:8px;align-items:center;gap:8px;margin-top:10px;padding:8px 10px;display:flex}.set-custom-confirm-text{min-width:0;color:var(--color-status-danger);flex:1;font-size:12px;line-height:16px}.set-custom-delete-confirm,.set-custom-delete-cancel{border:1px solid var(--color-status-danger);background:var(--color-status-danger);height:28px;color:var(--color-paper-white);cursor:pointer;border-radius:9999px;flex:none;padding:0 10px;font-size:12px;font-weight:700}.set-custom-delete-cancel{border-color:var(--color-border-control);background:var(--color-surface-card);color:var(--color-ink-black);font-weight:500}.set-custom-body{border-top:1px solid var(--color-slate-light);margin-top:10px;padding-top:9px}.set-custom-toolbar{justify-content:flex-start;display:flex}.set-custom-add{border:1px dashed var(--color-border-control);height:30px;color:var(--color-slate-blue);cursor:pointer;background:0 0;border-radius:9999px;align-items:center;gap:4px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex}.set-custom-add svg{width:14px;height:14px}.set-custom-picker{border:1px solid var(--color-border-default);background:var(--color-paper-white);border-radius:8px;max-height:300px;margin-top:10px;padding:6px 8px;overflow-y:auto}.set-picker-row{cursor:pointer;border-radius:6px;grid-template-columns:20px minmax(0,auto) minmax(0,1fr);align-items:baseline;gap:8px;padding:6px 4px;display:grid}.set-picker-row+.set-picker-row{border-top:1px solid var(--color-slate-light)}.set-picker-row.is-added{color:var(--color-disabled-fg);cursor:default}.set-picker-check{width:16px;height:16px;margin:0}.set-picker-title{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;line-height:18px;overflow:hidden}.set-picker-meta{color:var(--color-slate-blue);text-align:right;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:16px;overflow:hidden}.set-picker-meta.is-unverified{color:var(--color-text-warn)}.set-custom-song{border:1px solid var(--color-border-default);background:var(--color-surface-card);border-radius:10px;margin-top:8px;padding:9px 10px;position:relative}.set-custom-song.is-current{background:var(--color-status-ok-bg);box-shadow:inset 3px 0 0 var(--color-status-ok)}.set-custom-song.is-dragging{opacity:.55}.set-custom-song-main{cursor:pointer;padding-right:22px}.set-custom-drag{width:20px;height:20px;color:var(--color-disabled-fg);pointer-events:none;place-items:center;display:grid;position:absolute;top:11px;right:8px}.set-custom-drag svg{width:16px;height:16px}.set-custom-song-main .set-row-title{font-size:16px;line-height:24px}.set-custom-song-main .set-row-meta{grid-template-columns:96px minmax(0,1fr)}.set-custom-song-actions{align-items:center;gap:6px;margin-top:7px;display:flex}.set-custom-up,.set-custom-down,.set-custom-remove{border:1px solid var(--color-border-default);background:var(--color-surface-card);height:26px;color:var(--color-slate-blue);cursor:pointer;border-radius:9999px;padding:0 9px;font-size:12px;font-weight:500;line-height:16px}.set-custom-up,.set-custom-down{width:28px;padding:0;font-size:14px}.set-custom-up:disabled,.set-custom-down:disabled{opacity:.35;cursor:default}.set-custom-remove{color:var(--color-status-danger);margin-left:auto}
