@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-normal-7BpKI3vF.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-full-normal-YHFkNujK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-full-normal-CFFu7zhK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-italic-BHALq22K.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-full-italic-B8-t4Nou.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-full-italic-D2JnYqd-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f5eedc;--paper-raised:#fbf7ec;--paper-sunk:#ebe1c8;--rule:#d9ccae;--ink:#2a241d;--ink-soft:#6b5f50;--brass:#a8834a;--brass-hi:#d9b878;--brass-deep:#7a5c2e;--accent:#b4532a;--accent-hover:#9c4522;--accent-deep:#963f1d;--on-accent:#fffaf0;--focus:#3d6a94;--trail:#8c6a3f;--shadow:#2a241d33;--shadow-soft:#2a241d1a;--vignette:#785a281f;--pc-0:#b4532a;--pc-1:#c27a3a;--pc-2:#c9a13a;--pc-3:#9a9a3e;--pc-4:#6f8f4e;--pc-5:#3f7f6a;--pc-6:#3e7c82;--pc-7:#3d6a94;--pc-8:#4a5694;--pc-9:#6a4e8e;--pc-10:#8a4f7d;--pc-11:#a84c5e;--font-display:"Fraunces Variable", "Iowan Old Style", Georgia, serif;--font-ui:"Inter Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--paper-grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.17 0 0 0 0 0.14 0 0 0 0 0.1 0 0 0 0.07 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior:none;font-size:15px;line-height:1.5}button,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app{position:fixed;inset:0;overflow:hidden}.stage{background-color:var(--paper);background-image:var(--paper-grain), radial-gradient(ellipse at 50% 46%, transparent 52%, var(--vignette) 100%);position:absolute;inset:0}.stage canvas{touch-action:none;width:100%;height:100%;display:block}.header{padding:18px 24px;padding-top:max(18px, env(safe-area-inset-top));pointer-events:none;justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;inset:0 0 auto}.brand{align-items:baseline;gap:14px;min-width:0;display:flex}.brand-name{font-family:var(--font-display);font-variation-settings:"SOFT" 60, "WONK" 1, "opsz" 72;letter-spacing:-.015em;margin:0;font-size:30px;font-weight:620;line-height:1}.brand-tagline{font-family:var(--font-display);color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:16px;font-style:italic;overflow:hidden}.scene-chip{border:1px solid var(--rule);background:var(--paper-raised);color:var(--ink-soft);border-radius:999px;flex-shrink:0;padding:6px 12px;font-size:13px;font-weight:500}.transport{left:50%;bottom:max(40px, calc(env(safe-area-inset-bottom) + 28px));border:1px solid var(--rule);background:color-mix(in srgb, var(--paper-raised) 90%, transparent);box-shadow:0 8px 28px var(--shadow-soft), 0 1px 0 #fff9 inset;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:6px;padding:7px;display:flex;position:absolute;transform:translate(-50%)}.icon-button{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:999px;place-items:center;padding:0;transition:background-color .12s,transform .12s;display:inline-grid}.icon-button:hover{background:var(--paper-sunk)}.icon-button:active{transform:scale(.95)}.icon-button.primary{background:var(--accent);width:52px;height:52px;color:var(--on-accent);box-shadow:0 2px 8px #b4532a59}.icon-button.primary:hover{background:var(--accent-hover)}.icon-button svg{width:22px;height:22px}.volume{color:var(--ink-soft);align-items:center;gap:8px;padding:0 14px 0 10px;display:flex}.volume svg{flex-shrink:0;width:18px;height:18px}.volume .slider{width:104px}.slider{width:100%;height:24px;accent-color:var(--accent);cursor:pointer;appearance:none;background:0 0;margin:0}.slider::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--brass) var(--fill,80%), var(--paper-sunk) var(--fill,80%));border-radius:2px;height:4px}.slider::-moz-range-track{background:var(--paper-sunk);border-radius:2px;height:4px}.slider::-moz-range-progress{background:var(--brass);border-radius:2px;height:4px}.slider::-webkit-slider-thumb{border:2px solid var(--brass-deep);background:var(--brass-hi);appearance:none;border-radius:50%;width:16px;height:16px;margin-top:-6px;transition:transform .12s}.slider:active::-webkit-slider-thumb{transform:scale(1.15)}.slider::-moz-range-thumb{border:2px solid var(--brass-deep);background:var(--brass-hi);border-radius:50%;width:12px;height:12px}.hint{left:50%;bottom:max(10px, env(safe-area-inset-bottom));max-width:calc(100% - 32px);color:var(--ink-soft);text-align:center;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;margin:0;font-size:12.5px;position:absolute;overflow:hidden;transform:translate(-50%)}.hint kbd{border:1px solid var(--rule);background:var(--paper-raised);font-family:var(--font-mono);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-size:11px}.hint.notice{background:color-mix(in srgb, var(--paper) 85%, transparent);width:max-content;color:var(--accent-deep);white-space:normal;-webkit-line-clamp:2;line-clamp:2;border-radius:10px;-webkit-box-orient:vertical;padding:2px 10px;font-weight:500;line-height:1.3;display:-webkit-box}.overlay{background:color-mix(in srgb, var(--paper) 55%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);place-items:center;padding:16px;display:grid;position:absolute;inset:0}.overlay-card{border:1px solid var(--rule);background:var(--paper-raised);width:min(440px,100%);box-shadow:0 24px 60px var(--shadow), 0 2px 0 #ffffffb3 inset;text-align:center;border-radius:20px;padding:36px 36px 30px}.overlay-eyebrow{color:var(--brass-deep);letter-spacing:.14em;text-transform:uppercase;margin:0 0 6px;font-size:12px;font-weight:600}.overlay-title{font-family:var(--font-display);font-variation-settings:"SOFT" 80, "WONK" 1, "opsz" 144;letter-spacing:-.02em;margin:0;font-size:52px;font-weight:620;line-height:1.05}.overlay-tagline{font-family:var(--font-display);color:var(--ink-soft);margin:6px 0 18px;font-size:19px;font-style:italic}.overlay-body{color:var(--ink-soft);text-wrap:pretty;margin:0 0 26px}.begin-button{background:var(--accent);min-width:180px;min-height:50px;color:var(--on-accent);letter-spacing:.01em;cursor:pointer;border:none;border-radius:999px;padding:0 28px;font-size:16px;font-weight:600;transition:background-color .12s,transform .12s;box-shadow:0 4px 14px #b4532a59}.begin-button:hover{background:var(--accent-hover)}.begin-button:active{transform:scale(.98)}.begin-button[disabled]{cursor:progress;opacity:.75}.overlay-error{color:var(--accent-hover);margin:16px 0 0;font-size:14px}.overlay-footnote{color:var(--ink-soft);margin:18px 0 0;font-size:12.5px}.node-panel{z-index:5;border-left:1px solid var(--rule);background:var(--paper-raised);background-image:var(--paper-grain);width:min(380px,100%);box-shadow:-18px 0 48px var(--shadow-soft);visibility:hidden;flex-direction:column;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s linear .28s;display:flex;position:absolute;inset:0 0 0 auto;transform:translate(104%)}.node-panel[data-open=true]{visibility:visible;transition:transform .28s cubic-bezier(.2,.8,.2,1);transform:none}.node-panel:focus{outline:none}.panel-header{padding:18px 12px 16px 20px;padding-top:max(18px, env(safe-area-inset-top));border-bottom:1px solid var(--rule);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;display:grid}.panel-swatch{background:radial-gradient(circle at 34% 30%, var(--brass-hi), var(--brass) 52%, var(--brass-deep));width:30px;height:30px;box-shadow:0 3px 6px var(--shadow);border-radius:50%}.panel-title{font-family:var(--font-display);font-variation-settings:"SOFT" 60, "WONK" 1, "opsz" 48;margin:0;font-size:23px;font-weight:620;line-height:1.1}.panel-subtitle{color:var(--ink-soft);margin:2px 0 0;font-size:13px}.panel-close svg{width:18px;height:18px}.weight-switcher{flex-wrap:wrap;gap:6px;padding:12px 20px 2px;display:flex}.weight-switcher button{border:1px solid var(--rule);background:var(--paper);min-height:32px;color:var(--ink-soft);cursor:pointer;border-radius:999px;padding:0 14px;font-size:12.5px;font-weight:600;transition:border-color .14s,color .14s,background-color .14s}.weight-switcher button:hover{border-color:var(--brass);color:var(--ink)}.weight-switcher button[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--paper-raised));color:var(--accent-deep)}.panel-body{overscroll-behavior:contain;flex:1;padding:0 20px 8px;overflow-y:auto}.panel-section{border-bottom:1px dashed var(--rule);padding:18px 0 14px}.panel-section:last-child{border-bottom:none}.panel-section h3{color:var(--brass-deep);letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px;font-size:11.5px;font-weight:650}.instrument-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.instrument-card{border:1px solid var(--rule);background:var(--paper);cursor:pointer;border-radius:12px;grid-template-columns:26px 1fr;align-items:center;column-gap:10px;padding:10px;transition:border-color .14s,background-color .14s,transform .14s;display:grid}.instrument-card:hover{border-color:var(--brass);background:var(--paper-raised)}.instrument-card:active{transform:scale(.98)}.instrument-card svg{width:26px;height:26px;color:var(--brass-deep);grid-row:span 2}.instrument-card[data-checked=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--paper-raised));box-shadow:inset 0 0 0 1px var(--accent)}.instrument-card[data-checked=true] svg{color:var(--accent)}:is(.instrument-card:has(input:focus-visible),.chip:has(input:focus-visible)){outline:2px solid var(--focus);outline-offset:2px}.instrument-name{font-size:13.5px;font-weight:600;line-height:1.2}.instrument-blurb{color:var(--ink-soft);font-size:11.5px;line-height:1.25}.range-row{grid-template-columns:1fr auto;row-gap:2px;margin-bottom:12px;display:grid}.range-row label,.field-row>span,.field-row>label{font-size:13.5px;font-weight:500}.range-row output{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:12.5px}.range-row .slider{grid-column:1/-1}.range-ends{color:var(--ink-soft);grid-column:1/-1;justify-content:space-between;margin-top:-3px;font-size:11px;display:flex}.field-row{justify-content:space-between;align-items:center;gap:12px;min-height:40px;margin-bottom:6px;display:flex}.stepper{border:1px solid var(--rule);background:var(--paper);border-radius:999px;align-items:center;display:inline-flex}.stepper button{cursor:pointer;background:0 0;border:none;border-radius:999px;width:34px;height:34px;font-size:18px;line-height:1}.stepper button:hover:not([aria-disabled=true]){background:var(--paper-sunk)}.stepper button[aria-disabled=true]{opacity:.35;cursor:not-allowed}.stepper output{font-variant-numeric:tabular-nums;text-align:center;min-width:60px;font-size:13.5px;font-weight:600}.field-hint{color:var(--ink-soft);text-align:right;margin:-2px 0 12px;font-size:12px}.switch{background:var(--paper-sunk);width:44px;height:26px;box-shadow:inset 0 0 0 1px var(--rule);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;padding:0;transition:background-color .16s;position:relative}.switch:after{content:"";background:var(--paper-raised);width:20px;height:20px;box-shadow:0 1px 3px var(--shadow);border-radius:50%;transition:transform .16s;position:absolute;top:3px;left:3px}.switch[aria-checked=true]{background:var(--accent);box-shadow:none}.switch[aria-checked=true]:after{transform:translate(18px)}.chips-field{border:none;margin:4px 0 0;padding:0}.chips-field legend{margin-bottom:8px;padding:0;font-size:13.5px;font-weight:500}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--rule);background:var(--paper);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:5px 10px 5px 8px;font-size:12.5px;font-weight:600;transition:background-color .14s,color .14s;display:inline-flex;position:relative}.chip:before{content:"";background:var(--chip);border-radius:50%;width:8px;height:8px}.chip input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.chip[data-off=true]{color:var(--ink-soft);background:0 0;text-decoration:line-through}.chip[data-off=true]:before{opacity:.3}.panel-footer{padding:14px 20px;padding-bottom:max(14px, env(safe-area-inset-bottom));border-top:1px solid var(--rule);gap:10px;display:flex}.secondary-button{border:1px solid var(--rule);background:var(--paper);cursor:pointer;border-radius:999px;align-items:center;gap:8px;min-height:42px;padding:0 18px;font-weight:600;transition:border-color .14s,background-color .14s;display:inline-flex}.secondary-button:hover{border-color:var(--brass);background:var(--paper-raised)}.secondary-button svg{width:16px;height:16px;color:var(--accent)}@media (width>=900px){.transport,.hint{transition:left .28s cubic-bezier(.2,.8,.2,1)}.app[data-panel-open=true] .transport,.app[data-panel-open=true] .hint{left:calc(50% - 190px)}}@media (width<=640px),(pointer:coarse){.hint-keys{display:none}}@media (width<=640px){.header{padding:14px 16px}.brand-name{font-size:24px}.brand-tagline,.scene-chip{display:none}.volume .slider{width:72px}.overlay-card{padding:28px 22px 24px}.overlay-title{font-size:42px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}.coach{z-index:15;border:1px solid var(--rule);background:var(--paper-raised);width:min(300px,100% - 40px);box-shadow:0 14px 36px var(--shadow), 0 2px 0 #ffffffb3 inset;border-radius:14px;padding:14px 16px 12px;position:absolute;bottom:96px;left:20px}.coach-text{color:var(--ink);font-family:var(--font-display);margin:0 0 10px;font-size:16px;line-height:1.35}.coach-actions{align-items:center;gap:8px;display:flex}.coach-count{color:var(--ink-soft);margin-right:auto;font-size:12px}.coach-skip,.coach-next{border:1px solid var(--rule);background:var(--paper);min-height:36px;color:var(--ink);cursor:pointer;border-radius:999px;padding:0 14px;font-size:13px;font-weight:600}.coach-next{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.coach-next:hover{background:var(--accent-hover)}.coach-skip:hover{background:var(--paper-sunk)}.coach-skip:focus-visible,.coach-next:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion:no-preference){.coach{animation:.26s cubic-bezier(.2,.8,.2,1) coach-in}@keyframes coach-in{0%{opacity:0;transform:translateY(8px)}}}.help-card{text-align:left;width:min(460px,100%);padding:28px 30px 24px}.help-title{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 14px;font-size:28px;font-weight:620}.help-list{gap:2px;margin:0 0 18px;display:grid}.help-row{border-bottom:1px solid var(--rule);grid-template-columns:150px 1fr;align-items:center;gap:12px;padding:6px 0;font-size:14px;display:grid}.help-row dt{flex-wrap:wrap;align-items:center;gap:4px;margin:0;display:flex}.help-row dd{color:var(--ink-soft);margin:0}.help-row kbd{border:1px solid var(--rule);background:var(--paper);color:var(--ink);font-family:var(--font-mono);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-size:12px}.help-actions{flex-wrap:wrap;gap:10px;display:flex}.help-close{border:1px solid var(--rule);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;border-radius:999px;padding:0 24px;font-size:14px;font-weight:600}.help-close:hover{background:var(--paper-sunk)}.help-close:focus-visible{outline:2px solid var(--focus);outline-offset:2px}@media (width<=480px){.help-row{grid-template-columns:1fr;gap:2px}}.library-card{text-align:left;flex-direction:column;width:min(520px,100%);max-height:min(640px,100%);padding:26px 28px 22px;display:flex}.library-title{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 14px;font-size:28px;font-weight:620}.library-save{align-items:flex-end;gap:10px;display:flex}.library-field{color:var(--ink-soft);flex:1;gap:4px;font-size:12.5px;font-weight:600;display:grid}.library-card input[type=text]{border:1px solid var(--rule);background:var(--paper);min-height:44px;color:var(--ink);font:inherit;border-radius:10px;padding:0 12px;font-size:15px;font-weight:400}.library-card input[type=text]:focus-visible,.library-button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.library-button{border:1px solid var(--rule);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;border-radius:999px;padding:0 16px;font-size:13.5px;font-weight:600}.library-button:hover:not(:disabled){background:var(--paper-sunk)}.library-button:disabled{opacity:.5;cursor:default}.library-button.primary{background:var(--accent);color:var(--on-accent);border-color:#0000}.library-button.primary:hover:not(:disabled){background:var(--accent-hover)}.library-button.danger{color:var(--accent-hover);border-color:var(--accent-hover)}.library-problem{min-height:1.4em;color:var(--accent-hover);margin:8px 0 4px;font-size:13.5px}.library-empty{color:var(--ink-soft);margin:8px 0 14px;font-size:14px}.library-list{gap:6px;margin:0 0 14px;padding:0;list-style:none;display:grid;overflow-y:auto}.library-row{border:1px solid var(--rule);background:var(--paper);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.library-name{min-width:0;display:grid}.library-entry-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.library-date{color:var(--ink-soft);font-size:12px}.library-actions,.library-edit{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.library-edit{flex:1}.library-edit input{flex:1;min-width:120px}.library-confirm{font-size:13px}.library-footer{justify-content:flex-end;display:flex}.export-menu{gap:2px;min-width:190px;padding:6px;display:grid}.export-menu[hidden]{display:none}.export-item{min-height:44px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:0 12px;font-size:14px}.export-item:hover,.export-item:focus-visible{background:var(--paper-sunk);outline:none}.export-item:focus-visible{box-shadow:inset 0 0 0 2px var(--focus)}@media (width<=480px){.library-save{flex-direction:column;align-items:stretch}}.pendulum-tools{padding-top:14px}.tool-place{color:var(--ink-soft);font-variant-numeric:tabular-nums;margin:0 0 10px;font-size:13px}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:8px;display:grid}.tool-cell{flex-direction:column;gap:4px;min-width:0;display:flex}.tool-button{border:1px solid var(--rule);background:var(--paper);min-height:44px;color:var(--ink);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;transition:border-color .14s,background-color .14s,color .14s;display:inline-flex}.tool-button svg{width:16px;height:16px;color:var(--accent);flex-shrink:0}.tool-button:hover{border-color:var(--brass);background:var(--paper-raised)}.tool-button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.tool-button[aria-disabled=true]{color:var(--ink-soft);cursor:not-allowed;border-style:dashed}.tool-button[aria-disabled=true]:hover{border-color:var(--rule);background:var(--paper)}.tool-button[aria-disabled=true] svg{color:var(--ink-soft)}.tool-button-warning,.tool-button-warning:hover{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.tool-button-warning svg{color:var(--on-accent)}.tool-hint{color:var(--ink-soft);margin:0;font-size:12px;line-height:1.35}.weight-switcher-row{flex-wrap:wrap;flex-basis:100%;align-items:center;gap:6px;display:flex}.weight-switcher-label{min-width:26px;color:var(--ink-soft);letter-spacing:.04em;font-size:11.5px;font-weight:700}@media (prefers-reduced-motion:reduce){.tool-button{transition:none}}.node-panel .weight-switcher button{min-height:40px}.panel-swatch.string-swatch{background:radial-gradient(circle at 34% 30%, color-mix(in srgb, var(--swatch) 55%, #fff), var(--swatch) 55%, color-mix(in srgb, var(--swatch) 70%, #000))}.string-panel .field-hint{text-align:left;margin-top:8px}.string-tip{color:var(--ink-soft);margin:0;font-size:12.5px;line-height:1.5}.string-footer{flex-direction:column;align-items:flex-start}.string-footer .field-hint{margin:0}.secondary-button.danger-button{color:var(--accent-deep)}.secondary-button.danger-button:hover:not([aria-disabled=true]){border-color:var(--accent)}.secondary-button.danger-button[aria-disabled=true]{opacity:.45;cursor:not-allowed}.score-strip{--transport-clearance:max(40px, calc(env(safe-area-inset-bottom) + 28px));left:50%;bottom:calc(var(--transport-clearance) + 74px);pointer-events:none;width:min(640px,100% - 32px);position:absolute;transform:translate(-50%)}.score-toggle{pointer-events:auto;border:1px solid var(--rule);background:color-mix(in srgb, var(--paper-raised) 90%, transparent);min-height:28px;color:var(--ink-soft);font:600 12px var(--font-ui);cursor:pointer;border-radius:999px;margin:0 0 4px auto;padding:0 10px;display:block}.score-toggle:hover{background:var(--paper-sunk);color:var(--ink)}.score-staff{border:1px solid var(--rule);background:color-mix(in srgb, var(--paper-raised) 88%, transparent);height:88px;box-shadow:0 6px 20px var(--shadow-soft);border-radius:12px;overflow:hidden}.score-canvas{width:100%;height:100%;display:block}@media (width>=900px){.score-strip{transition:left .28s cubic-bezier(.2,.8,.2,1)}.app[data-panel-open=true] .score-strip{left:calc(50% - 190px)}}@media (width<=640px){.score-staff{height:72px}}@media (prefers-reduced-motion:reduce){.score-strip{transition:none}}.string-buttons{pointer-events:none;position:absolute;inset:0}.string-button{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.string-button:focus-visible{clip-path:none;border:1px solid var(--rule);background:var(--paper-raised);width:auto;height:auto;min-height:36px;color:var(--ink);box-shadow:0 6px 18px var(--shadow-soft);outline:2px solid var(--focus);outline-offset:2px;pointer-events:auto;border-radius:999px;padding:0 16px;font-size:14px;font-weight:600;top:88px;left:16px;overflow:visible}.tuning{display:contents}.tuning-button{height:44px;color:var(--ink);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 11px;font-size:13px;font-weight:600;transition:background-color .12s,transform .12s;display:inline-flex}.tuning-button:hover,.tuning-button[aria-expanded=true]{background:var(--paper-sunk)}.tuning-button:active{transform:scale(.97)}.tuning-button svg{width:20px;height:20px;color:var(--brass-deep);flex-shrink:0}.tuning-popover{border:1px solid var(--rule);background:var(--paper-raised);background-image:var(--paper-grain);width:min(320px,100vw - 24px);box-shadow:0 16px 44px var(--shadow), 0 1px 0 #ffffffb3 inset;overscroll-behavior:contain;border-radius:18px;max-height:calc(100dvh - 140px);padding:14px 16px 12px;position:absolute;bottom:calc(100% + 12px);left:50%;overflow-y:auto;transform:translate(-50%)}.tuning-popover[hidden]{display:none}.tuning-field{justify-content:space-between;align-items:center;gap:12px;min-height:44px;font-size:13.5px;font-weight:500;display:flex}.tuning-field select{border:1px solid var(--rule);background:var(--paper);min-width:168px;min-height:40px;color:var(--ink);font:inherit;cursor:pointer;border-radius:999px;padding:0 12px;font-weight:600}.tuning-field select:hover{border-color:var(--brass)}.tuning-popover .stepper button{width:40px;height:40px}.tuning-bottom,.tuning-hint,.tuning-note{color:var(--ink-soft);margin:4px 0 0;font-size:12px;line-height:1.45}.tuning-bottom{text-align:right;font-variant-numeric:tabular-nums}.tuning-note{background:color-mix(in srgb, var(--accent) 8%, var(--paper-raised));color:var(--ink);border-radius:10px;padding:8px 10px}.tuning-hint{border-top:1px dashed var(--rule);margin-top:10px;padding-top:8px}@media (width<=640px){.app .transport{border-radius:28px;flex-wrap:wrap;justify-content:center;width:max-content;max-width:calc(100vw - 16px)}.tuning-label{display:none}.tuning-button{justify-content:center;width:44px;padding:0}}.transport .icon-button:disabled{opacity:.35;cursor:not-allowed}.transport .icon-button:disabled:hover{background:0 0}.tuning-modes{background:var(--paper-sunk);border-radius:999px;gap:4px;margin-bottom:6px;padding:3px;display:flex}.tuning-mode{min-height:40px;color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;font-size:13px;font-weight:600}.tuning-mode[aria-pressed=true]{background:var(--paper-raised);color:var(--ink);box-shadow:0 1px 3px var(--shadow)}.chord-bpm{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;display:inline-flex}.chord-bpm input{border:1px solid var(--rule);background:var(--paper);width:72px;min-height:40px;color:var(--ink);font:inherit;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;padding:0 10px;font-weight:600}.chord-bars{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;margin:8px 0 0;padding:0;list-style:none;display:grid}.chord-bar{grid-template-columns:16px minmax(0,1fr) 32px;align-items:center;gap:4px;display:grid}.chord-bar-number{color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right;font-size:11px}.chord-input{border:1px solid var(--rule);background:var(--paper);min-width:0;min-height:40px;color:var(--ink);font:inherit;border-radius:12px;padding:0 10px;font-weight:600}.chord-input[aria-invalid=true]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--paper))}.chord-bar-remove,.chord-add{color:var(--ink-soft);font:inherit;cursor:pointer;background:0 0;border:none}.chord-bar-remove{width:32px;height:40px;font-size:18px}.chord-bar-remove[aria-disabled=true],.chord-add[aria-disabled=true]{opacity:.35;cursor:not-allowed}.chord-add{border:1px dashed var(--rule);min-height:40px;color:var(--ink);border-radius:999px;margin-top:6px;padding:0 12px;font-size:13px;font-weight:600}.chord-error{color:var(--accent-deep);grid-column:1/-1;margin:0;font-size:12px;line-height:1.4}.chord-name{z-index:2;font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink);pointer-events:none;margin:0;font-size:38px;font-weight:560;position:absolute;top:14px;left:50%;transform:translate(-50%)}@media (prefers-reduced-motion:no-preference){.chord-name-text{animation:.15s ease-out chord-in;display:inline-block}}@keyframes chord-in{0%{opacity:0;transform:translateY(-4px)}}@media (width<=640px){.chord-bars{grid-template-columns:minmax(0,1fr)}.chord-name{font-size:30px;top:56px}}.preset-gallery{width:min(380px,100vw - 24px)}.preset-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.preset-group{gap:6px;display:grid}.preset-category{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;margin:8px 2px 0;font-size:.75rem;font-weight:600}.preset-group:first-child .preset-category{margin-top:0}.preset-card{border:1px solid var(--rule);background:var(--paper);width:100%;min-height:64px;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:8px 10px;transition:border-color .12s,background-color .12s;display:flex}.preset-card:hover{border-color:var(--brass)}.preset-card[aria-current=true]{border-color:var(--brass-deep);background:var(--paper-sunk)}.preset-preview{background:var(--paper-raised);border-radius:6px;flex:0 0 64px;width:64px;height:48px}.preset-preview-string{stroke:var(--rule);stroke-width:1px}.preset-preview-arm{fill:none;stroke:var(--brass-deep);stroke-width:1.4px;stroke-linecap:round}.preset-preview-bob{fill:var(--brass)}.preset-text{gap:2px;min-width:0;display:grid}.preset-name{font-family:var(--font-display);font-size:15px;font-weight:600}.preset-desc{color:var(--ink-soft);font-size:12.5px;line-height:1.35}.preset-meta{color:var(--brass-deep);font-size:11.5px;font-weight:600}.preset-custom{margin:0 0 8px}.share-fallback{border:1px solid var(--rule);background:var(--paper-raised);background-image:var(--paper-grain);width:min(420px,100vw - 24px);box-shadow:0 16px 44px var(--shadow), 0 1px 0 #ffffffb3 inset;border-radius:18px;align-items:center;gap:8px;padding:8px 8px 8px 14px;display:flex;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%)}.share-fallback label{flex:1;min-width:0}.share-fallback input{border:1px solid var(--rule);background:var(--paper);width:100%;height:36px;color:var(--ink);font:inherit;border-radius:10px;padding:0 10px;font-size:13px}.share-menu{min-width:210px}.share-channel{align-items:center;text-decoration:none;display:flex}.share-rule{background:var(--rule);border:none;height:1px;margin:4px 6px}.sound-popover{width:min(340px,100vw - 24px)}.sound-heading{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;margin:10px 0 2px;font-size:11px;font-weight:600}.sound-heading:first-child{margin-top:0}.sound-popover .range-row{margin:6px 0}.sound-popover .slider:disabled{opacity:.4;cursor:not-allowed}.sound-popover .midi-toggle{width:22px;height:22px;accent-color:var(--brass);cursor:pointer}.sound-popover .midi-toggle:disabled{opacity:.4;cursor:not-allowed}.sound-popover .midi-status{border-top:0;margin-top:4px;padding-top:0}.sound-popover .midi-status:empty{display:none}.sound-popover .tuning-field select:disabled{opacity:.5;cursor:not-allowed}
