:root{color:#373045;font-synthesis:none;background:#eeeaf8;font-family:ui-rounded,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;overflow:hidden}button{min-height:44px;color:inherit;cursor:pointer;touch-action:manipulation;background:#fffaf2;border:1px solid #d8cfe2;border-radius:12px}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #7d589e}button:disabled{cursor:default}.shell{width:min(100%,540px);height:100dvh;padding:8px max(14px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom));flex-direction:column;gap:4px;margin:auto;display:flex}header{flex-shrink:0;justify-content:space-between;align-items:center;height:45px;display:flex}.brand b{letter-spacing:2px;font-size:14px}.brand small{letter-spacing:.5px;color:#8a799d;margin-top:3px;font-size:10px;display:block}.controls{gap:7px;display:flex}.controls button{color:#806390;width:44px;font-size:16px;font-weight:800}.playfield{flex:1;min-height:150px;margin-top:17px;position:relative}#scene{position:absolute;inset:0}canvas{width:100%;height:100%;display:block}.progress{text-align:center;color:#897499;pointer-events:none;min-width:175px;font-size:10px;position:absolute;top:-17px;left:50%;transform:translate(-50%)}.track{background:#dbd3e6;border-radius:5px;height:3px;margin-top:4px;overflow:hidden}.track i{background:#9477ac;width:0;height:100%;display:block}.bank{flex-shrink:0}.section-heading{color:#8b7a9b;justify-content:space-between;align-items:center;height:20px;font-size:10px;display:flex}.section-heading small{font-size:9px}.slots{grid-template-columns:repeat(var(--columns),1fr);gap:6px;margin-bottom:4px;display:grid}.slot{border:1px dashed #cfc3dc;border-radius:10px;justify-content:center;align-items:center;gap:4px;height:48px;display:flex;position:relative;overflow:hidden}.slot.occupied{border:1px solid #fff9ef;box-shadow:0 3px #b2a3bc}.slot-empty{color:#c0afcc;font-size:22px}.card-color{background:var(--color);z-index:-1;position:absolute;inset:0}.slot,.head,.tail{isolation:isolate}.dragon-token{flex-shrink:0;justify-content:center;align-items:center;width:26px;height:28px;display:flex}.dragon-token img{object-fit:contain;filter:drop-shadow(0 1px 1px #45314740);width:100%;height:100%}strong{color:#fffaf1;text-shadow:0 2px 1px #3c253f60;font-size:24px;font-weight:900;line-height:1}.color-code{color:#fffaf0;opacity:.85;font-size:8px}.queues{grid-template-columns:repeat(var(--columns),1fr);gap:7px;display:grid}.head{border:2px solid #fffaf3;border-radius:10px;justify-content:center;align-items:center;gap:4px;width:100%;height:46px;display:flex;position:relative;overflow:hidden;box-shadow:0 3px #b3a3be}.head:hover:not(:disabled){outline-offset:1px;outline:2px solid #bba3ce}.head:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #b3a3be}.head.closed{border-style:dashed}.tails{flex-direction:column;gap:4px;margin-top:6px;display:flex}.tail{opacity:.86;border-radius:7px;justify-content:center;align-items:center;gap:5px;height:28px;display:flex;position:relative;overflow:hidden}.tail .color-code{display:none}.text-button{color:#8a749b;background:0 0;border:0;min-height:24px;padding:0;font-size:10px;text-decoration:underline}.section-heading .text-button{min-height:20px;font-size:9px}footer{flex-shrink:0;justify-content:space-between;align-items:center;height:30px;font-size:11px;display:flex}#status{font-size:10px}#save-status:empty{display:none}.warning{color:#ae3d52;font-size:10px}[hidden]{display:none!important}.overlay{z-index:10;background:#30203a70;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.dialog{text-align:center;background:#fffaf2;border:1px solid #fff;border-radius:24px;width:min(380px,100%);max-height:90dvh;padding:25px;overflow:auto;box-shadow:0 20px 80px #3f275535}.dialog h2{margin:0 0 18px;font-size:22px}.dialog>button{width:100%;margin:7px 0;padding:10px;display:block}.primary{color:#fff;background:#8c6aa7}.settings{text-align:left;margin:20px 0}.settings label{justify-content:space-between;align-items:center;min-height:44px;font-size:13px;display:flex}.level-grid{grid-template-columns:repeat(3,1fr);gap:7px;display:grid}.level-grid button{font-size:11px}.all-queues{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.all-queues .tail{margin-top:5px}.all-queues .dragon-token{width:16px}@media (height<=710px){.shell{gap:2px;padding-top:5px}header{height:40px}.section-heading{height:17px}.slots{gap:4px;margin-bottom:1px}.slot{height:40px}.slot strong{font-size:20px}.head{height:44px}.tails{gap:3px;margin-top:4px}.tail{height:21px}.tail strong{font-size:15px}.tail .dragon-token{width:18px;height:18px}.playfield{margin-top:17px}footer{height:26px}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto}}.bank{width:var(--board-width,100%);align-self:center}.slot .color-code{display:none}@media (height<=710px) and (orientation:portrait){.tails .tail:nth-child(n+2){display:none}}#scene{bottom:-75px}.bank{z-index:1;position:relative}@media (orientation:landscape) and (height<=500px){body{overflow-y:auto}.shell{width:min(100%,540px);height:720px}.tails .tail:nth-child(n+2){display:none}}.bank{max-width:100%}.bank>.section-heading:first-child{visibility:hidden}.slots,.queues{grid-template-columns:repeat(var(--columns),minmax(0,1fr))}.lane{min-width:0}.head{gap:3px;min-width:0;padding:0}@media (width<=375px){.head .dragon-token{width:18px;height:22px}.head strong{font-size:20px}.head .color-code{display:none}}.tails{min-height:92px}@media (height<=710px){.tails{min-height:21px}}.bank{container-type:inline-size}.slot,.slot.occupied,.head,.tail{box-shadow:none;background:0 0;border:0;border-radius:0;overflow:visible}.card-color{border:12px solid #0000;border-image-source:var(--di-skin);pointer-events:none;background:0 0;border-image-slice:36 fill;border-image-width:12px}.slot:not(.occupied):before{content:"";z-index:-1;pointer-events:none;border:12px solid #0000;border-image:url(../assets/ui-buttons-v1/skins/slot-empty.svg) 40 fill/12px;position:absolute;inset:0}.head:not(:has(.card-color)):before{content:"";z-index:-1;pointer-events:none;border:12px solid #0000;border-image:url(../assets/ui-buttons-v1/skins/slot-empty.svg) 40 fill/12px;position:absolute;inset:0}.slot-empty{object-fit:contain;opacity:.9;width:22px;height:22px}.slot strong,.head strong,.tail strong{text-shadow:none;font-variant-numeric:tabular-nums}.slot{gap:3px}.slot strong{font-size:clamp(18px,6cqw,25px)}.slot .dragon-token{width:clamp(14px,5cqw,25px);height:30px}.head{gap:2px;padding:3px}.head .dragon-token{width:clamp(16px,7cqw,32px);height:36px}.head strong{font-size:clamp(18px,6.5cqw,28px)}.head .wait-icon{object-fit:contain;visibility:hidden;flex-shrink:0;width:clamp(8px,2.5cqw,12px);height:14px}.head.closed .wait-icon{visibility:visible}.head.closed{border:0}.head:disabled{filter:saturate(.55);opacity:.65}.head:active:not(:disabled){box-shadow:none}.head:focus-visible{outline-offset:2px;border-radius:12px;outline:3px solid #7d589e}.tail{opacity:1;gap:3px;padding:2px 4px}.tail .dragon-token{width:clamp(14px,5.5cqw,25px);height:23px}.tail strong{font-size:clamp(15px,5.2cqw,21px)}.color-code{display:none}.dragon-token{overflow:hidden}.dragon-token img{filter:none;flex-shrink:0;width:125%;height:125%}footer{gap:8px;height:46px}footer #status{text-align:center;flex:1;font-size:9px}.utility-wide,.utility-square,.controls button{isolation:isolate;box-shadow:none;color:#45305f;background:0 0;border:0;border-radius:0;justify-content:center;align-items:center;gap:7px;font-weight:800;display:flex;position:relative}.utility-wide:before,.utility-square:before,.controls button:before{content:"";z-index:-1;pointer-events:none;border:12px solid #0000;border-image:url(../assets/ui-buttons-v1/skins/utility-wide.svg) 36 fill/12px;position:absolute;inset:0}.utility-square:before,.controls button:before{border-image-source:url(../assets/ui-buttons-v1/skins/utility-square.svg)}.utility-wide{min-height:44px;padding:6px 13px;font-size:14px}.utility-wide img{width:21px;height:21px}.utility-square{flex-shrink:0;width:44px;height:44px;padding:9px}.utility-square img{width:25px;height:25px}.utility-wide:active,.utility-square:active,.controls button:active{transform:translateY(1px)}.utility-wide:focus-visible,.utility-square:focus-visible,.controls button:focus-visible{border-radius:12px}@media (height<=710px){footer{height:44px}.slot .dragon-token{height:24px}.head .dragon-token{height:30px}.tail .dragon-token{height:18px}}@media (prefers-reduced-motion:reduce){.head:active:not(:disabled),.utility-wide:active,.utility-square:active,.controls button:active{transform:none}}html{background:#f0eaf9}body{background-color:#f0eaf9;background-image:url(../assets/backgrounds-v1/B-quiet-clouds.png);background-position:50%;background-repeat:no-repeat;background-size:cover;background-attachment:fixed}@media (aspect-ratio>=4/3){body{background-size:auto 100dvh}}@font-face{font-family:Nunito;src:url(../assets/menu-v1/fonts/Nunito-Variable.ttf)format("truetype");font-style:normal;font-weight:200 1000;font-display:swap}:root{--ink:#503762;--muted:#8b729e;--line:#dfd0ed;--cream:#fffaf1;--violet:#9472b9;--yellow:#ffda63;--soft:#f3edf9;color:var(--ink);font-family:Nunito,Segoe UI,sans-serif}button,input,select{font:inherit}button{color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #74509a}.shell{padding:10px max(12px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom));gap:0}#game{flex-direction:column;gap:5px;width:100%;height:100%;min-height:0;display:flex}.playfield{min-height:230px;margin-top:0}.menu-icon{object-fit:contain;flex-shrink:0;width:22px;height:22px;display:block}.field-hud{z-index:2;visibility:hidden;pointer-events:auto;height:65px;position:absolute}.toolbar{justify-content:space-between;align-items:center;gap:8px;height:52px;padding:2px 7px 5px 10px;display:flex}.level-label{align-items:center;gap:9px;display:flex}.level-glyph{background:#f0e7f8;border-radius:13px;padding:7px}.level-glyph .menu-icon{width:24px;height:24px}.eyebrow{font-size:12px;font-weight:700;line-height:1;display:block}.level-label strong{color:var(--ink);font-variant-numeric:tabular-nums;text-shadow:none;font-size:25px;font-weight:900;line-height:1.12;display:block}.toolbar-actions{gap:6px;display:flex}.glass{background:#ffffff8c;border:1px solid #cdb8dfbf;border-radius:14px;box-shadow:0 2px #d9c8e659}#speed{font-variant-numeric:tabular-nums;min-width:52px;height:44px;padding:0 8px;font-size:18px;font-weight:900}.icon-button{border-radius:14px;place-items:center;width:44px;min-width:44px;height:44px;padding:0;display:grid}.icon-button .menu-icon{width:20px;height:20px}.progress-wrap{padding:0 8px 8px}.track{background:#e4d9ee;border-radius:6px;height:5px;margin:0;overflow:hidden}.track i{background:#ab86ce;border-radius:6px}.section-heading{color:#7a5e91;height:24px;font-size:12px;font-weight:800}.section-heading .text-button{color:#8b729e;font-size:10px}.slot-heading{height:20px}.head strong,.tail strong,.slot strong{font-family:Nunito,sans-serif;font-weight:900}.utility-wide,.utility-square{color:var(--ink);font-family:Nunito,sans-serif}footer{height:46px;margin-top:3px}footer #status{color:#80658f;font-size:10px;line-height:1.2}.utility-wide .menu-icon{width:19px;height:19px}.overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#442d584d;padding:18px 12px}.dialog{overscroll-behavior:contain;background:var(--cream);scrollbar-width:thin;scrollbar-color:#d9c3e8 transparent;width:min(100%,360px);max-height:calc(100dvh - 36px);color:var(--ink);border:2px solid #fffffff2;border-radius:30px;padding:24px 22px 22px;position:relative;overflow:auto;box-shadow:0 7px #d7c4e5,0 24px 60px #492d5e2e}.dialog:focus{outline:none}.dialog h2{letter-spacing:-.5px;text-align:center;margin:0;font-size:28px;font-weight:900;line-height:1.15}.dialog .subtitle{text-align:center;color:#9278a4;margin:5px 0 21px;font-size:13px;font-weight:600;line-height:1.35}.dialog .close{box-shadow:none;background:0 0;border:0;width:44px;margin:0;padding:0;display:grid;position:absolute;top:10px;right:10px}.close .menu-icon{width:18px;height:18px}.modal-mark{background:#eee3f7;border-radius:18px;place-items:center;width:55px;height:55px;margin:0 auto 10px;display:grid;box-shadow:inset 0 0 0 1px #e0cfea}.modal-mark .menu-icon{width:27px;height:27px}.dialog .action{background:#fffcf7;border:1.5px solid #dfcfeb;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:49px;margin:9px 0 0;padding:10px 8px;font-size:16px;font-weight:800;line-height:1.3;display:flex}.action .menu-icon{width:20px;height:20px}.dialog .action.primary{color:#563d5e;background:linear-gradient(#ffe984,#ffda62);border:2px solid #fff5ca;margin-bottom:13px;box-shadow:0 4px #e8c865}.dialog .action.tinted{background:#f0e6f8;border-color:#e4d4ef;box-shadow:0 3px #dfcdeb}.settings{border-top:1px solid #eaddf0;border-bottom:1px solid #eaddf0;margin:19px 0 16px;padding:9px 0}.setting-row{justify-content:space-between;align-items:center;gap:10px;min-height:52px;font-size:15px;font-weight:700;display:flex}.setting-name{align-items:center;gap:9px;display:flex}.setting-name .menu-icon{width:20px;height:20px}.settings .switch{cursor:pointer;justify-content:center;align-items:center;min-width:48px;min-height:44px;display:flex;position:relative}.switch input{appearance:none;cursor:pointer;background:#e4d8ed;border:1px solid #d8c5e7;border-radius:20px;flex-shrink:0;width:46px;height:27px;margin:0;display:block;position:relative}.switch input:after{content:"";background:#fffdf8;border-radius:50%;width:21px;height:21px;transition:transform .15s;display:block;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #c0a9d0}.switch input:checked{background:#a583c4;border-color:#a583c4}.switch input:checked:after{transform:translate(19px)}.language-button{color:#7b5c95;background:0 0;border:0;align-items:center;gap:4px;min-height:44px;padding:0;font-size:14px;font-weight:800;display:flex}.language-button .menu-icon{width:16px;height:16px}.level-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:16px;display:grid}.level-grid .level-card{background:#fffdf8;border:1.5px solid #e3d4ed;border-radius:16px;flex-direction:column;align-items:center;gap:4px;min-height:119px;padding:7px 5px 6px;display:flex;position:relative;box-shadow:0 3px #ede3f2}.level-grid .level-card.current{background:#fff0b2;border:2px solid #e5c66e;box-shadow:0 3px #e8cf85}.level-card .num{color:#9276a5;align-self:flex-start;font-size:11px;font-weight:900;line-height:1}.level-card.current .num{color:#93752b}.level-card .level-thumbnail{object-fit:contain;image-rendering:auto;border-radius:4px;width:48px;height:52px}.level-card .name{text-align:center;overflow-wrap:anywhere;font-size:12px;font-weight:800;line-height:1.15}.level-card .current-dot{color:#96733c;font-size:11px;position:absolute;top:5px;right:6px}.completion{position:absolute;bottom:4px;right:4px}.completion .menu-icon{width:12px;height:12px}.pager{justify-content:space-between;align-items:center;margin:17px 0 11px;display:flex}.pager .icon-button{background:#f7f0fb;border:1px solid #e2d3ed;border-radius:13px}.pager .icon-button:disabled{opacity:.35}.pager-label{color:#9276a5;font-size:12px;font-weight:700}.dialog .language-choice{border:1px solid var(--line);background:#fffcf6;border-radius:16px;justify-content:space-between;align-items:center;width:100%;min-height:54px;margin:10px 0 0;padding:12px 16px;font-size:16px;font-weight:800;display:flex}.language-choice.selected{background:#f0e4f8;border-color:#c8aadd}.language-panel{padding-top:12px}.dialog.levels-dialog{padding:25px 17px 18px}.levels-dialog .modal-mark{margin-bottom:9px}.dialog.levels-dialog .subtitle{margin-bottom:4px}.all-queues{margin-top:14px}.all-queues .tail{height:28px}.all-queues .card-color{border-image-width:8px}.all-queues .tail strong{font-size:16px}body.reduced-motion *{transition:none!important;animation:none!important}@media (height<=710px){.shell{padding-top:7px}#game{gap:3px}.section-heading{height:21px}.slot-heading{height:17px}footer{height:44px;margin-top:1px}}@media (width<=350px){.shell{padding-inline:9px}.dialog{padding:23px 17px 18px}.dialog.levels-dialog{padding:23px 12px 16px}.level-card .name{font-size:11px}.level-grid .level-card{min-height:114px}.setting-row{gap:6px;font-size:14px}.setting-name{gap:6px}}@media (height<=540px) and (orientation:portrait){body{overflow-y:auto}.shell{height:568px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
