/* Roll4 — one rhythmic grid inside a continuous walnut instrument case. */
body main.ritual-room.melody{--melody-ink:#b7a0d4;--melody-rgb:183,160,212;--melody-bg:#151316;--roll-ink:#614879;--roll-rgb:97,72,121;--roll-paper:#f0ede6;--accent:var(--melody-ink);--module-accent:var(--melody-ink);--sentence-gold:var(--melody-ink);--navigation-ink:var(--melody-ink);color:var(--melody-ink);overflow:clip;background:radial-gradient(ellipse at 48% 44%,#27222c55,transparent 65%),var(--melody-bg);}
body main.ritual-room.melody[data-melody-palette=orange]{--melody-ink:#dca170;--melody-rgb:220,161,112;--melody-bg:#171411;--roll-ink:#80502e;--roll-rgb:128,80,46;}
body main.melody :is(.imprint-brand,.imprint-next-reveal,.module-navigation,.account-button,.module-how-trigger,.annual-progress,.module-side-navigation){color:var(--melody-ink);}
body[data-pluritual-wip="true"] main.ritual-room.melody > .room-content{padding:0!important;min-height:0;overflow:visible;align-items:center;justify-content:center;}
.melody-panel{--keyboard-width:64px;--roll-gap:5px;width:100%;height:100%;min-height:0;display:flex;flex-direction:column;padding:0;box-sizing:border-box;}
.melody-workspace{position:relative;width:100%;min-height:0;flex:1;display:flex;flex-direction:column;box-sizing:border-box;padding:13px;border:1px solid #38271b;border-radius:7px;background:#76543a url("material/walnut-grain.png") center/600px auto;color:var(--roll-ink);box-shadow:0 12px 28px #0005,0 2px 4px #0008,inset 0 1px 1px #efd5ab80,inset 0 -3px 3px #27190ca0;isolation:isolate;}
/* A continuous walnut case supports the paper and keyboard; the inner lip casts a fine shadow. */
.melody-workspace::before{content:"";position:absolute;pointer-events:none;z-index:-1;inset:11px;border-radius:2px;background:var(--roll-paper);box-shadow:0 0 0 1px #35221880,inset 0 2px 5px #3b291b26;}.melody-workspace::after{display:none;}
.melody-stage{position:relative;display:flex;flex-direction:column;flex:1;min-height:90px;width:100%;box-sizing:border-box;isolation:isolate;}
.melody-roll-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:28px;flex:none;color:var(--roll-ink);}
.melody-tempo{width:var(--keyboard-width);display:flex;align-items:baseline;justify-content:center;gap:4px;white-space:nowrap;font:12px/1 Arial,sans-serif;}
.melody-tempo strong{font-weight:600;}.melody-tempo small{font-size:9px;letter-spacing:.04em;opacity:.75;}



.melody-stage::after{content:"";position:absolute;inset:0;z-index:9;pointer-events:none;opacity:.12;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%238a7979' opacity='.4' filter='url(%23g)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");}
.melody-time-ruler{position:relative;margin-left:calc(var(--keyboard-width) + var(--roll-gap));height:22px;flex:none;color:var(--roll-ink);}
.melody-time-ruler canvas{position:absolute;width:100%;height:22px;pointer-events:none;}
.melody-time-ruler input{position:absolute;inset:-8px 0 0;width:100%;height:30px;margin:0;appearance:none;background:transparent;cursor:ew-resize;}
.melody-time-ruler input::-webkit-slider-runnable-track{height:1px;background:transparent;}.melody-time-ruler input::-webkit-slider-thumb{appearance:none;width:0;background:transparent;}.melody-time-ruler input::-moz-range-track{background:transparent;}.melody-time-ruler input::-moz-range-thumb{width:0;border:0;background:transparent;}
.melody-time-marker{position:absolute;top:17px;width:7px;height:5px;transform:translateX(-50%);background:var(--roll-ink);clip-path:polygon(0 0,100% 0,50% 100%);pointer-events:none;}
.melody-roll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#8b7b9466 transparent;overscroll-behavior:contain;touch-action:pan-y;border-top:1px solid #77638820;border-bottom:1px solid #77638820;}
.melody-roll-content{position:relative;width:100%;min-height:0;}
.melody-pitch-ruler{position:absolute;left:0;top:0;bottom:0;width:var(--keyboard-width);background:#eee8d8;box-shadow:2px 0 3px #3d302f40;z-index:2;}
body main.melody .melody-pitch-ruler button{position:absolute!important;height:var(--key-height)!important;min-height:0!important;width:100%!important;margin:0!important;padding:0!important;border-radius:0 2px 2px 0!important;border:0!important;border-bottom:1px solid #94877890!important;background:linear-gradient(90deg,#e2dac7,#fff9ec 24%,#f3eddc 90%,#d2c6b2)!important;color:#766a62!important;font:500 10px/1 Arial,sans-serif!important;box-shadow:inset 0 1px #fff8!important;cursor:pointer;}
.melody-pitch-ruler button span{position:absolute;right:7px;top:var(--label-offset);transform:translateY(-50%);opacity:0;pointer-events:none;}
.melody-pitch-ruler :is(.is-octave,.is-hovered,.is-sounding,:focus-visible) span{opacity:1;}
body main.melody .melody-pitch-ruler button.is-black{z-index:2;width:64%!important;border-radius:0 3px 3px 0!important;background:linear-gradient(90deg,#17151a,#39333c 82%,#211c25)!important;color:#f0e9f4!important;border-bottom:2px solid #0e0a12!important;box-shadow:inset 0 1px #ffffff25,1px 2px 2px #0005!important;}
body main.melody .melody-pitch-ruler button.is-hovered{background:linear-gradient(90deg,#e1d5eb,#e9deee)!important;color:#4e375e!important;}
body main.melody .melody-pitch-ruler button.is-black.is-hovered{background:linear-gradient(90deg,#493451,#6b507b)!important;color:#fff!important;}
body main.melody .melody-pitch-ruler button.is-sounding{background:var(--melody-ink)!important;color:#2b1e36!important;box-shadow:inset 0 0 7px #fff6!important;}
.melody-plot{position:absolute;left:calc(var(--keyboard-width) + var(--roll-gap));right:0;top:0;bottom:0;overflow:hidden;touch-action:pan-y;cursor:crosshair;}
.melody-grid-lines,.melody-score{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.melody-pitch-highlight{position:absolute;left:0;right:0;background:rgba(var(--roll-rgb),.09);box-shadow:inset 0 1px rgba(var(--roll-rgb),.15),inset 0 -1px rgba(var(--roll-rgb),.15);pointer-events:none;}
.melody-placement-preview{position:absolute;z-index:3;display:flex;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;border:1px dashed rgba(var(--roll-rgb),.65);border-radius:5px;background:rgba(var(--roll-rgb),.14);color:var(--roll-ink);font:600 11px Arial,sans-serif;}
.melody-score-note,.melody-candidate{position:absolute;box-sizing:border-box;white-space:nowrap;border-radius:5px;}
.melody-score-note{display:flex;align-items:center;overflow:hidden;padding:0 7px;background:rgba(var(--roll-rgb),.36);border:1px solid rgba(var(--roll-rgb),.05);color:transparent;font-size:0;box-shadow:inset 0 1px #fff3;}
.melody-score-note.is-sounding{background:rgba(var(--roll-rgb),.65);border-color:rgba(var(--roll-rgb),.3);}
.melody-candidate{z-index:5;background:var(--roll-ink);border:1px solid #fff8;box-shadow:0 0 0 1px rgba(var(--roll-rgb),.3),0 2px 5px rgba(var(--roll-rgb),.2);touch-action:none;}
.melody-candidate.has-overlap{border:1px dashed #873e37;background:#a15f61;}.melody-candidate.is-dragging{box-shadow:0 3px 10px #4a365c50,0 0 0 1px #fff;}.melody-candidate.is-sounding{background:linear-gradient(#ffffff22,#ffffff22),var(--roll-ink);box-shadow:0 0 12px rgba(var(--roll-rgb),.3);}
.melody-candidate-label{position:absolute;inset:0 5px;display:flex;align-items:center;justify-content:center;font:600 10px Arial,sans-serif;color:#fff9ff;white-space:nowrap;overflow:hidden;pointer-events:none;}
body main.melody .melody-candidate button{position:absolute!important;top:50%;transform:translateY(-50%);height:44px!important;min-height:44px!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;border-radius:5px!important;background:transparent!important;color:#fff!important;box-shadow:none!important;touch-action:none!important;cursor:ew-resize;}
body main.melody .melody-candidate [data-grid=start]{left:-12px;width:20px!important;}body main.melody .melody-candidate [data-grid=end]{right:-12px;width:20px!important;}body main.melody .melody-candidate [data-grid=move]{left:8px;right:8px;width:auto!important;min-width:0!important;cursor:move;}
.melody-candidate button span{pointer-events:none;}.melody-candidate [data-grid=move] span{display:none;}.melody-candidate :is([data-grid=start],[data-grid=end]) span{position:absolute;top:50%;transform:translateY(-50%);font-size:0;display:block;width:2px;height:10px;border-radius:2px;background:currentColor;opacity:.8;}
.melody-playhead{position:absolute;top:0;bottom:0;width:1px;pointer-events:none;}.melody-playhead{background:rgba(var(--roll-rgb),.55);z-index:4;}
.melody-invitation{display:none;}
.melody-controls{position:relative;display:flex;align-items:center;width:100%;height:72px;gap:14px;padding:10px 7px;box-sizing:border-box;color:var(--roll-ink);flex:none;background:linear-gradient(#fff0,#d8d0df22);}
.melody-controls button{appearance:none;color:inherit;background:transparent;border:0;padding:7px;min-width:40px;height:40px;border-radius:5px;display:flex;align-items:center;justify-content:center;gap:5px;cursor:pointer;font:12px Arial,sans-serif;white-space:nowrap;}
.melody-controls button:hover{background:rgba(var(--roll-rgb),.09);}.melody-controls button:disabled{opacity:.3;cursor:default;}
.melody-controls>[data-melody=play]{background:var(--roll-ink);color:#fff9ff;padding:12px 19px;min-width:116px;height:48px;font-size:15px;font-weight:600;border-radius:9px;box-shadow:inset 0 1px #fff3,0 3px 7px #40304a26;}.melody-controls>[data-melody=play]:hover{filter:brightness(1.12);}
.melody-panel button:focus-visible,.melody-panel input:focus-visible,.melody-roll:focus-visible{outline:2px solid var(--melody-ink)!important;outline-offset:2px;}.melody-workspace button:focus-visible,.melody-workspace input:focus-visible,.melody-roll:focus-visible{outline-color:var(--roll-ink)!important;}
.melody-panel svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none;}
.melody-timeline{position:relative;flex:1;min-width:80px;height:40px;border-radius:5px;background:rgba(var(--roll-rgb),.055);box-shadow:inset 0 0 0 1px rgba(var(--roll-rgb),.12);}
.melody-overview{position:absolute;inset:4px 0;width:100%;height:32px;pointer-events:none;}.melody-view-window{position:absolute;top:1px;bottom:1px;left:var(--view-start);right:calc(100% - var(--view-end));border:1px solid rgba(var(--roll-rgb),.55);border-radius:3px;background:rgba(var(--roll-rgb),.045);pointer-events:none;}

.melody-position{position:absolute;z-index:2;top:0;left:0;width:100%;height:40px;margin:0;appearance:none;background:transparent;cursor:grab;touch-action:none;}.melody-position:active{cursor:grabbing;}
.melody-controls .melody-window-edge{position:absolute;z-index:4;top:0;height:40px;min-width:0;padding:0;margin:0;border:0;border-radius:0;background:transparent;box-shadow:none;cursor:ew-resize;touch-action:none;}.melody-window-edge span{position:absolute;top:7px;width:2px;height:26px;background:var(--roll-ink);border-radius:1px;transform:translateX(-50%);pointer-events:none;}.melody-controls .melody-window-edge:hover{background:rgba(var(--melody-rgb),.08);}
.melody-position::-webkit-slider-runnable-track{height:3px;background:transparent;}.melody-position::-webkit-slider-thumb{appearance:none;width:0;height:0;background:transparent;}.melody-position::-moz-range-track{height:3px;background:transparent;}.melody-position::-moz-range-thumb{width:0;height:0;border:0;background:transparent;}
.melody-take-actions{display:flex;align-items:center;justify-content:center;gap:2px;border-left:1px solid #78638430;padding-left:5px;}.melody-note-info{display:none;}.melody-take-actions button{min-width:42px;width:42px;padding:10px;height:44px;}
.melody-note-context{height:26px;flex:none;display:flex;align-items:end;justify-content:center;}.melody-gesture-hint{font:11px/1.4 Arial,sans-serif;color:#c1adce;opacity:.86;text-align:center;}
.melody-cta{height:88px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--melody-ink);width:100%;}
body main.melody .melody-cta .voice-submit-btn{--action-fill:var(--melody-ink);--action-hover-fill:var(--melody-ink);--action-disabled-fill:var(--melody-ink);--action-wave-rgb:var(--melody-rgb);width:240px!important;height:52px!important;min-height:52px!important;padding:12px 16px!important;white-space:nowrap!important;background:var(--melody-ink);color:var(--melody-bg);border:0;box-shadow:none;filter:none;font-size:16px!important;}body main.melody .melody-cta .voice-submit-btn span{white-space:nowrap!important;}body main.melody .melody-cta .voice-submit-btn:disabled{opacity:.65;}
.melody-status{font:11px/1.4 Arial,sans-serif;text-align:center;margin:0;min-height:14px;color:#ddd0e1;}.melody-status:empty{visibility:hidden;}.melody-status.is-error{color:#e8bba1;}.melody-retry{color:inherit;background:none;border:0;border-bottom:1px solid currentColor;font:11px Arial;cursor:pointer;}
.melody-panel [hidden],.melody-wip-controls[hidden]{display:none!important;}
.melody-prototype-settings{display:flex;flex-wrap:wrap;gap:5px;padding:8px 0;}.melody-prototype-settings button{min-height:36px;}.melody-wip-controls details{margin:8px 0;}.melody-wip-controls summary{cursor:pointer;}.melody-wip-controls{border-top:1px solid #c5b89b;padding-top:8px;margin-top:12px;}.melody-wip-controls>div{display:flex;gap:8px;}.melody-wip-controls button[aria-pressed=true]{background:#eae1d1;}
body main.melody .flow-preview-controls.wip-preview-controls{display:none!important;}
body main.melody > header.pluritual-header .module-how-trigger{box-sizing:border-box;appearance:none;border:1px solid rgba(var(--melody-rgb),.38);border-radius:6px;background:linear-gradient(145deg,rgba(var(--melody-rgb),.12),rgba(var(--melody-rgb),.03));color:var(--melody-ink);padding:0;font-size:0;line-height:1;text-decoration:none;box-shadow:inset 0 1px rgba(var(--melody-rgb),.12),0 4px 12px #00000008;}body main.melody > header.pluritual-header .module-how-trigger>span{display:none;}body main.melody > header.pluritual-header .module-how-trigger>svg.help-question-icon{display:block;width:25px;height:25px;margin:0;}body main.melody > header.pluritual-header .module-how-trigger:hover{border-color:var(--melody-ink);background:rgba(var(--melody-rgb),.17);}.module-help-dialog.melody .module-help-close{z-index:1;}
@media(min-width:701px) and (min-height:521px){.melody-panel{max-height:880px;}}
@media(max-width:900px){.melody-controls{gap:9px;padding-inline:3px;}}
@media(max-width:700px){.melody-panel{--keyboard-width:52px;--roll-gap:4px;}.melody-workspace{padding:9px;border-radius:6px;}.melody-workspace::before{inset:7px;}.melody-controls{gap:7px;height:68px;padding:8px 2px;}.melody-controls>[data-melody=play]{min-width:48px;width:48px;padding:12px;}.melody-controls>[data-melody=play]>span{display:none;}.melody-take-actions{gap:0;padding-left:2px;}.melody-take-actions button{min-width:36px;width:36px;padding:8px;}.melody-timeline{min-width:60px;}.melody-gesture-hint{font-size:10px;}.melody-note-context{height:30px;padding:0 6px;}.melody-cta{height:82px;}.melody-status{font-size:10px;}.melody-retry{position:absolute;bottom:0;right:0;}}
@media(max-height:520px) and (min-width:701px){.melody-workspace{padding:9px;}.melody-workspace::before{inset:7px;}.melody-controls{height:52px;padding-block:3px;}.melody-cta{height:58px;}body main.melody .melody-cta .voice-submit-btn{height:40px!important;min-height:40px!important;width:210px!important;}.melody-note-context{height:20px;}.melody-status{font-size:10px;min-height:0;}.melody-status:empty{display:none;}}

.melody-lab-dialog{width:min(850px,94vw);max-height:86dvh;overflow:auto;box-sizing:border-box;background:#19161df7;color:#d8c8e8;border:1px solid #8d749c77;border-radius:16px;padding:26px;font:14px/1.5 Arial,sans-serif;box-shadow:0 20px 100px #000b;}.melody-lab-dialog::backdrop{background:#08060bc9;backdrop-filter:blur(4px);}.melody-lab-dialog header{display:flex;justify-content:space-between;gap:20px;align-items:start;}.melody-lab-dialog h2,.melody-lab-dialog h3{font-family:Fraunces,Georgia,serif;font-weight:500;}.melody-lab-dialog h2{margin:5px 0;font-size:30px;}.melody-lab-dialog h3{font-size:22px;margin:0 0 6px;}.melody-lab-dialog small{font-size:10px;letter-spacing:.12em;}.melody-lab-dialog button,.melody-lab-dialog select,.melody-lab-dialog input{font:inherit;color:inherit;}.melody-lab-dialog button,.melody-lab-dialog select,.melody-lab-dialog input[name=seed]{background:#b6a0d313;border:1px solid #b6a0d34d;border-radius:7px;padding:8px 12px;}.melody-lab-dialog button{cursor:pointer;min-height:40px;}.melody-lab-dialog button:disabled{opacity:.4;cursor:default;}.melody-lab-dialog input[type=range]{accent-color:#b7a0d4;}.melody-lab-settings{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin:20px 0;}.melody-lab-settings label{display:flex;align-items:center;gap:8px;font-size:12px;}.melody-lab-settings input[name=seed]{width:60px;}.melody-lab-results{display:grid;grid-template-columns:1fr 1fr;gap:14px;}.melody-lab-results>div{border:1px solid #b6a0d344;border-radius:8px;padding:14px;}.melody-lab-results p{font:25px Fraunces,Georgia,serif;margin:8px 0 0;}.melody-lab-families article{border-top:1px solid #b6a0d32e;padding:20px 0;}.melody-lab-families p{margin:5px 0 9px;}.melody-lab-families select{max-width:78%;margin-right:8px;background:#28212e;}.melody-lab-status{color:#ead9b5;min-height:20px;}.melody-lab-dialog details{border-top:1px solid #b6a0d32e;padding-top:15px;font-size:12px;}.melody-lab-dialog summary{cursor:pointer;}@media(max-width:500px){.melody-lab-dialog{padding:18px;}.melody-lab-dialog h2{font-size:25px;}.melody-lab-results{gap:8px;}.melody-lab-families select{width:100%;max-width:none;margin-bottom:8px;}}


.melody-candidate [data-grid=start] span{right:3px;}.melody-candidate [data-grid=end] span{left:3px;}
