:root{--red:#ce3328;--dark-red:#9a251e;--yellow:#ffce32;--purple:#743ba2;--cream:#fff3d1;--ink:#252019;--display:'Lilita One','Arial Rounded MT Bold','Trebuchet MS',sans-serif;--body:'DM Sans',Arial,sans-serif;color-scheme:light}
*{box-sizing:border-box}body{margin:0;padding:28px 20px 16px;background-color:#f3e3bc;background-image:radial-gradient(#bc9d612c .7px,transparent .7px);background-size:5px 5px;color:var(--ink);font-family:var(--body);font-size:16px}button,input,select{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:default;opacity:.4}button:focus-visible,select:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:3px solid #173f9d;outline-offset:4px}button{transition:transform .1s,box-shadow .1s,background .16s}button:not(:disabled):active{transform:translateY(2px)}h1,h2,h3,p{margin:0}button svg{pointer-events:none}[hidden]{display:none!important}
.toy{max-width:1080px;margin:0 auto;padding:17px;background:var(--yellow);border:11px solid var(--red);border-radius:36px;box-shadow:inset 0 2px 1px #fff9a8,inset 0 -5px 0 #de9404,0 5px 0 var(--dark-red),0 15px 30px #69462424;position:relative}.brand-panel{display:flex;align-items:center;gap:4px;min-height:145px;padding:8px 19px 11px 1px;background:var(--cream);border:2px solid #9c641b75;border-radius:19px;box-shadow:0 2px 0 #c38a22;overflow:hidden}.mascot{width:151px;height:151px;object-fit:contain;flex:none;margin-top:-7px;margin-bottom:-7px}.wordmark{flex:1;min-width:0;position:relative;padding-top:17px}.the{font-family:var(--display);font-size:20px;position:absolute;top:-2px;left:7px;color:var(--purple);transform:rotate(-5deg)}h1{font:clamp(2rem,5.2vw,3.95rem)/.95 var(--display);letter-spacing:-1.7px;color:var(--red);-webkit-text-stroke:1.6px var(--ink);paint-order:stroke fill;text-shadow:1px 4px 0 var(--ink),3px 6px 0 var(--yellow);white-space:nowrap;transform:rotate(-2deg);transform-origin:center} .wordmark p{font-size:16px;font-weight:800;font-style:italic;margin:13px 0 0 8px}.meal-stamp{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;flex:none;width:118px;height:121px;margin-left:10px;background:var(--purple);color:var(--cream);clip-path:polygon(50% 0,61% 9%,76% 3%,82% 17%,97% 21%,91% 37%,100% 50%,90% 62%,95% 79%,80% 82%,75% 97%,59% 92%,48% 100%,36% 90%,20% 95%,16% 81%,2% 75%,8% 60%,0 48%,9% 35%,5% 19%,21% 17%,28% 3%,40% 10%);transform:rotate(8deg)}.meal-stamp span{font:22px/1.03 var(--display);text-align:center}.meal-stamp small{font-size:12px;font-weight:700}.source-strip{margin:15px 0 13px;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:64px;border:2px solid #8b611f;border-radius:13px;background:var(--cream);padding:7px 8px 7px 16px;box-shadow:inset 0 2px 4px #765a3838}.source-name{display:flex;align-items:center;gap:12px;min-width:0}.source-name>div{min-width:0}.source-icon{font-size:29px;color:var(--purple)}.eyebrow{display:block;font-size:12px;font-weight:800;letter-spacing:1px}.source-name strong{font-size:16px;display:block;max-width:460px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.source-actions{display:flex;gap:8px;align-items:center;flex:none}.button{border:2px solid var(--ink);border-radius:9px;padding:10px 17px;font-weight:800;box-shadow:0 3px 0 var(--ink),inset 0 2px 0 #ffffff5c}.red{background:var(--red);color:var(--cream)}.load-button span{font-size:22px;line-height:12px;margin-right:4px}.small-button{border:1.5px solid #655034;border-radius:7px;background:#fff9e6;padding:9px 12px;font-size:14px;font-weight:700}
.editor{background:var(--cream);border:2px solid #a47521;border-radius:16px;padding:15px 16px 0;box-shadow:0 3px 0 #b67c22}.editor-toolbar{display:flex;align-items:center;gap:13px;margin-bottom:12px;flex-wrap:wrap}.editor h2{font:25px/1 var(--display);flex:1;min-width:170px}.editor h2 span{font-size:16px;color:#755d41;margin-left:4px}.compare{display:flex;border:1.5px solid #766144;border-radius:8px;padding:3px;gap:3px;background:#f1e1b7}.compare button{background:transparent;border:0;border-radius:5px;padding:7px 13px;font-size:14px;font-weight:800}.compare button.active{color:var(--cream);background:var(--purple);box-shadow:0 2px 0 #42265c}.tempo-label{display:flex;gap:5px;align-items:center;font-size:12px;font-weight:800}.tempo-label input{width:61px;border:1.5px solid #98815d;background:#fff8e8;border-radius:6px;padding:6px 2px 6px 6px;font-size:16px;font-weight:700;color:var(--ink)}.roll{position:relative;isolation:isolate;width:100%;height:240px;overflow:hidden;border:1px solid #b5a482;border-radius:6px;background:#f8eccc}.roll svg{display:block;width:100%;height:100%;overflow:visible}.roll text{font-family:var(--body);user-select:none}.roll .note{cursor:pointer}.roll .note rect.note-body{transition:filter .12s;stroke-width:1.2}.roll .note:hover rect.note-body{filter:brightness(1.16)}.roll .note.is-playing rect.note-body{fill:#ffce32;stroke:#252019;stroke-width:2.4;filter:brightness(1.1)}.roll .note:focus-visible{outline:none}.roll .note:focus-visible rect.note-body{stroke:#174698;stroke-width:3}.playhead{position:absolute;top:0;height:calc(100% - 24px);width:2px;background:#c62a24;box-shadow:0 0 0 1px #fff3d17a;pointer-events:none;z-index:2}.playhead:before{content:'';position:absolute;top:0;left:-4px;width:10px;height:7px;background:#c62a24;clip-path:polygon(0 0,100% 0,50% 100%)}.roll-footer{display:flex;justify-content:space-between;gap:10px;padding:9px 0 11px;font-size:12px;color:#68563e}.lock-key{color:var(--ink);margin-left:5px}.locks-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px dashed #b8a581;flex-wrap:wrap}.locks{display:flex;align-items:center;gap:8px}.locks .eyebrow{margin-right:3px}.lock-button{border:1.5px solid #a79470;border-radius:7px;padding:7px 10px;font-size:14px;font-weight:700;background:#fff9e7}.lock-button[aria-pressed=true]{background:var(--ink);color:var(--yellow);border-color:var(--ink)}.lock-symbol{margin-right:3px;font-size:16px}.key-controls{display:flex;align-items:center;gap:6px;font-size:14px}.key-lock-label{display:flex;align-items:center;gap:5px;font-weight:600;margin-right:3px}.key-lock-label input{accent-color:var(--purple);width:17px;height:17px;margin:0}.key-controls select{font-size:14px;border:1px solid #a79470;border-radius:6px;background:#fff9e7;color:var(--ink);padding:6px 3px;min-height:33px}
.control-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.control-module{border:2px solid #6d490f;border-radius:16px;padding:13px 12px 11px;box-shadow:inset 0 2px 0 #ffffff74,0 3px 0 #a66912;min-width:0}.mustard{background:#ffce32}.purple{background:var(--purple);color:var(--cream);border-color:#492265;box-shadow:inset 0 2px 0 #ffffff55,0 3px 0 #492265}.control-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px}.control-heading h3{font:23px/1 var(--display);white-space:nowrap}.control-heading h3 span{font-family:Arial,sans-serif;font-weight:900;font-size:22px;margin-right:2px}.control-heading output{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}.slider-row{display:flex;align-items:center;gap:11px}.slider-row input{width:calc(100% - 50px);min-width:0;flex:1}.dice-button{border:2px solid var(--ink);color:var(--ink);border-radius:8px;width:39px;height:41px;flex:none;background:var(--cream);box-shadow:inset 0 2px 0 white,0 3px 0 #241b14;padding:0;display:flex;align-items:center;justify-content:center}.die-face{font-family:Arial,sans-serif;font-size:36px;line-height:1;display:block;transform:translateY(-1px)}.slider-ends{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-top:10px;line-height:1.2;font-weight:600}.control-module.locked{opacity:.65}.control-module.locked .slider-ends{opacity:.8}input[type=range]{appearance:none;-webkit-appearance:none;cursor:pointer;height:11px;background:#312b28;border:2px solid #897460;border-radius:5px;box-shadow:inset 0 2px 1px #0006;margin:12px 0;touch-action:pan-y}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:24px;height:31px;border-radius:6px;background:var(--red);border:2px solid #45231b;box-shadow:inset 1px 2px 0 #fff5,0 2px 0 #45231b;cursor:ew-resize}input[type=range]::-moz-range-thumb{width:21px;height:27px;border-radius:6px;background:var(--red);border:2px solid #45231b;box-shadow:inset 1px 2px 0 #fff5,0 2px 0 #45231b;cursor:ew-resize}input[type=range]:disabled{cursor:default}
.toy-footer{display:grid;grid-template-columns:1fr 1.65fr .75fr;gap:19px;align-items:center;padding:3px 3px 9px}.transport{display:flex;align-items:center;gap:13px}.play-button{width:84px;height:84px;flex:none;border:5px solid var(--ink);border-radius:50%;background:var(--red);color:var(--cream);box-shadow:0 0 0 4px #f8ecb9,inset 0 3px 0 #ffffff85,0 5px 0 4px #aa771c}.play-button svg{width:44px;height:44px;fill:var(--cream);filter:drop-shadow(0 2px 0 #7c221b);margin:7px 0 0 2px}.play-button[aria-pressed=true]{background:var(--purple)}.transport-copy{font-size:14px;line-height:1.25}.transport-copy strong{display:block;font-family:var(--display);font-size:18px}.transport-copy span{display:block;font-style:italic;margin-top:4px;max-width:100px;font-size:12px;font-weight:600}.shake-button{display:flex;align-items:center;justify-content:center;gap:13px;width:100%;min-height:87px;padding:9px 12px;border:4px solid var(--ink);border-radius:20px;background:#ffda41;box-shadow:inset 0 3px 0 #fff3b4,0 5px 0 #a77818}.shake-button>span+span{font:clamp(1.25rem,2.4vw,1.95rem)/1 var(--display);text-align:left;white-space:nowrap}.shake-button small{display:block;font:600 12px/1.3 var(--body);margin-top:6px;white-space:normal}.shake-dice{font:52px/1 Arial,sans-serif;transform:rotate(-11deg)}.shake-button.shaking .shake-dice{animation:rattle .35s}.export-button{min-height:91px;border:3px solid var(--ink);border-radius:10px 10px 20px 20px;background:var(--red);color:var(--cream);padding:9px 10px;box-shadow:inset 0 3px 0 #ffffff72,0 5px 0 #9b6020;transform:rotate(-3deg);font-family:var(--display)}.export-button>span{display:block;font-size:29px;line-height:1}.export-button strong{font:25px/1.1 var(--display);white-space:nowrap}.utility-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 1px 0;padding-top:11px;border-top:1px dashed #a57926}.history-actions{display:flex;gap:8px;flex:none}.history-actions button{border:0;background:none;font-size:14px;padding:5px 3px;font-weight:700}.utility-row p{font-size:12px;text-align:center;max-width:440px;line-height:1.4}.utility-row p.error{color:#8a2019;font-weight:800}.volume-label{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:600}.volume-label input{width:70px;height:7px;margin:7px 0;border:0}.volume-label input::-webkit-slider-thumb{width:15px;height:20px;border-radius:4px}.volume-label input::-moz-range-thumb{width:12px;height:17px;border-radius:4px}.outside-note{text-align:center;font-size:12px;line-height:1.5;color:#775e3d;margin:17px auto 0}.outside-note span{margin-left:9px}.no-script{padding:20px;text-align:center}dialog{width:min(460px,calc(100% - 32px));border:4px solid var(--red);border-radius:20px;padding:25px;background:var(--cream);color:var(--ink);box-shadow:0 6px 0 var(--ink);font-family:var(--body)}dialog::backdrop{background:#25180baa;backdrop-filter:blur(3px)}.track-form{display:flex;flex-direction:column;gap:14px}.track-form h2{font:28px/1.05 var(--display);margin-top:7px}.track-form p{font-size:15px;line-height:1.4}.track-form label{font-weight:700}.track-form select{padding:12px;border:2px solid #967140;border-radius:8px;max-width:100%;background:#fff9e7;color:var(--ink);font-size:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}@keyframes rattle{0%,100%{transform:rotate(-11deg)}25%{transform:rotate(12deg) translateY(-3px)}75%{transform:rotate(-25deg) translateY(2px)}}
@media(min-width:1200px){body{padding-top:30px}.toy{max-width:1080px}}
@media(max-width:900px){.brand-panel{padding-right:12px}.mascot{width:116px;height:132px}.meal-stamp{width:93px;height:98px;margin-left:3px}.meal-stamp span{font-size:18px}.wordmark p{font-size:14px}.control-heading h3{font-size:19px}.control-module{padding:12px 9px 10px}.control-heading h3 span{font-size:19px}.slider-ends{font-size:12px;flex-wrap:wrap}.toy-footer{gap:13px;grid-template-columns:.8fr 1.6fr .75fr}.transport-copy{display:none}.transport{justify-content:center}.shake-dice{font-size:44px}.shake-button{gap:8px}.export-button strong{font-size:22px}.volume-label{gap:5px}.volume-label input{width:55px}}
@media(max-width:680px){body{padding:12px 9px 14px}.toy{border-width:7px;border-radius:25px;padding:11px}.brand-panel{min-height:112px;padding:8px 9px 10px 0;border-radius:13px;gap:0}.mascot{width:85px;height:100px;margin-left:-4px}.wordmark{padding-top:15px}.the{font-size:16px;top:-1px;left:2px}h1{font-size:clamp(1.7rem,6.65vw,2.7rem);letter-spacing:-.6px;-webkit-text-stroke:1.1px;text-shadow:1px 3px 0 var(--ink),2px 5px 0 var(--yellow)}.wordmark p{margin:11px 0 0 2px;font-size:12px}.meal-stamp{display:none}.source-strip{padding:7px 7px 7px 10px;margin:12px 0 11px;gap:6px}.source-name{gap:7px}.source-icon{font-size:23px}.eyebrow{font-size:12px;letter-spacing:.6px}.source-name strong{font-size:14px;max-width:calc(100vw - 213px)}.source-actions{gap:4px}.load-button{font-size:14px;padding:9px 10px;min-height:42px}.load-button span{display:none}.source-actions .small-button{font-size:12px;padding:7px;max-width:62px}.source-actions:has(#demoButton:not([hidden])){max-width:162px}.source-strip:has(#demoButton:not([hidden])) .source-name strong{max-width:calc(100vw - 280px)}.editor{padding:12px 10px 0;border-radius:13px}.editor-toolbar{gap:8px;justify-content:space-between}.editor h2{font-size:22px;min-width:150px;flex:1}.compare{order:3;width:100%;padding:3px;margin-top:2px}.compare button{flex:1;padding:9px 12px;min-height:37px}.tempo-label{font-size:12px}.tempo-label input{padding:5px;width:57px}.roll{height:227px}.roll-footer{font-size:12px;gap:8px;flex-wrap:wrap;padding:8px 0}.locks-row{gap:11px;padding:9px 0 11px}.locks{width:100%;justify-content:space-between;gap:5px}.lock-button{padding:8px 11px;min-height:39px;flex:1}.locks .eyebrow{max-width:57px;font-size:12px}.key-controls{width:100%;gap:7px;justify-content:flex-end}.key-lock-label{margin-right:auto;font-size:14px}.key-controls select{min-height:36px;font-size:14px;padding:5px}.control-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px;margin:13px 0 17px}.control-module{padding:12px 11px 10px;border-radius:13px}.control-heading{margin-bottom:10px}.control-heading h3{font-size:22px}.control-heading h3 span{font-size:21px}.dice-button{width:42px;height:42px}.slider-ends{flex-wrap:nowrap;font-size:12px;gap:5px}.toy-footer{grid-template-columns:67px 1fr;gap:14px 12px;padding:0 2px 8px}.play-button{width:62px;height:62px;border-width:4px;box-shadow:0 0 0 3px #f8ecb9,inset 0 3px 0 #ffffff85,0 4px 0 3px #aa771c}.play-button svg{width:33px;height:33px;margin:6px 0 0 1px}.shake-button{min-height:73px;padding:8px 9px;border-width:3px;border-radius:15px;gap:9px}.shake-button>span+span{font-size:clamp(1.05rem,4.8vw,1.5rem)}.shake-button small{font-size:12px;max-width:170px;line-height:1.2}.shake-dice{font-size:39px}.export-button{grid-column:1/-1;min-height:49px;border-radius:9px 9px 15px 15px;transform:none;display:flex;align-items:center;justify-content:center;gap:7px;padding:8px}.export-button>span,.export-button strong{font-size:24px}.utility-row{flex-wrap:wrap;gap:9px;margin-top:9px;padding-top:9px}.utility-row p{order:3;flex-basis:100%;max-width:none;text-align:left;min-height:17px}.history-actions{gap:10px}.history-actions button{min-height:35px;font-size:14px}.volume-label{font-size:12px;gap:8px}.volume-label input{width:65px}.outside-note{font-size:12px;max-width:290px}.outside-note span{display:block;margin-left:0}}
@media(max-width:365px){.toy{padding:9px;border-width:6px}.mascot{width:64px;height:86px}.brand-panel{min-height:102px}.wordmark p{max-width:180px;font-size:12px;line-height:1.2}.control-module{padding:10px 8px}.control-heading h3{font-size:20px}.control-heading h3 span{display:none}.slider-ends{font-size:12px}.slider-row{gap:8px}.shake-button{gap:6px}.shake-dice{font-size:30px}.roll-footer{font-size:12px}.source-strip:has(#demoButton:not([hidden])){flex-wrap:wrap}.source-strip:has(#demoButton:not([hidden])) .source-name strong{max-width:220px}.source-strip:has(#demoButton:not([hidden])) .source-actions{margin-left:auto}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
@media(pointer:coarse){.key-controls select{min-height:40px}.history-actions button{min-height:40px}.dice-button{min-width:42px;min-height:44px}input[type=range]{margin:16px 0}}
