@font-face{font-family:VT323;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/vt323-latin-400-normal-wDgJuOC9.woff2) format("woff2"),url(/assets/vt323-latin-400-normal-Dqn9ZSPj.woff) format("woff")}:root{font-family:VT323,monospace;color:#e7d2ea;background:#09070f;font-synthesis:none;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100svh;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#24152f,#0a080f 72%);overflow:hidden}button,input{font:inherit}button{cursor:pointer;color:inherit;touch-action:none}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:2px solid #aceee6;outline-offset:4px}button{border-radius:0}#app{position:relative}#frame{position:absolute;transform-origin:top left;width:960px;height:540px;background:#130c1c;box-shadow:0 0 0 1px #4c3156,0 0 0 5px #130e1c,0 28px 90px #0009;overflow:hidden}#game,#ui,.play-ui{position:absolute;inset:0}#game canvas{image-rendering:pixelated!important;display:block}#ui{pointer-events:none}button,input,.dialog{pointer-events:auto}img{image-rendering:pixelated;object-fit:contain;user-select:none}.sprite{width:40px;height:40px;display:inline-block;vertical-align:middle}header{height:78px;background:linear-gradient(#120c1bf5,#120c1bd9);border-bottom:1px solid #533358;display:flex;align-items:center;padding:0 26px;position:absolute;left:0;right:0;top:0}.brand{display:flex;align-items:center;gap:6px}.brand .sprite{width:46px;height:46px}.brand h1{font-family:Georgia,serif;font-variant:small-caps;font-size:31px;font-weight:400;letter-spacing:-1.2px;margin:0;color:#f4d9e9;text-shadow:2px 2px #5c315f}.brand span{font-size:12px;color:#b58dad;letter-spacing:3px;display:block;text-align:center;margin-top:3px}.chapter{position:absolute;left:331px;top:32px;font-size:15px;letter-spacing:2px;color:#b993c2}.tiny-star{font-size:13px;color:#b774a8;padding:0 13px}.flames{position:absolute;left:720px;display:flex;align-items:center;gap:9px}.flames>div>span{display:block;font-size:13px;letter-spacing:1.4px;color:#c3a2c8}.flame-symbol{font-size:31px;color:#f1a6b4}.flames strong{font-weight:400;font-size:28px;color:#f9c1c5;line-height:26px}.flames small{font-size:16px;color:#826e91}.icon-button{position:absolute;right:26px;background:#22172c;border:1px solid #5b3d63;width:31px;height:31px;color:#be91c6;font-family:Arial;font-size:20px}.icon-button:hover{background:#422747}.witch-note{position:absolute;top:175px;left:32px;width:166px;background:#140d1eb8;padding:14px 12px;border-left:2px solid #704574}.eyebrow{font-size:13px;letter-spacing:1.5px;color:#b186b5}.witch-note .eyebrow{font-size:10px;letter-spacing:1px}.witch-note p{font-size:21px;line-height:1.08;color:#d7bddb;margin:10px 0}.note-rule{display:block;width:25px;height:2px;background:#79527e;margin-top:14px}.pixel-panel{background:#160f20ef;border:1px solid #634371;box-shadow:inset 0 0 0 3px #20162c,0 3px #08060d}.inventory{position:absolute;right:26px;top:97px;width:244px;height:397px;padding:14px 12px 10px}.panel-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #4e325b;padding-bottom:8px;color:#d8acd9}.panel-heading h2{font-size:22px;font-weight:400;letter-spacing:2px;margin:0}.panel-heading>span{color:#85588d;font-size:17px}.inventory-help{font-size:14px;color:#947caa;margin:7px 0 9px}.inventory-row{position:relative;width:100%;height:29px;background:transparent;border:0;text-align:left;display:flex;gap:5px;align-items:center;padding:0 6px 0 0;transition:background .12s;border-bottom:1px solid #302037}.inventory-row:hover:not(:disabled){background:#39243f}.inventory-row .sprite{width:29px;height:29px;transition:transform .12s}.inventory-row:hover:not(:disabled) .sprite{transform:translateY(-2px)}.item-name{font-size:18px;white-space:nowrap;flex:1}.quantity{font-size:20px;font-weight:400;color:#e0c2e7;min-width:14px;text-align:right}.reserved{font-size:11px;color:#c993c6;position:absolute;right:20px;bottom:-1px}.inventory-row:disabled{opacity:.3}.thread-row{height:39px;margin-top:8px;border-top:1px solid #764163;border-bottom:0;color:#e69ecf}.thread-row .sprite{width:32px;height:32px}.thread-row .quantity{color:#efa1d1}.inventory-foot{font-size:13px;margin:6px 0 0;color:#93809d}.grimoire-button{position:absolute;top:365px;left:32px;width:161px;height:129px;text-align:left;padding:12px 13px}.grimoire-button:hover{border-color:#c392d0;background:#25152f}.book-symbol{position:absolute;right:12px;top:9px;font-family:Georgia;font-size:27px;color:#bd90d0;transform:rotate(-8deg)}.book-title{display:block;font-size:20px;color:#e9c9e7;letter-spacing:1px;padding-bottom:12px}.book-title>span{display:none}.progress-line{display:flex;justify-content:space-between;font-size:15px;margin:4px 0;color:#bd9cc7}.progress-line b{font-weight:400;color:#edd1ef;font-size:18px}.progress-line.bound,.progress-line.bound b{color:#cc85ba}.book-pips{display:flex;gap:8px;margin-top:12px}.book-pips i{width:14px;height:4px;background:#42314f}.book-pips i.recovered{background:#bda2d9}.book-pips i.bound{background:#e391cf}.ritual{position:absolute;left:227px;top:380px;width:337px;text-align:center}.ritual-heading{display:flex;align-items:center;gap:12px;font-size:14px;letter-spacing:2px;color:#d0abc9;margin-bottom:10px}.ritual-heading i{flex:1;height:1px;background:#79506f}.slots{display:flex;align-items:center;gap:10px;height:52px}.slot{height:52px;width:52px;flex-shrink:0;background:#1a1028e8;border:2px solid #77528e;box-shadow:inset 0 0 0 3px #2b1c3c,0 3px #0d0812;display:flex;align-items:center;justify-content:center;color:#70517e}.slot span{font-size:20px}.slot:hover{border-color:#c49edd}.slot .sprite{width:46px;height:46px}.slot.filled{background:#30203f;border-color:#a27abd}.plus{font-size:22px;color:#987199;margin:0 -3px 0 0}.thread-slot{border-color:#ac6595;box-shadow:inset 0 0 0 3px #371d39,0 3px #0d0812;background:#261227;color:#c182b5}.thread-slot span{font-size:35px}.thread-slot.filled{border-color:#f2aad9;background:#48213f;animation:thread-idle 3.2s steps(3) infinite}.slot-captions{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1px;color:#a888ad;margin:8px 0 11px}.slot-captions span:last-child{width:76px;color:#b680a6;letter-spacing:0}.summon{width:100%;height:37px;border:2px solid #de93ca;background:#854466;box-shadow:inset 0 0 0 2px #a45e80,0 4px #27112e;display:flex;align-items:center;justify-content:center;gap:35px;color:#ffe4f5;font-size:24px;letter-spacing:3px}.summon b{font-weight:400}.summon span{font-size:17px;color:#ffc5e6}.summon:hover:not(:disabled){background:#a35680;border-color:#ffc7e9}.summon:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 0 0 2px #c3719c,0 2px #27112e}.summon:disabled{background:#2e2039;box-shadow:inset 0 0 0 2px #36243e,0 4px #130d1c;border-color:#624069;color:#886b8f}.summon:disabled span{color:#77547f}.summon.with-thread:not(:disabled){background:#9d477c}.ritual-help{font-size:14px;color:#b293bd;margin:10px -20px 0}footer{position:absolute;bottom:0;left:0;right:0;height:23px;background:#100b17ef;border-top:1px solid #392344;padding:5px 28px;display:flex;justify-content:space-between;color:#8d7496;font-size:11px;letter-spacing:.8px}#save-status{color:#ad89ab;font-size:10px}.toast{position:absolute;top:90px;left:230px;width:400px;min-height:36px;padding:10px 16px;text-align:center;background:#281831f5;border:1px solid #ad79a4;box-shadow:0 4px #130b1c;font-size:18px;color:#f5c7e5;z-index:60;opacity:0;transform:translateY(-5px);transition:opacity .15s,transform .15s}.toast.show{opacity:1;transform:translateY(0)}.drag-ghost{position:fixed;width:56px;height:56px;transform:translate(-50%,-50%);pointer-events:none;z-index:9999;image-rendering:pixelated}.drop-valid{border-color:#92e0cd!important;background:#244b4c!important}.drop-invalid{border-color:#e47894!important;background:#5d233a!important}.placed{animation:placed .22s steps(3)}.count-flash{animation:count-flash .4s steps(3)}.brewing{pointer-events:none}.brewing .inventory,.brewing .grimoire-button,.brewing .witch-note{opacity:.4}.brewing .summon{opacity:.5}#modal{position:absolute;inset:0;background:#0c0814e8;z-index:30;pointer-events:auto;display:flex;align-items:center;justify-content:center}#modal[hidden]{display:none}.dialog{position:relative;border:1px solid #8f639c;background:#1b1126;box-shadow:inset 0 0 0 4px #261a32,0 0 0 4px #09060e,0 20px 70px #0008;padding:24px;color:#e2c6e9}.dialog h2{font-family:Georgia,serif;font-size:28px;font-weight:400;color:#f1d8ee;margin:8px 0}.close{position:absolute;right:18px;top:15px;background:#2d1e38;color:#c29acb;border:1px solid #624471;font-family:monospace;font-size:23px;line-height:28px;width:30px;height:30px}.close:hover{color:#fff;background:#493055}.book{width:796px;height:460px}.dialog-top{height:77px;display:flex;align-items:flex-start;justify-content:space-between}.dialog-top h2{font-size:32px;margin:4px 0}.book-counters{font-size:17px;margin-right:65px;line-height:23px;color:#ae8dbb}.book-counters b{font-weight:400;color:#f3dbef;margin-left:10px}.book-counters span,.book-counters span b{color:#d38fbf}.pattern-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.pattern-card{position:relative;height:142px;background:#21172d;border:1px solid #52365f;display:flex;align-items:center;flex-direction:column;padding:6px 10px 9px}.pattern-card:hover:not(:disabled){border-color:#cf9ed8;background:#30203e}.page-number{position:absolute;top:10px;left:12px;font-size:15px;color:#81678e}.thumbnail{width:100%;height:87px;position:relative;display:flex;justify-content:center;align-items:center}.thumbnail .sprite{width:100%;height:84px;object-fit:contain}.pattern-card.unknown .sprite{filter:brightness(0);opacity:.45}.question{position:absolute;font-size:35px;color:#7c5d8c;top:27px;left:calc(50% - 6px)}.pattern-card strong{font-weight:400;font-size:20px;line-height:23px;max-width:100%;white-space:nowrap}.pattern-status{font-size:12px;letter-spacing:1px;color:#9f81b1;margin-top:2px}.pattern-card.bound{border-color:#855177}.bound .pattern-status{color:#df9bc9}.pattern-card.unknown strong{color:#7d688c}.pattern-card.unknown .pattern-status{color:#705b7e}.book-bottom{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:#b79bc3;margin-top:12px}.book-bottom>span:last-child{color:#d796c6}.book-bottom .sprite{width:24px;height:24px}.preview,.reveal{width:470px;height:475px;text-align:center;padding:24px 24px 20px}.preview h2,.reveal h2{font-size:26px;margin:10px 0 15px}.artwork-wrap{width:224px;height:224px;position:relative;margin:0 auto;background:#100b19;border:1px solid #563665;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 5px #26182f}.artwork-wrap:before,.artwork-wrap:after{content:"✦";font-size:18px;position:absolute;color:#996ba9;top:-10px;background:#1b1126;padding:0 4px}.artwork-wrap:before{left:-11px}.artwork-wrap:after{right:-11px}.pattern-art{width:204px;height:204px}.flavor{font-size:17px;color:#bda4c6;margin:16px 0 10px}.status{font-size:18px;letter-spacing:2px;color:#d2b5e8;margin:8px 0}.status.is-bound{color:#f3a8d7}.binding-note{font-size:14px;color:#b499bf;margin:9px -6px 0;line-height:1.15}.small-action{height:35px;min-width:234px;display:inline-flex;gap:12px;align-items:center;justify-content:center;border:1px solid #d18cbc;background:#65345c;color:#f1cce7;font-size:20px;padding:0 20px;box-shadow:inset 0 0 0 2px #7b416e,0 3px #0c0811}.small-action:hover:not(:disabled){background:#8e4775}.small-action .sprite{height:28px;width:28px}.small-action small{font-size:17px}.small-action:disabled{opacity:.45;cursor:default}#continue{margin-top:15px}.reveal .artwork-wrap{animation:reveal-art .55s steps(8) both}.reveal .flavor{margin-top:14px}.reveal .binding-note{font-size:14px}.reveal{height:488px}.thread-wrap{position:absolute;inset:-7px;border:2px solid #f1a1d9;opacity:0;pointer-events:none}.binding .thread-wrap{opacity:1;animation:wrap 1s steps(12) both}.binding .pattern-art{animation:bind-light 1s steps(6)}.bound-art .thread-wrap{opacity:.55}.binding-spool{position:absolute;right:-42px;bottom:-8px;animation:spool 1s steps(12)}.binding-speck{width:4px;height:4px;background:#f8c2ea;position:absolute;opacity:0}.binding .binding-speck{animation:bind-light .8s steps(4)}.s1{left:-12px;top:30px}.s2{right:-12px;bottom:45px}.settings{width:420px;min-height:324px;padding:27px}.settings h2{margin:12px 0 24px}.setting-row{display:flex;justify-content:space-between;align-items:center;font-size:22px;border-top:1px solid #51315f;border-bottom:1px solid #51315f;padding:15px 0;pointer-events:auto}.setting-row small{display:block;font-size:16px;color:#af92bb;margin-top:5px}.setting-row input{width:20px;height:20px;accent-color:#d68ac9;cursor:pointer}.setting-info{font-size:16px;color:#b99dc3}.reset-area{margin-top:22px;border-top:1px solid #442c51;padding-top:16px}.reset-area>small{display:block;font-size:13px;color:#8e709a;margin-top:5px}.reset-area p{font-size:17px;line-height:1.2;color:#c3a5c9}.reset-area h3{font-size:24px;font-weight:400;color:#e2abd0;margin:0}.quiet{background:transparent;border:0;color:#b790bc;font-size:16px;padding:5px 0}.quiet:hover{color:#f1c0e0}.danger{background:#77344f;border:1px solid #c87796;font-size:18px;display:block;margin:14px 0 7px;width:100%;height:35px}@keyframes placed{50%{border-color:#fce4ff;transform:translateY(-2px)}}@keyframes count-flash{0%{color:#fff4ff}to{color:inherit}}@keyframes thread-idle{50%{border-color:#c983b1}}@keyframes reveal-art{0%{opacity:0;transform:translateY(24px) scale(.88);filter:brightness(0)}65%{opacity:1;filter:brightness(.5)}to{transform:none;filter:none}}@keyframes wrap{0%{clip-path:inset(0 100% 98% 0)}30%{clip-path:inset(0 0 98% 0)}65%{clip-path:inset(0 0 0 98%)}to{clip-path:inset(0)}}@keyframes spool{0%{transform:translate(35px,50px);opacity:0}25%{opacity:1}80%{opacity:1}to{transform:translate(-60px,-50px);opacity:0}}@keyframes bind-light{0%,to{opacity:1}50%{opacity:.55}}.reduced *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}.reduced .reveal .artwork-wrap{opacity:1;transform:none}.reduced .thread-wrap{clip-path:none}.reduced .binding .thread-wrap{opacity:.65}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}.ritual{top:362px}.ritual-heading{line-height:14px;margin-bottom:8px}.slot-captions{line-height:10px;margin:6px 0 7px}.ritual-help{line-height:14px;margin-top:5px}.summon{letter-spacing:2px;gap:20px}.summon b{white-space:nowrap}.light-art{background:#e6dce2}.light-art .sprite{filter:none}.reward-link{text-decoration:none;margin-top:3px;pointer-events:auto}.artwork-wrap .pattern-art{width:auto;height:auto;max-width:204px;max-height:204px;object-fit:contain}.binding .thread-wrap,.binding-spool{animation-duration:.85s}.reveal .artwork-wrap{animation-duration:.4s}.inventory-filters{display:flex;gap:3px;margin:0 0 6px;pointer-events:auto}.inventory-filters button{background:#24172f;border:1px solid #51365d;font-size:14px;padding:3px 6px;color:#b399be}.inventory-filters button[aria-pressed=true]{background:#513052;border-color:#b375a8;color:#ffe0f4}#inventory-rows{height:272px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#775083 #22172c;pointer-events:auto;touch-action:pan-y}.inventory-row[hidden]{display:none}.inventory-row{min-height:29px}.thread-row{height:32px;margin-top:3px}.inventory-row[data-kind=relic]{color:#bca5db}.inventory-row .item-name{font-size:17px}.inventory-foot{font-size:12px;line-height:14px;margin-top:7px}.flame-symbol .sprite{width:29px;height:29px}.thread-choice{display:flex;align-items:center;justify-content:center;gap:8px;color:#b99cc4;font-size:14px;margin:8px 0;pointer-events:auto}.thread-choice select{max-width:235px;background:#2b1a37;border:1px solid #98659a;color:#edd0e6;font:inherit;font-size:17px;height:28px;pointer-events:auto}.preview{height:510px;padding-top:18px}.preview h2{margin:7px 0 12px}.preview .artwork-wrap{width:214px;height:214px}.preview .flavor{margin:11px 0 6px}.preview .status{margin:6px 0}.preview .binding-note{margin-top:7px}.settings{max-height:508px;overflow-y:auto}.settings .quiet{display:block}#grant-items{margin-top:14px;color:#e0a9cf}.loot-launch{position:absolute;left:30px;top:294px;background:#211329;border:1px solid #69416e;color:#e7b6dc;font-size:10px;padding:10px;cursor:pointer}.dialog.loot{width:850px;height:490px;padding:24px;box-sizing:border-box}.loot .dialog-top h2{font-size:24px}.loot-explainer{font-size:11px;line-height:1.6;color:#bcaac8;margin:10px 0 16px}.loot-columns{display:grid;grid-template-columns:1fr 1.15fr;gap:22px;height:332px;text-align:left}.box-list,.achievement-list{overflow-y:auto;padding-right:8px;scrollbar-color:#795183 #160f20;scrollbar-width:thin}.loot-box,.achievement{padding:12px;background:#211629;border:1px solid #483050;margin-bottom:10px}.box-title{display:flex;align-items:center;gap:12px}.box-x{font:700 28px monospace;color:#d095d3}.box-title h3,.achievement-list h3{font-size:12px;margin:0}.box-title small{display:block;color:#c084c2;font-size:9px;margin-top:5px}.loot-box p,.achievement p,.loot-box details{font-size:10px;line-height:1.5;color:#bba9c8}.loot-box .small-action{font-size:9px;padding:8px;margin-top:10px;min-width:0;width:100%}.achievement>div{display:flex;justify-content:space-between;font-size:11px}.achievement progress{width:100%;height:5px;accent-color:#ca83cc}.achievement small{display:block;color:#e6b5dc;font-size:9px;margin-top:8px}.achievement .quiet{font-size:9px;padding:7px;margin-top:6px}.achievement.claimed{opacity:.6}.achievement-list>h3{margin:0 0 12px;letter-spacing:2px}.loot-reveal{text-align:center;padding:20px}.chest-x{font:700 72px monospace;color:#edb5ee;margin:20px auto;line-height:90px;width:110px;border:2px solid #96609b;background:#301c3a;box-shadow:0 0 0 7px #23162b}.opening .chest-x{animation:box-unseal .9s steps(8) both}.loot-drops{display:flex;justify-content:center;gap:16px;margin:20px 0}.loot-drops span{font-size:11px;display:flex;align-items:center;gap:7px}.loot-drops img{width:32px;height:32px;object-fit:contain}.loot-reveal p{font-size:11px;color:#baa8c8}@keyframes box-unseal{50%{transform:translateY(-7px);border-color:#f7d5f1}to{transform:translateY(0)}}.reduced .opening .chest-x{animation:none}.dialog.loot{display:flex;flex-direction:column;overflow:hidden}.loot .dialog-top{flex:none;margin:0}.loot .dialog-top h2{margin:4px 0 12px}.loot-explainer{flex:none}.loot-columns{flex:1;min-height:0;height:auto}.loot-reveal{min-height:0;overflow:auto}.achievement progress{appearance:none;border:0;background:#3c2946}.achievement progress::-webkit-progress-bar{background:#3c2946}.achievement progress::-webkit-progress-value{background:#ca83cc}.achievement .quiet:not(:disabled){border:1px solid #97659d;background:#42274c;color:#f3d2ec}.loot-box summary{cursor:pointer}.loot-box button:disabled{opacity:.4}.loot-launch{top:332px;left:30px;width:160px;padding:8px 4px;font-size:12px;z-index:2}.loot-launch:hover{background:#412749;border-color:#c788c1}.mission-heading{padding-top:20px}.mission-intro{font-size:11px;color:#c2a9c8;line-height:1.6}.coven-mission>strong{font-size:13px;color:#efcde9}.coven-mission details{font-size:11px;line-height:1.5;margin-top:10px;color:#bfa9ca}.mission-link{display:block;text-decoration:none;text-align:center;border:1px solid #855d8d!important;background:#3c2747;margin-top:12px!important}.mission-link:hover{background:#543360}.achievement small{line-height:1.5}.coupon-form{display:flex;gap:8px;margin:10px 0}.coupon-form input,.coupon-form select{background:#1a1025;color:#f4dbef;border:1px solid #79466f;font:18px VT323,monospace;padding:5px 10px}.coupon-form input{flex:1}.box-x.sprite{width:36px;height:36px;object-fit:contain}.pattern-grid{max-height:320px;overflow-y:auto}.pattern-art{max-width:260px;max-height:240px;object-fit:contain}.account-screen{max-width:560px;margin:8vh auto;padding:34px;background:#20152b;border:1px solid #755071;font:22px/1.4 VT323,monospace;color:#f5dbee}.account-screen h1{font-size:40px;line-height:1.1}.account-screen input{display:block;width:100%;padding:10px;margin:8px 0;background:#130e1c;color:#f5dbee;border:1px solid #795776;font:inherit}.account-screen button,.account-screen a{margin:8px 0}.account-providers{display:grid;gap:8px}.account-screen small{font-size:18px}.account-message{color:#eeb2d4}.account-launch{position:absolute;left:222px;bottom:16px;z-index:5;background:#221629;color:#f3d7ee;border:1px solid #7e527b;font:18px VT323,monospace;padding:5px 12px}.account-overlay{position:fixed;inset:0;background:#080510da;z-index:100;display:grid;place-items:center;padding:20px;color:#f6deef;font:20px/1.4 VT323,monospace}.account-overlay section{position:relative;max-width:520px;max-height:90vh;overflow:auto;padding:30px;background:#25182e;border:1px solid #9e6897}.account-overlay button{font:inherit;color:#f6deef;background:#3a2545;border:1px solid #875680;padding:8px 14px;margin:4px}.close-account{float:right}.account-overlay h2{font-size:30px}.account-screen{width:min(90vw,560px);max-height:90vh;overflow-y:auto}.account-overlay input{max-width:100%;background:#171020;color:#f5dbee;border:1px solid #825878;font:inherit;padding:8px;margin:6px 0}
