@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ease-out:cubic-bezier(0,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-ember-600:#f26a3b;--color-ember-500:#ff7a45;--color-ember-400:#ff9a5c;--color-gold-300:#f3c678;--color-mist-100:#f4f1e9;--color-aqua-400:#5cc2b0;--color-aqua-500:#3db0a3;--color-glass-base:#0f141bb8;--color-glass-border:#ffffff1a}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.flex-shrink{flex-shrink:1}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}.shadow\/glow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{--font-display:"Cinzel","Garamond","Baskerville",serif;--font-body:"Manrope","Avenir Next","Trebuchet MS",sans-serif;--font-mono:"IBM Plex Mono","Courier New",monospace;--menu-bg-url:url(../assets/images/menu_bg.png)}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overflow:hidden}body{font-family:var(--font-body);color:var(--color-mist-100);padding:env(safe-area-inset-top)env(safe-area-inset-right)env(safe-area-inset-bottom)env(safe-area-inset-left);background:radial-gradient(circle at top,#1f2a36,#0c1118 55%,#07090d)}#app{isolation:isolate;flex-direction:column;height:100%;display:flex;position:relative}#app:before{content:"";mix-blend-mode:screen;pointer-events:none;z-index:-1;background:radial-gradient(circle at 15% 15%,#ff7a452e,#0000 55%),radial-gradient(circle at 85% 35%,#3db0a32e,#0000 50%),linear-gradient(135deg,#ffffff0d,#0000 55%);position:absolute;inset:0}.icon-sprite{width:0;height:0;position:absolute;overflow:hidden}.icon{stroke:currentColor;flex-shrink:0;width:20px;height:20px}.glass{background:var(--color-glass-base);-webkit-backdrop-filter:blur(16px);border:1px solid var(--color-glass-border);border-radius:18px;box-shadow:0 20px 40px #06090d80}.glass-strong{-webkit-backdrop-filter:blur(20px);background:#0b0f14e0;border:1px solid #ffffff24;border-radius:22px;box-shadow:0 25px 45px #06090d8c}.btn-primary,.btn-secondary,.btn-back,.btn-hint{font-family:var(--font-body);cursor:pointer;align-items:center;gap:.65rem;transition:transform .2s,box-shadow .2s,background .2s,color .2s;display:inline-flex}.btn-primary{background:linear-gradient(120deg,var(--color-ember-500),var(--color-gold-300));color:#1a0f0b;letter-spacing:.4px;text-transform:uppercase;border:none;border-radius:14px;padding:.9rem 1.6rem;font-weight:700;box-shadow:0 12px 30px #f26a3b59}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 34px #f26a3b73}.btn-secondary{color:var(--color-mist-100);background:#ffffff0a;border:1px solid #ffffff2e;border-radius:14px;padding:.85rem 1.4rem;font-weight:600}.btn-secondary:hover{background:#ffffff1a;border-color:#fff6;transform:translateY(-1px)}.btn-back,.btn-hint{color:var(--color-mist-100);background:#ffffff0d;border:1px solid #ffffff26;border-radius:10px;padding:.5rem 1rem;font-weight:600}.btn-back:hover,.btn-hint:hover{background:#ffffff1f;border-color:#ffffff59}.btn-close{color:var(--color-mist-100);cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:10px;padding:.25rem .45rem;transition:background .2s,border .2s}.btn-close:hover{background:#ffffff29;border-color:#fff6}@keyframes fade-in-up{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@keyframes drift{0%{transform:translateY(0)}50%{transform:translateY(-8px)}to{transform:translateY(0)}}.animate-fade-in-up{animation:.6s ease-out forwards fade-in-up}.animate-drift{animation:6s ease-in-out infinite drift}.puzzle-piece{cursor:grab;filter:drop-shadow(2px 4px 6px #0006);transition:transform .15s,box-shadow .15s;position:absolute}.puzzle-piece-visual{pointer-events:none;position:absolute;inset:0}.puzzle-piece:hover{z-index:100;transform:scale(1.05)}.puzzle-piece.dragging{cursor:grabbing;filter:drop-shadow(4px 8px 12px #0009);z-index:1000;transform:scale(1.1)}.puzzle-piece.placed{cursor:default;filter:none}.puzzle-piece.hint{outline:2px solid #5cc2b099;animation:1.5s ease-in-out infinite drift}.gallery-card{aspect-ratio:auto;cursor:pointer;background:#0f141b66;border-radius:16px;min-height:300px;transition:transform .3s,box-shadow .3s;position:relative;overflow:hidden}.gallery-card:hover{transform:translateY(-6px)scale(1.02);box-shadow:0 18px 35px #06090d8c}.gallery-card img{object-fit:cover;aspect-ratio:3/4;width:100%;height:auto}.gallery-card .gallery-card-alt{opacity:0;pointer-events:none;z-index:1;object-fit:cover;will-change:opacity,transform;width:100%;height:100%;transition:opacity .4s,transform .4s;display:block;position:absolute;inset:0;transform:scale(1.08)}.gallery-card:hover .gallery-card-alt{opacity:1;transform:scale(1)}.gallery-card.locked{filter:grayscale(.4)}.gallery-lock{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#07090db3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.gallery-lock .icon{color:#f4f1e9b3;width:36px;height:36px}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;opacity:0;visibility:hidden;background:#06090dbf;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;inset:0}.modal-overlay.active{opacity:1;visibility:visible}.modal-content{max-width:90vw;max-height:90vh;transition:transform .3s;transform:scale(.95)}.modal-overlay.active .modal-content{transform:scale(1)}.progress-bar{background:#ffffff1a;border-radius:4px;height:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(90deg,var(--color-ember-500),var(--color-aqua-400));border-radius:4px;height:100%;transition:width .3s}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#0003}::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff59}#main-menu{text-align:left;justify-content:center;align-items:center;position:relative}.menu-bg{background:linear-gradient(140deg,#07090dcc,#07090d59),var(--menu-bg-url)center/cover no-repeat,radial-gradient(circle at 20% 20%,#ff7a452e,transparent 40%),radial-gradient(circle at 80% 80%,#3db0a333,transparent 45%),linear-gradient(160deg,#ffffff0d,transparent 60%);z-index:0;position:absolute;inset:0}.menu-content{z-index:1;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:2.5rem;width:min(100%,980px);padding:2.5rem;animation:.8s ease-out fade-in-up;display:grid;position:relative}.menu-header{flex-direction:column;gap:1rem;display:flex}.menu-kicker{letter-spacing:.35rem;text-transform:uppercase;color:#f4f1e9b3;font-size:.85rem}.game-title{font-family:var(--font-display);margin:0;font-size:clamp(2.6rem,6vw,4.8rem);font-weight:700;line-height:1.05}.title-line{display:block}.title-line.accent{color:var(--color-ember-400);text-shadow:0 10px 30px #ff7a4559}.game-subtitle{color:#f4f1e9cc;letter-spacing:.2rem;text-transform:uppercase;margin:0;font-size:clamp(1rem,2.2vw,1.4rem)}.menu-pills{flex-wrap:wrap;gap:.75rem;display:flex}.menu-pill{color:#f4f1e9e6;background:#ffffff14;border:1px solid #ffffff1f;border-radius:999px;padding:.4rem .8rem;font-size:.85rem}.menu-stats{flex-wrap:wrap;gap:1rem;margin-top:.25rem;display:flex}.menu-stat{background:#080b108c;border:1px solid #ffffff14;border-radius:14px;flex-direction:column;gap:.2rem;min-width:120px;padding:.6rem .9rem;display:flex}.menu-stat .stat-label{text-transform:uppercase;letter-spacing:.12rem;color:#f4f1e999;font-size:.7rem}.menu-stat .stat-value{color:#f4f1e9f2;font-size:1rem;font-weight:600}.menu-panel{flex-direction:column;gap:1.5rem;padding:2rem;display:flex}.menu-buttons{flex-direction:column;gap:1rem;display:flex}.menu-buttons button{justify-content:flex-start;width:100%}.menu-buttons button span{text-align:left;flex:1}.menu-challenge{background:#0c1016bf;border:1px solid #ffffff1a;border-radius:16px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.1rem;display:flex}.challenge-title{letter-spacing:.18rem;text-transform:uppercase;color:#f4f1e9b3;margin-bottom:.35rem;font-size:.85rem}.challenge-meta{color:#f4f1e9e6;font-size:.9rem}.menu-footer{color:#f4f1e999;border-top:1px solid #ffffff14;padding-top:1rem;font-size:.85rem}.screen-header,.game-header{flex-shrink:0;justify-content:space-between;align-items:center;margin:1rem;padding:1rem 1.5rem;display:flex}.screen-header h2,.game-header h2{letter-spacing:.05rem;text-transform:uppercase;margin:0;font-size:1.2rem;font-weight:600}.header-spacer{width:80px}#puzzle-select,#gallery-screen,#game-screen{overflow:hidden}.puzzle-grid{flex:1;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-auto-rows:auto;gap:1rem;min-height:0;padding:0 1.5rem 140px;display:grid;overflow-y:auto}.puzzle-card{aspect-ratio:auto;cursor:pointer;border-radius:16px;flex-direction:column;min-height:300px;padding:0;transition:transform .3s,box-shadow .3s;display:flex;overflow:hidden}.puzzle-card:hover:not(.locked){transform:translateY(-5px);box-shadow:0 16px 30px #06090d80}.puzzle-card.selected{outline:2px solid #ff7a45cc;box-shadow:0 0 20px #ff7a4559}.puzzle-card.locked{opacity:.55;cursor:not-allowed}.puzzle-thumb{aspect-ratio:3/4;background:linear-gradient(140deg,#243243e6,#141b24f2);flex:none;justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.puzzle-thumb-image{object-fit:cover;width:100%;height:100%;display:block}.puzzle-number{color:#f4f1e933;font-size:3rem;font-weight:700;font-family:var(--font-display)}.lock-icon,.check-icon{color:#f4f1e9cc;width:28px;height:28px;position:absolute}.lock-icon{width:34px;height:34px;margin:auto;inset:0}.check-icon{color:var(--color-aqua-400);top:.7rem;right:.7rem}.final-badge{z-index:10;filter:drop-shadow(0 0 8px #ff7a45cc);font-size:1.5rem;animation:2s ease-in-out infinite final-glow;position:absolute;top:.7rem;left:.7rem}.puzzle-card.final-puzzle{border:2px solid #ff7a4580;box-shadow:0 0 20px #ff7a454d}.puzzle-card.final-puzzle:not(.locked){background:linear-gradient(135deg,#ff7a451a,#3db0a31a)}.puzzle-card.final-puzzle:not(.locked):hover{border-color:#ff7a45cc;transform:translateY(-5px)scale(1.02);box-shadow:0 0 30px #ff7a4580}@keyframes final-glow{0%,to{filter:drop-shadow(0 0 8px #ff7a45cc);transform:scale(1)}50%{filter:drop-shadow(0 0 15px #ff7a45);transform:scale(1.1)}}.puzzle-info{background:#0a0e13b3;padding:.75rem 1rem}.puzzle-info h3{white-space:nowrap;text-overflow:ellipsis;margin:0 0 .25rem;font-size:.95rem;font-weight:600;overflow:hidden}.mastery-badges{flex-wrap:wrap;gap:.35rem;margin-top:.5rem;display:flex}.mastery-badge{color:#f4f1e9d9;background:#ffffff14;border:1px solid #fff3;border-radius:999px;padding:.15rem .45rem;font-size:.7rem;font-weight:600}.puzzle-info p{color:#f4f1e9a6;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.75rem;overflow:hidden}.difficulty-selector{z-index:100;align-items:center;gap:1rem;padding:1rem 1.5rem;display:flex;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}.difficulty-selector label{color:#f4f1e9bf;font-weight:600}.difficulty-options{gap:.5rem;display:flex}.diff-btn{color:#f4f1e9cc;cursor:pointer;background:#ffffff0d;border:1px solid #fff3;border-radius:8px;padding:.5rem 1rem;transition:all .2s}.diff-btn:hover{border-color:#fff6}.diff-btn.active{color:#1a0f0b;background:#ff7a45d9;border-color:#ff7a45d9}.diff-btn-special{background:linear-gradient(135deg,#ff7a4526,#3db0a326);border:1px solid #ff7a4566;animation:2s ease-in-out infinite special-glow;position:relative;box-shadow:0 0 15px #ff7a4533}.diff-btn-special:hover{border-color:#ff7a4599;transform:translateY(-1px);box-shadow:0 0 20px #ff7a4566}.diff-btn-special.active{background:linear-gradient(135deg,#ff7a45f2,#3db0a3d9);border-color:#ff7a45;animation:1.5s ease-in-out infinite special-active;box-shadow:0 0 25px #ff7a4599}.special-badge{margin-left:.3rem;font-size:.9rem;animation:2s ease-in-out infinite badge-sparkle;display:inline-block}@keyframes special-glow{0%,to{box-shadow:0 0 15px #ff7a4533}50%{box-shadow:0 0 25px #ff7a4566,0 0 35px #3db0a333}}@keyframes special-active{0%,to{transform:scale(1);box-shadow:0 0 25px #ff7a4599}50%{transform:scale(1.02);box-shadow:0 0 35px #ff7a45cc,0 0 45px #3db0a366}}@keyframes badge-sparkle{0%,to{opacity:1;transform:scale(1)rotate(0)}25%{opacity:.8;transform:scale(1.2)rotate(-10deg)}50%{opacity:1;transform:scale(1.1)rotate(10deg)}75%{opacity:.9;transform:scale(1.2)rotate(-5deg)}}.difficulty-warning{color:#1a0f0b;z-index:101;background:linear-gradient(135deg,#ff7a45e6,#3db0a3cc);border:1px solid #ffffff4d;border-radius:12px;align-items:center;gap:.5rem;padding:.75rem 1.25rem;font-size:.9rem;font-weight:600;animation:2s ease-in-out infinite warning-pulse;display:flex;position:fixed;bottom:5rem;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0006,0 0 30px #ff7a454d}.difficulty-warning .icon{width:1.2rem;height:1.2rem;animation:3s linear infinite icon-spin}@keyframes warning-pulse{0%,to{transform:translate(-50%)scale(1);box-shadow:0 4px 20px #0006,0 0 30px #ff7a454d}50%{transform:translate(-50%)scale(1.02);box-shadow:0 6px 25px #00000080,0 0 40px #ff7a4580}}@keyframes icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.start-btn{margin-left:.6rem}.game-info{align-items:center;gap:1.5rem;font-size:1rem;font-weight:600;display:flex}.timer-hidden .game-info{gap:.5rem}.timer-hidden #game-timer{display:none}.timer{font-family:var(--font-mono);color:var(--color-aqua-400)}.game-container{flex-direction:column;flex:1;gap:1rem;min-height:0;padding:1rem;display:flex;overflow:hidden}.puzzle-board-wrap{flex:1;justify-content:center;align-items:center;width:100%;min-height:0;display:flex;position:relative}#puzzle-board{justify-content:center;align-items:center;width:100%;height:100%;min-height:0;display:flex;position:relative}#piece-tray{scroll-snap-type:x mandatory;background:#06090d99;border:1px solid #ffffff14;border-radius:16px;flex-wrap:nowrap;flex-shrink:0;align-items:center;gap:.75rem;height:140px;padding:1rem;scroll-padding:1rem;display:flex;overflow:auto hidden}#piece-tray .puzzle-piece{scroll-snap-align:center;flex-shrink:0;transition:transform .15s,box-shadow .15s;position:relative!important}#piece-tray .puzzle-piece:hover{z-index:5;transform:scale(1.12);box-shadow:0 12px 25px #06090d73}.gallery-count{color:#f4f1e9a6;font-size:.9rem}.gallery-grid{flex:1;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-auto-rows:auto;gap:1rem;min-height:0;padding:0 1.5rem 1.5rem;display:grid;overflow-y:auto}.modal-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-header h2{letter-spacing:.08rem;text-transform:uppercase;margin:0;font-size:1.2rem}#settings-modal .modal-content{width:90%;max-width:420px;padding-bottom:1.5rem}.settings-body{flex-direction:column;gap:1.25rem;padding:1.5rem;display:flex}.setting-row{justify-content:space-between;align-items:center;gap:1rem;display:flex}.setting-label{align-items:center;gap:.6rem;font-size:.95rem;display:inline-flex}.setting-row input[type=range]{width:120px;accent-color:var(--color-ember-500)}.setting-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--color-ember-500)}#settings-modal .btn-primary{margin:0 1.5rem}.completion-content{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;display:flex}#completion-image{border-radius:16px;max-width:90vw;max-height:70vh;overflow:hidden}#completion-image canvas,#completion-image img{object-fit:contain;max-width:100%;max-height:100%}.completion-info{text-align:center;padding:1.5rem 2rem}.completion-info h2{text-transform:uppercase;letter-spacing:.1rem;align-items:center;gap:.6rem;margin:0 0 .5rem;font-size:1.4rem;display:inline-flex}.completion-time{color:var(--color-aqua-400);margin-bottom:1.5rem;font-size:1.05rem}.completion-message{color:#ffecdce6;letter-spacing:.02em;margin:0 0 1.5rem;font-size:1rem}.completion-buttons{flex-wrap:wrap;justify-content:center;gap:1rem;display:flex}.completion-buttons button:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}#image-viewer{flex-direction:column}.viewer-close{z-index:10;justify-content:center;align-items:center;width:48px;height:48px;display:inline-flex;position:absolute;top:1rem;right:1rem}#viewer-image{object-fit:contain;border-radius:12px;max-width:95vw;max-height:95vh}@media(max-width:768px){.menu-content{text-align:center;grid-template-columns:1fr}.difficulty-warning{max-width:90%;padding:.6rem 1rem;font-size:.85rem;bottom:4.5rem}.menu-buttons button{justify-content:center}.menu-buttons button span{text-align:center}.puzzle-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-auto-rows:minmax(300px,auto)}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:minmax(300px,auto)}.difficulty-selector{flex-direction:column;bottom:1rem;left:1rem;right:1rem;transform:none}.game-container{flex-direction:column}#piece-tray{height:120px}}@media(max-width:640px){.screen-header,.game-header{margin:.75rem;padding:.75rem 1rem}.game-info{gap:.75rem;font-size:.95rem}.menu-panel{padding:1.5rem}.menu-pills{justify-content:center}.difficulty-selector{width:calc(100% - 2rem)}.difficulty-warning{max-width:95%;padding:.5rem .85rem;font-size:.8rem;bottom:4rem}.difficulty-warning .icon{width:1rem;height:1rem}.puzzle-grid,.gallery-grid{grid-template-columns:1fr;grid-auto-rows:300px}.puzzle-card,.gallery-card{aspect-ratio:auto;height:300px}#piece-tray{height:110px;padding:.75rem}}@media(max-width:640px)and (orientation:landscape){.menu-content{text-align:left;grid-template-columns:1.1fr .9fr;gap:1.5rem;padding:1.5rem}.menu-panel{padding:1.25rem}.game-container{gap:.5rem;padding:.75rem}#piece-tray{height:90px;padding:.5rem .75rem}.difficulty-selector{bottom:.75rem}.puzzle-grid,.gallery-grid{padding-bottom:100px}}@media(max-width:480px){.game-title{font-size:clamp(2rem,8vw,3rem)}.menu-kicker{letter-spacing:.25rem}.menu-buttons button{justify-content:center}.menu-buttons button span{text-align:center}.puzzle-grid,.gallery-grid{grid-template-columns:1fr;grid-auto-rows:300px}}.fap-ui{pointer-events:none;opacity:0;z-index:100;transition:opacity .2s;position:absolute;inset:0}.fap-ui.active{opacity:1}.fap-intensity-meter{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.85;z-index:10;background:#0f141bbf;border:1px solid #ff7a4540;border-radius:8px;align-items:center;gap:6px;padding:6px 10px;transition:opacity .2s;display:flex;position:absolute;top:8px;right:8px}.fap-intensity-meter:hover{opacity:1}.intensity-heart{font-size:16px;animation:1.5s infinite heartbeat}.intensity-label{display:none}.intensity-value{color:var(--color-ember-400);font-size:14px;font-weight:600}.fap-intensity-meter[data-intensity=low]{border-color:#5cc2b080}.fap-intensity-meter[data-intensity=low] .intensity-value{color:var(--color-aqua-400);text-shadow:0 0 10px #5cc2b080}.fap-intensity-meter[data-intensity=medium]{border-color:#f3c67899;animation:1.5s infinite intensity-pulse}.fap-intensity-meter[data-intensity=medium] .intensity-value{color:var(--color-gold-300);text-shadow:0 0 12px #f3c67899}.fap-intensity-meter[data-intensity=high]{border-color:#ff7a45b3;animation:1s infinite intensity-pulse}.fap-intensity-meter[data-intensity=high] .intensity-value{color:var(--color-ember-500);text-shadow:0 0 15px #ff7a45b3}.fap-intensity-meter[data-intensity=extreme]{border-color:#f26a3b;animation:.5s infinite intensity-extreme;box-shadow:0 0 20px #f26a3b99}.fap-intensity-meter[data-intensity=extreme] .intensity-value{color:var(--color-ember-600);text-shadow:0 0 20px #f26a3b,0 0 30px #ff7a4580;animation:.3s infinite value-shake}@keyframes intensity-pulse{0%,to{transform:scale(1);box-shadow:0 0 #ff7a4500}50%{transform:scale(1.05);box-shadow:0 0 20px #ff7a454d}}@keyframes intensity-extreme{0%,to{transform:scale(1)rotate(0);box-shadow:0 0 20px #f26a3b99}25%{transform:scale(1.08)rotate(-2deg);box-shadow:0 0 30px #f26a3bcc}75%{transform:scale(1.08)rotate(2deg);box-shadow:0 0 30px #f26a3bcc}}@keyframes heartbeat{0%,to{transform:scale(1)}10%{transform:scale(1.15)}20%{transform:scale(1)}30%{transform:scale(1.15)}40%{transform:scale(1)}}@keyframes value-shake{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}.fap-ambient{opacity:var(--fap-ambient-opacity,0);mix-blend-mode:screen;z-index:1;background:radial-gradient(circle at 30% 20%,#ff7a4540,#0000 55%),radial-gradient(circle at 70% 80%,#3db0a338,#0000 60%);transition:opacity .3s;position:absolute;inset:0}.fap-progress{z-index:3;background:#ffffff14;border-radius:999px;width:min(360px,80%);height:6px;position:absolute;top:.6rem;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 0 0 6px #00000059}.fap-progress-fill{border-radius:inherit;background:linear-gradient(90deg,var(--color-ember-600),var(--color-ember-400),var(--color-aqua-500));width:0%;height:100%;transition:width .25s}.fap-progress-fill.is-pulsing{animation:.4s fap-pulse}.fap-progress-white{z-index:3;background:#0000004d;border-radius:999px;width:min(360px,80%);height:6px;display:none;position:absolute;top:.6rem;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:inset 0 0 6px #00000080}.fap-progress-fill-white{border-radius:inherit;background:linear-gradient(90deg,#fff6,#ffffffb3,#ffffffe6);width:0%;height:100%;transition:width .25s;box-shadow:0 0 10px #ffffff80}.fap-progress-fill-white.is-pulsing{animation:.4s fap-pulse-white}@keyframes fap-pulse-white{0%,to{box-shadow:0 0 10px #ffffff80}50%{box-shadow:0 0 20px #fffc}}.fap-tease{letter-spacing:.02rem;text-transform:none;color:#f4f1e9b3;z-index:10;opacity:0;white-space:nowrap;text-overflow:ellipsis;background:#07090d99;border:1px solid #ffffff14;border-radius:999px;max-width:80%;padding:.25rem .75rem;font-size:.8rem;position:absolute;bottom:.5rem;left:50%;overflow:hidden;transform:translate(-50%)}.fap-tease.is-show{opacity:1;animation:.6s fap-tease-pop}.fap-tease[data-intensity="1"]{opacity:.6;font-size:12px}.fap-tease[data-intensity="2"]{opacity:.7;font-size:12px}.fap-tease[data-intensity="3"]{opacity:.8;color:var(--color-ember-400);font-size:13px}.fap-tease[data-intensity="4"]{color:var(--color-ember-400);font-size:14px;animation:1s infinite fap-tease-gentle}.fap-tease[data-intensity="5"]{text-shadow:0 0 8px #ff7a4580;color:var(--color-ember-400);font-size:15px;font-weight:600;animation:.7s infinite fap-tease-intense}.fap-tease[data-intensity="6"]{text-shadow:0 0 12px #ff7a45cc;color:var(--color-ember-500);font-size:16px;font-weight:700;animation:.5s infinite fap-tease-climax}.puzzle-board-grid .puzzle-piece{z-index:6;position:absolute}.puzzle-preview-canvas{z-index:1;will-change:filter,opacity}.completion-image-container img{will-change:filter,transform;border-radius:12px}#viewer-image{will-change:filter,transform;transition:none}#viewer-image.reveal-active{transition:filter 1s ease-out,transform 1s ease-out}.puzzle-piece.dragging{z-index:1000;cursor:grabbing;filter:drop-shadow(0 8px 16px #00000080);transform:scale(1.05)}.puzzle-piece.placed{pointer-events:none;opacity:1}.puzzle-piece.hint{animation:.6s ease-in-out 3 hint-pulse}.puzzle-piece.snap-glow{animation:.45s ease-out snap-glow}@keyframes hint-pulse{0%,to{filter:drop-shadow(0 0 #ff7a4500);transform:scale(1)}50%{filter:drop-shadow(0 0 20px #ff7a45cc);transform:scale(1.1)}}@keyframes snap-glow{0%{filter:drop-shadow(0 0 #ffc88c00);transform:scale(1)}50%{filter:drop-shadow(0 0 18px #ffc88ce6);transform:scale(1.02)}to{filter:drop-shadow(0 0 #ffc88c00);transform:scale(1)}}@keyframes fap-pulse{0%{transform:scaleY(1)}50%{transform:scaleY(1.6)}to{transform:scaleY(1)}}@keyframes fap-tease-pop{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes fap-tease-gentle{0%,to{transform:translate(-50%)scale(1)}50%{transform:translate(-50%)scale(1.02)}}@keyframes fap-tease-warm{0%,to{transform:translate(-50%)scale(1)}50%{transform:translate(-50%)scale(1.04)}}@keyframes fap-tease-hot{0%,to{transform:translate(-50%)scale(1)}50%{transform:translate(-50%)scale(1.06)}}@keyframes fap-tease-intense{0%,to{transform:translate(-50%)scale(1)rotate(0)}25%{transform:translate(-50%)scale(1.08)rotate(-1deg)}75%{transform:translate(-50%)scale(1.08)rotate(1deg)}}@keyframes fap-tease-extreme{0%,to{transform:translate(-50%)scale(1)rotate(0)}25%{transform:translate(-50%)scale(1.12)rotate(-2deg)}75%{transform:translate(-50%)scale(1.12)rotate(2deg)}}@keyframes fap-tease-climax{0%,to{transform:translate(-50%)scale(1)}50%{transform:translate(-50%)scale(1.15)}}.milestone-pulse-0{animation:.8s milestone-flash-1}.milestone-pulse-1{animation:.8s milestone-flash-2}.milestone-pulse-2{animation:.8s milestone-flash-3}.milestone-pulse-3{animation:.8s milestone-flash-4}@keyframes milestone-flash-1{0%,to{filter:brightness()}50%{filter:brightness(1.1)hue-rotate(5deg)}}@keyframes milestone-flash-2{0%,to{filter:brightness()}50%{filter:brightness(1.15)hue-rotate(10deg)saturate(1.2)}}@keyframes milestone-flash-3{0%,to{filter:brightness()}50%{filter:brightness(1.2)hue-rotate(15deg)saturate(1.4)}}@keyframes milestone-flash-4{0%,to{filter:brightness()}20%{filter:brightness(1.3)hue-rotate(20deg)saturate(1.6)}40%{filter:brightness(1.1)hue-rotate(-10deg)}60%{filter:brightness(1.3)hue-rotate(20deg)saturate(1.6)}80%{filter:brightness(1.1)}}.completion-flash{animation:.8s completion-celebrate}@keyframes completion-celebrate{0%{filter:brightness()}15%{filter:brightness(1.4)saturate(1.3)}30%{filter:brightness(1.1)}45%{filter:brightness(1.3)saturate(1.2)}60%{filter:brightness(1.05)}75%{filter:brightness(1.2)}to{filter:brightness()}}.achievement-notification{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:10000;background:linear-gradient(135deg,#f26a3bf2,#ff7a45f2);border:2px solid #ff9a5c99;border-radius:16px;align-items:center;gap:16px;width:350px;padding:20px;transition:right .5s cubic-bezier(.68,-.55,.265,1.55);animation:2s infinite achievement-pulse;display:flex;position:fixed;top:20px;right:-400px;box-shadow:0 10px 40px #f26a3b80,0 0 60px #ff7a454d,inset 0 1px #fff3}.achievement-notification.show{right:20px}.achievement-icon{filter:drop-shadow(0 4px 8px #0000004d);flex-shrink:0;font-size:48px;animation:3s infinite achievement-rotate}.achievement-content{color:#fff;flex:1}.achievement-title{text-shadow:0 2px 4px #0000004d;letter-spacing:.5px;margin-bottom:4px;font-size:18px;font-weight:700}.achievement-desc{opacity:.95;text-shadow:0 1px 2px #0003;font-size:14px}@keyframes achievement-pulse{0%,to{box-shadow:0 10px 40px #f26a3b80,0 0 60px #ff7a454d,inset 0 1px #fff3}50%{box-shadow:0 10px 50px #f26a3bb3,0 0 80px #ff7a4580,inset 0 1px #ffffff4d}}@keyframes achievement-rotate{0%,to{transform:rotate(0)scale(1)}25%{transform:rotate(-10deg)scale(1.1)}50%{transform:rotate(0)scale(1)}75%{transform:rotate(10deg)scale(1.1)}}@media(max-width:768px){.achievement-notification{width:calc(100% - 40px);right:-100%}.achievement-notification.show{right:20px}}.gallery-card:not(.locked){transition:transform .3s,box-shadow .3s}.gallery-card:not(.locked):hover{transform:translateY(-4px)scale(1.02);box-shadow:0 12px 24px #0006}.completion-content{max-width:90vw;max-height:90vh}.completion-image-container{background:#0000004d;border-radius:12px;overflow:hidden}.setting-row input[type=checkbox]{transition:all .2s}.setting-row input[type=checkbox]:checked{background-color:var(--color-ember-500);border-color:var(--color-ember-500)}.fap-mode-indicator{background:linear-gradient(to right,var(--color-ember-600),var(--color-ember-400),var(--color-aqua-500));transform-origin:0;z-index:10;height:3px;transition:transform .3s;position:absolute;top:0;left:0;right:0}.btn-viewer-nav{background:var(--color-glass-base);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--color-glass-border);width:48px;height:48px;color:var(--color-mist-100);cursor:pointer;z-index:1001;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.btn-viewer-nav:hover{border-color:var(--color-ember-500);background:#ff7a4533;transform:translateY(-50%)scale(1.1)}.btn-viewer-prev{left:2rem}.btn-viewer-next{right:2rem}.btn-viewer-nav .icon{width:24px;height:24px}@media(hover:none)and (pointer:coarse){.puzzle-piece{touch-action:none}.puzzle-piece.dragging{transform:scale(1.15)}.gallery-card:active{transform:scale(.98)}.btn-viewer-nav{width:40px;height:40px}.btn-viewer-prev{left:1rem}.btn-viewer-next{right:1rem}}.tutorial-content{width:90%;max-width:420px}.tutorial-body{flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.tutorial-step{background:#ffffff08;border:1px solid #ffffff0d;border-radius:10px;align-items:flex-start;gap:1rem;padding:.75rem;display:flex}.tutorial-icon{text-align:center;flex-shrink:0;width:40px;font-size:1.5rem}.tutorial-text h3{color:var(--color-ember-400);margin:0 0 .25rem;font-size:.95rem;font-weight:600}.tutorial-text p{color:#f4f1e9b3;margin:0;font-size:.85rem;line-height:1.4}.tutorial-footer{border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.tutorial-checkbox{cursor:pointer;color:#f4f1e999;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.tutorial-checkbox input{accent-color:var(--color-ember-500)}@media(max-width:480px){.tutorial-content{width:95%;max-width:100%}.tutorial-body{gap:.75rem;padding:1rem}.tutorial-step{padding:.5rem}.tutorial-icon{width:32px;font-size:1.25rem}.tutorial-text h3{font-size:.9rem}.tutorial-text p{font-size:.8rem}}body.one-handed-mode{--control-side:right}body.one-handed-mode .menu-buttons{flex-direction:column}body.one-handed-mode .menu-buttons button{min-height:56px;font-size:1.1rem}body.one-handed-mode .puzzle-piece{cursor:grab}body.one-handed-mode .puzzle-piece:active{cursor:grabbing}body.one-handed-mode .piece-tray{justify-content:center;gap:1rem;padding-bottom:2rem}body.one-handed-mode .game-controls{gap:.75rem;position:fixed;bottom:2rem;right:1rem}body.one-handed-mode .game-controls button{min-width:56px;min-height:56px}body.one-handed-mode .btn-back-game,body.one-handed-mode .btn-undo-move,body.one-handed-mode .btn-reset-puzzle{padding:.75rem 1rem;font-size:1rem;position:fixed;right:1rem}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
