@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/oswald-latin-500-normal-B-eyT0Dw.woff2)format("woff2"),url(/assets/oswald-latin-500-normal-DM85Di4w.woff)format("woff")}@font-face{font-family:Oswald;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/oswald-latin-700-normal-vy6hmKSr.woff2)format("woff2"),url(/assets/oswald-latin-700-normal-UmC9Ev9x.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-latin-700-normal-7sUh57Bg.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-700-normal-CNHXzs6v.woff)format("woff")}:root{--paper:#f4f1ea;--ink:#1a2b4c;--muted:#5a6478;--accent:#e05a3d;--accent-2:#e5a93b;--on-accent:#f4f1ea;--on-accent-2:#1a2b4c;--rail:#1a2b4c;--on-rail:#f4f1ea;--shadow-ink:#1a2b4c;--font-display:"Oswald", system-ui, sans-serif;--font-data:"IBM Plex Mono", ui-monospace, monospace;--rule:2px;--radius:0;--shadow:4px 4px 0 var(--shadow-ink);--shadow-btn:3px 3px 0 var(--shadow-ink);--tabbar-h:64px;--actionbar-h:70px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--paper:#14213b;--ink:#f4f1ea;--muted:#a9b0bf;--rail:#0e182c;--shadow-ink:#0e182c}}*{box-sizing:border-box}html,body{overscroll-behavior-y:none}body{background:var(--paper);color:var(--ink);font:500 15px/1.4 var(--font-data);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);margin:0}button{font:inherit;color:inherit;min-width:44px;min-height:44px}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.caps{text-transform:uppercase;letter-spacing:.06em}.label{font:500 13px/1 var(--font-display);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.btn,.btn-icon,.ticket,.seg button{background:var(--paper);color:var(--ink);border:var(--rule) solid var(--ink);border-radius:var(--radius);touch-action:manipulation}.btn,.btn-icon{box-shadow:var(--shadow-btn);cursor:pointer;min-height:44px}.btn{font:700 19px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;padding:0 20px}.btn-primary{background:var(--accent);color:var(--on-accent);border:var(--rule) solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-btn);min-height:44px;font:700 19px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;touch-action:manipulation;padding:0 20px}.btn-primary:disabled{opacity:.5}a.btn,a.btn-primary{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn-icon{justify-content:center;align-items:center;width:44px;height:44px;padding:0;font-size:18px;display:inline-flex}.ticket{min-height:44px;font:500 15px/1 var(--font-data);padding:0 14px}.ticket[aria-pressed=true],.ticket-active{background:var(--ink);color:var(--paper)}.stamp{background:var(--accent-2);color:var(--on-accent-2);border:var(--rule) solid var(--ink);border-radius:var(--radius);font:500 12px/1.2 var(--font-data);overflow-wrap:anywhere;max-width:100%;padding:2px 8px;display:inline-block}.stamp-alert{background:var(--accent);color:var(--on-accent);font-size:19px;font-weight:700}.stamp-ok{background:var(--ink);color:var(--paper)}.seg{border:var(--rule) solid var(--ink);border-radius:var(--radius);display:inline-flex}.seg button{font:500 15px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;border:0;border-radius:0;padding:0 14px}.seg button+button{border-left:var(--rule) solid var(--ink)}.seg button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.block{border:var(--rule) solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);background:var(--paper);padding:12px}.block>h2{border-bottom:var(--rule) solid var(--ink);font:500 17px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;padding-bottom:6px}.input{background:var(--paper);min-height:44px;color:var(--ink);border:var(--rule) solid var(--ink);border-radius:var(--radius);font:500 16px/1 var(--font-data);padding:0 12px}.btn,.btn-primary,.btn-icon,.ticket{transition:transform .12s cubic-bezier(.3,1.6,.5,1),box-shadow .12s cubic-bezier(.3,1.6,.5,1)}.btn:active,.btn-primary:active,.btn-icon:active{box-shadow:1px 1px 0 var(--shadow-ink);transition:none;transform:translate(2px,2px)}.ticket:active{transition:none;transform:translate(2px,2px)}@media (prefers-reduced-motion:reduce){.btn,.btn-primary,.btn-icon,.ticket{transition:none}}.fretboard{align-items:center;gap:8px;max-width:360px;display:flex}.fretboard-full{width:100%}.fretboard-mini{width:72px}.fretboard-svg{touch-action:manipulation;-webkit-user-select:none;user-select:none;flex:1;width:100%;height:auto}.fretboard-window-buttons{flex-direction:column;gap:8px;display:flex}.fb-fret,.fb-string{stroke:var(--ink);stroke-width:3px}.fretboard-svg-mini .fb-fret,.fretboard-svg-mini .fb-string{stroke-width:6px}.fb-inlay{fill:var(--accent-2)}.fb-nut{fill:var(--ink)}.fb-cell{cursor:pointer}.fb-cell:focus-visible,.fb-toggle:focus-visible{outline:2px solid var(--accent)}.fb-marker{fill:var(--ink);font-family:var(--font-data);font-size:24px;font-weight:700}.fb-basefret,.fb-inlay-num{fill:var(--muted);font-family:var(--font-data);font-size:14px;font-weight:700}.fb-dot circle{fill:var(--ink)}.fb-dot-text{fill:var(--paper);font-family:var(--font-data);font-size:16px;font-weight:700}.fb-dot-root circle{fill:var(--ink);stroke:var(--accent);stroke-width:4px}.fb-dot-open .fb-ring{fill:var(--paper);stroke:var(--ink);stroke-width:3px}.fb-dot-open .fb-dot-text{fill:var(--ink);font-size:15px}.fb-dot-open.fb-dot-root .fb-ring{fill:var(--ink);stroke:var(--accent);stroke-width:4px}.fb-dot-open.fb-dot-root .fb-dot-text{fill:var(--paper)}.fretboard-svg-mini .fb-dot.fb-dot-root circle{stroke-width:12px}.fb-offwindow{fill:var(--ink);font-family:var(--font-data);font-size:19px;font-weight:700}.fretboard-svg-editable{touch-action:none}.rail{background:var(--rail);color:var(--on-rail);border-bottom:2px solid var(--ink);box-sizing:border-box;align-items:center;gap:8px;min-height:68px;padding:12px 16px;display:flex;overflow-x:auto}.rail .ticket{box-shadow:none;color:var(--on-rail);border-color:var(--on-rail);background:0 0;flex:none}.rail .ticket[aria-pressed=true]{background:var(--accent-2);color:var(--on-accent-2);border-color:var(--accent-2)}.rail-note{font-family:var(--font-data);flex-wrap:wrap;font-size:14px;font-weight:500}.rail-tickets{flex-wrap:wrap;gap:8px;display:flex}.rail-tickets .ticket[aria-pressed=true]{background:var(--accent-2);color:var(--on-accent-2)}.band-score{font:700 19px/1 var(--font-display);letter-spacing:.04em;text-transform:none;color:var(--on-accent-2)}.band-right .btn-icon{box-shadow:none;color:var(--on-accent-2);background:0 0;border-color:#0000;margin-right:-10px;font-size:22px}.score-panel{font-family:var(--font-data);margin:12px 16px 0;padding:8px 12px}.score-total{font-size:20px;font-weight:700}.score-panel ul{color:var(--muted);margin:4px 0 0;padding:0;font-size:14px;list-style:none}.name-cycler .band{touch-action:pan-y;-webkit-user-select:none;user-select:none}.chip-row{gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.filter-bar,.tag-input{flex-direction:column;gap:8px;padding:8px 0;display:flex}.screen{padding:16px 16px calc(var(--tabbar-h) + var(--actionbar-h) + env(safe-area-inset-bottom) + 16px)}.tab-bar{z-index:10;background:var(--rail);border-top:2px solid var(--ink);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);box-sizing:border-box;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-bar a{min-height:44px;color:var(--on-rail);font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;flex:1;justify-content:center;align-items:center;font-size:15px;font-weight:500;text-decoration:none;display:flex}.tab-bar a[aria-current=page]{background:var(--accent);color:var(--on-accent);font-size:19px;font-weight:700}.strip{background:var(--accent-2);min-height:44px;color:var(--on-accent-2);border-bottom:2px solid var(--ink);font-family:var(--font-data);justify-content:space-between;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:500;display:flex}.strip a{min-height:44px;color:var(--on-accent-2);align-items:center;font-weight:700;text-decoration:underline;display:inline-flex}.strip-warn{background:var(--accent);color:var(--on-accent);font-size:19px;font-weight:700}.strip-dismiss{min-width:44px;min-height:44px;color:var(--on-accent-2);font:inherit;background:0 0;border:0;font-weight:700}.toast-host{left:16px;right:16px;bottom:calc(var(--tabbar-h) + var(--actionbar-h) + env(safe-area-inset-bottom) + 8px);z-index:20;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed}.toast{background:var(--rail);color:var(--on-rail);border:2px solid var(--ink);box-shadow:var(--shadow);font-family:var(--font-data);pointer-events:auto;border-radius:0;padding:10px 14px;font-size:14px;font-weight:500}.toast-update{left:16px;right:16px;bottom:calc(var(--tabbar-h) + var(--actionbar-h) + env(safe-area-inset-bottom) + 72px);z-index:20;justify-content:space-between;align-items:center;gap:8px;display:flex;position:fixed}.hint{color:var(--muted);text-align:center;margin:0}.sheet-backdrop{z-index:20;background:#1a2b4c8c;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--paper);width:100%;max-height:90vh;color:var(--ink);border-top:3px solid var(--ink);padding-bottom:env(safe-area-inset-bottom);border-radius:0;flex-direction:column;display:flex}.sheet-head{background:var(--rail);color:var(--on-rail);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:4px 8px 4px 16px;display:flex}.sheet-head h2{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:20px;font-weight:700}.sheet-head .btn-icon{color:var(--on-rail);border-color:var(--on-rail);box-shadow:none;background:0 0}.sheet-body{min-height:0;padding:16px;overflow-y:auto}.sheet form{flex-direction:column;gap:12px;display:flex}.sheet .field{flex-direction:column;gap:4px;display:flex}.sheet-actions{justify-content:space-between;display:flex}.band{background:var(--accent);color:var(--on-accent);border-bottom:2px solid var(--ink);flex-direction:column;justify-content:space-between;padding:8px 16px;display:flex;overflow:hidden}.band-symbol-variant{height:128px}.band-title-variant{height:96px}.band-top{justify-content:space-between;align-items:center;gap:8px;min-height:28px;display:flex}.band-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--on-accent-2);font:700 19px/1 var(--font-display);letter-spacing:.04em;text-transform:uppercase;overflow:hidden}.band-right{white-space:nowrap;color:var(--on-accent-2);font:700 19px/1 var(--font-display);letter-spacing:.06em;text-transform:uppercase;flex:none;align-items:center;gap:8px;display:flex}.band-title,.band-symbol{color:var(--on-accent);white-space:nowrap;margin:0;line-height:1;overflow:visible}.band-title{font-family:var(--font-display);letter-spacing:.04em;text-shadow:3px 3px 0 var(--shadow-ink);padding:0 3px 3px 0;font-size:clamp(28px,12vw,48px);font-weight:700}.band-symbol{font-family:var(--font-data);font-size:var(--band-symbol-size,80px);text-transform:none;text-shadow:4px 4px 0 var(--shadow-ink);font-weight:700}@media (height<=699px){.band-symbol-variant{height:96px;padding-top:4px;padding-bottom:4px}.band-symbol-variant .band-top{min-height:22px}.band-symbol{font-size:min(64px, var(--band-symbol-size,80px))}}.action-bar{left:0;right:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));z-index:9;min-height:var(--actionbar-h);background:var(--paper);border-top:2px solid var(--ink);align-items:center;gap:8px;padding:8px 16px;display:flex;position:fixed}.action-bar>*{flex:1}.sheet .label{display:block}.sheet .input{box-sizing:border-box;width:100%}.notes-input{resize:vertical;padding:8px 12px;line-height:1.4}.facet-stamps,.detail-tags{flex-wrap:wrap;gap:6px;display:flex}.tag-input{flex-direction:column;gap:4px;padding:0;display:flex}.tag-field{flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;display:flex}.tag-field:focus-within{outline:3px solid var(--accent);outline-offset:2px}.tag-chip{align-items:center;gap:4px;padding:0 0 0 8px;display:inline-flex}.tag-remove{min-width:44px;min-height:44px;color:inherit;background:0 0;border:0;margin:-12px 0;padding:0;font-weight:700}.tag-text{min-width:96px;min-height:44px;color:var(--ink);font:500 16px/1 var(--font-data);background:0 0;border:0;flex:1;padding:0}.tag-text:focus-visible{outline:none}.sheet-cancel{flex:none;width:110px}.build,.shape-detail{--band-h:128px;--banner-h:0px;--notice-h:0px;--board-min-h:280px;--build-chrome:calc(var(--band-h) + 70px + 64px + 8px + var(--banner-h) + var(--notice-h) + var(--actionbar-h) + var(--tabbar-h) + env(safe-area-inset-top) + env(safe-area-inset-bottom))}@media (height<=699px){.build,.shape-detail{--band-h:96px}}.build{flex-direction:column;gap:0;margin:-16px -16px 0;display:flex}.banners:has(.strip)~.screen :is(.build,.shape-detail){--banner-h:46px}.banners:has(.strip-warn)~.screen :is(.build,.shape-detail){--banner-h:72px}:is(.build,.shape-detail):has(>.strip){--notice-h:46px}.build .strip{margin:0}.build-controls{justify-content:space-between;align-items:center;gap:8px;padding:8px 16px;display:flex}.build-window{gap:8px;display:flex}.build-board{justify-content:center;padding:0 16px;display:flex}.build-board .fretboard{justify-content:center;width:100%;max-width:360px}.build-board .fretboard-svg{width:auto;max-width:100%;max-height:max(var(--board-min-h), calc(100dvh - var(--build-chrome)))}.action-bar .build-clear{flex:none;width:110px}.shape-detail{flex-direction:column;display:flex}.vault{flex-direction:column;margin:-16px -16px 0;display:flex}.vault .screen-body{padding:0 16px calc(var(--actionbar-h) + 16px);flex-direction:column;gap:12px;display:flex}.vault .block{flex-direction:column;align-items:flex-start;gap:12px;margin-top:16px;display:flex}.vault-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.vault-row{background:var(--paper);border:var(--rule) solid var(--ink);border-radius:var(--radius);min-height:44px;box-shadow:var(--shadow);color:var(--ink);align-items:center;gap:12px;padding:8px 12px 8px 8px;text-decoration:none;display:flex}.vault-row:active{box-shadow:2px 2px 0 var(--shadow-ink);transition:none;transform:translate(2px,2px)}@media (prefers-reduced-motion:no-preference){.vault-row{transition:transform .12s cubic-bezier(.3,1.6,.5,1),box-shadow .12s cubic-bezier(.3,1.6,.5,1)}}.vault-diagram{border:var(--rule) solid var(--ink);flex:none;width:84px;padding:4px}.vault-diagram .fretboard-mini{width:100%}.vault-row-text{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.vault-symbol{font:700 26px/1.1 var(--font-data)}.vault-row .vault-nickname{font:500 13px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.vault-tags{flex-wrap:wrap;gap:4px;display:flex}.vault-chevron{font:700 26px/1 var(--font-data);flex:none}.vault-nickname{color:var(--muted);overflow-wrap:anywhere}.shape-detail{gap:0;margin:-16px -16px 0}.shape-detail .strip{margin:0}.detail-board{justify-content:center;padding:12px 16px;display:flex}.detail-board .fretboard{justify-content:center;width:100%;max-width:360px}.detail-board .fretboard-svg{width:auto;max-width:100%;max-height:max(var(--board-min-h), calc(100dvh - var(--build-chrome)))}.detail-block{flex-direction:column;gap:8px;margin:4px 16px 16px;display:flex}.detail-block .vault-nickname{font:500 17px/1.2 var(--font-display);text-transform:uppercase;letter-spacing:.06em;margin:0}.detail-block .vault-notes{font-family:var(--font-data);overflow-wrap:anywhere;margin:0}.settings{flex-direction:column;margin:-16px -16px 0;display:flex}.settings .screen-body{flex-direction:column;gap:16px;padding:16px;display:flex}.settings .block{flex-direction:column;gap:10px;display:flex}.settings .block>h2{margin-bottom:0}.settings-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.settings .label{font:500 15px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em}.settings .kv{min-height:44px;font:500 15px/1.2 var(--font-data);justify-content:space-between;align-items:center;gap:12px;display:flex}.settings .kv .stamp-ok,.settings .kv .stamp-alert{border:var(--rule) solid var(--ink);font:500 15px/1.2 var(--font-data);padding:2px 8px}.settings .kv .stamp-alert{font-size:19px;font-weight:700}.settings .kv>:last-child{white-space:nowrap;flex:none}.settings .check{min-height:44px;font:500 15px/1.2 var(--font-data);align-items:center;gap:12px;display:flex}.settings input[type=checkbox]{appearance:none;background:var(--paper);border:var(--rule) solid var(--ink);border-radius:var(--radius);flex:none;place-items:center;width:24px;height:24px;margin:10px;display:grid}.settings input[type=checkbox]:checked{background:var(--ink)}.settings input[type=checkbox]:checked:after{content:"";border:solid var(--paper);border-width:0 3px 3px 0;width:6px;height:12px;transform:rotate(45deg)translate(-1px,-1px)}.settings input[type=checkbox]:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.settings-actions{flex-wrap:wrap;gap:12px;display:flex}.settings label.btn{cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:relative}.settings input[type=file]{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.settings label.btn:focus-within{outline:3px solid var(--accent);outline-offset:2px}.settings-error{background:var(--accent-2);color:var(--on-accent-2);border:var(--rule) solid var(--ink);font:700 15px/1.3 var(--font-data);margin:0;padding:8px 12px}.import-preview{font-family:var(--font-data);flex-direction:column;gap:10px;display:flex}.import-preview p{margin:0;font-weight:500}.filter-bar-top{align-items:stretch;gap:8px;display:flex}.filter-bar-top .input{flex:1;min-width:0}.filter-active{justify-content:space-between;align-items:center;gap:8px;display:flex}.filter-tickets{flex-wrap:wrap;gap:8px;display:flex}.filter-sheet{flex-direction:column;gap:16px;display:flex}.filter-sheet-top{display:flex}.filter-section{flex-direction:column;gap:8px;display:flex}.filter-section .filter-group{flex-wrap:wrap;gap:8px;display:flex}.practice{flex-direction:column;margin:-16px -16px 0;display:flex}.practice .screen-body{padding:16px 16px calc(var(--actionbar-h) + 16px);flex-direction:column;gap:12px;display:flex}.practice .seg{align-self:flex-start}.practice .block{flex-direction:column;gap:4px;display:flex}.practice .block p{font-family:var(--font-data);margin:0;font-size:15px;line-height:1.5}.practice-done{font-family:var(--font-data);margin:0;font-size:15px}.practice-head{flex-direction:column;gap:8px;padding:12px 16px 0;display:flex}.practice-head-row{justify-content:space-between;align-items:center;min-height:44px;display:flex}.practice-progress{font:700 19px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;margin:0}.practice-end{min-width:44px;min-height:44px;color:var(--ink);font:700 17px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;background:0 0;border:0;padding:0 8px}.practice-bar{border:var(--rule) solid var(--ink);box-sizing:content-box;background:var(--paper);height:6px}.practice-bar-fill{background:var(--ink);height:100%}.practice-prompt{text-align:center;color:var(--muted);font-family:var(--font-data);margin:0;font-size:15px}.sleeve{aspect-ratio:1;box-sizing:border-box;border:var(--rule) solid var(--ink);width:min(330px,100% - 32px);box-shadow:6px 6px 0 var(--shadow-ink);align-self:center;display:flex;overflow:hidden}.sleeve-front{background:var(--rail);color:var(--on-rail)}.sleeve-spine{background:var(--accent);border-right:var(--rule) solid var(--ink);flex:none;justify-content:center;align-items:center;width:58px;display:flex}.sleeve-spine span{white-space:nowrap;font:700 19px/1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--on-accent);transform:rotate(-90deg)}.sleeve-main{flex-direction:column;flex:1;justify-content:center;gap:8px;min-width:0;padding:12px;display:flex}.sleeve-symbol{font:700 96px/1 var(--font-data);text-transform:none;color:var(--on-rail);white-space:nowrap}.sleeve-nickname{font:500 18px/1.1 var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-2);overflow-wrap:anywhere}.sleeve-stamps{flex-wrap:wrap;gap:6px;margin-top:auto;display:flex}.sleeve-back{background:var(--paper);color:var(--ink);flex-direction:column}.sleeve-strip{background:var(--rail);color:var(--on-rail);border-bottom:var(--rule) solid var(--ink);flex:none;justify-content:space-between;align-items:center;gap:8px;padding:6px 12px;display:flex}.sleeve-strip-symbol{font:700 28px/1 var(--font-data);text-transform:none}.sleeve-strip .stamp{background:var(--accent-2);color:var(--on-accent-2)}.sleeve-board{flex:1;justify-content:center;align-items:center;min-height:0;padding:8px;display:flex}.sleeve-board .fretboard{justify-content:center;width:100%;height:100%}.sleeve-board .fretboard-svg{width:auto;max-width:100%;max-height:100%}
