*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--color-sand:#f5e8d3;--color-white:#fff;--color-deep-ocean:#1d2d44;--color-stitch-blue:#005b9a;--color-lilo-red:#c11b2e;--color-sand-darker:#e0d5c1;--text-on-light:#1d2d44;--text-on-dark:#fff;--text-on-dark-soft:#f8f8f8;--text-muted-light:#5c4f42;--text-muted-dark:hsla(0,0%,100%,.8);--theme-pink:var(--color-lilo-red);--theme-blue:var(--color-stitch-blue);--theme-purple:#8b5cf6}body{font-family:Inter,ui-sans-serif,system-ui,sans-serif;background-color:var(--color-sand);color:var(--text-on-light);overflow:hidden}html{scroll-behavior:smooth}:focus-visible{outline:3px solid var(--color-lilo-red)!important;outline-offset:2px;border-radius:4px}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.audit-overlay,.login-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background-color:rgba(15,23,42,.9);backdrop-filter:blur(10px)}.audit-container,.login-form{width:91.666667%;max-width:24rem;border-radius:1.5rem;border-width:2px;--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity,1));background-color:rgba(30,41,59,.9);padding:2rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);backdrop-filter:blur(20px);box-shadow:0 25px 50px rgba(0,0,0,.5)}.audit-container{max-height:80vh;max-width:56rem;overflow-y:auto}.floating{animation:float 6s ease-in-out infinite}#appLayout{display:flex;min-height:100vh;width:100%;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s}#sidebar{display:flex;width:16rem;flex-shrink:0;flex-direction:column;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1));padding:1.5rem;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}#mainContent{height:100vh;flex-grow:1;overflow-y:auto;padding:2rem}.page-content{max-height:100%;overflow-y:auto}#sidebar nav a{display:flex;align-items:center;border-radius:.5rem;padding:.75rem 1rem;font-weight:600;--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}#sidebar nav a:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}#sidebar nav a.active{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}#sidebar nav a .icon{margin-right:.75rem;font-size:1.25rem;line-height:1.75rem}.timeline-container{position:relative;margin:2rem auto;max-width:56rem}.timeline-container:after{content:"";position:absolute;top:0;bottom:0;left:50%;margin-left:-.125rem;width:.25rem;--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.timeline-item{position:relative;width:50%;padding:2.5rem}.timeline-item.left{left:0}.timeline-item.right{left:50%}.timeline-item:after{content:"";position:absolute;right:-.625rem;top:1rem;z-index:10;height:1.25rem;width:1.25rem;border-radius:9999px;border-width:4px;--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.timeline-item.right:after{left:-.625rem}.timeline-content{position:relative;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1));padding:1.5rem}.chat-upload-dropzone{pointer-events:none;position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;border-radius:1rem;border-width:2px;border-style:dashed;--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1));background-color:rgba(168,85,247,.2)}.text-pink-300-accessible{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity,1));color:#f9a8d4!important}.text-blue-300-accessible{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1));color:#93c5fd!important}.text-purple-300-accessible{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1));color:#c4b5fd!important}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.left-4{left:1rem}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-4{top:1rem}.z-50{z-index:50}.z-\[1001\]{z-index:1001}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-auto{margin-right:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16/9}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-8{height:2rem}.h-96{height:24rem}.h-full{height:100%}.max-h-96{max-height:24rem}.max-h-\[60px\]{max-height:60px}.max-h-full{max-height:100%}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\/6{width:33.333333%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/6{width:50%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize-none{resize:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-slate-600>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(71 85 105/var(--tw-divide-opacity,1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-400\/50{border-color:rgba(96,165,250,.5)}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-gray-400\/50{border-color:rgba(156,163,175,.5)}.border-gray-500{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-orange-500{--tw-border-opacity:1;border-color:rgb(249 115 22/var(--tw-border-opacity,1))}.border-pink-400{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity,1))}.border-pink-500{--tw-border-opacity:1;border-color:rgb(236 72 153/var(--tw-border-opacity,1))}.border-pink-500\/50{border-color:rgba(236,72,153,.5)}.border-purple-400\/50{border-color:rgba(192,132,252,.5)}.border-purple-500{--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-slate-600{--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.border-slate-600\/50{border-color:rgba(71,85,105,.5)}.border-slate-700{--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity,1))}.bg-\[\#1e1a3b\]\/80{background-color:rgba(30,26,59,.8)}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.bg-blue-700\/50{background-color:rgba(29,78,216,.5)}.bg-blue-700\/80{background-color:rgba(29,78,216,.8)}.bg-blue-800\/50{background-color:rgba(30,64,175,.5)}.bg-blue-900\/50{background-color:rgba(30,58,138,.5)}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.bg-gray-700\/50{background-color:rgba(55,65,81,.5)}.bg-gray-700\/60{background-color:rgba(55,65,81,.6)}.bg-gray-700\/80{background-color:rgba(55,65,81,.8)}.bg-gray-800\/50{background-color:rgba(31,41,55,.5)}.bg-gray-800\/80{background-color:rgba(31,41,55,.8)}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-green-700{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.bg-green-700\/50{background-color:rgba(21,128,61,.5)}.bg-green-700\/80{background-color:rgba(21,128,61,.8)}.bg-green-900\/50{background-color:rgba(20,83,45,.5)}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.bg-orange-700\/50{background-color:rgba(194,65,12,.5)}.bg-orange-700\/80{background-color:rgba(194,65,12,.8)}.bg-pink-500{--tw-bg-opacity:1;background-color:rgb(236 72 153/var(--tw-bg-opacity,1))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgb(219 39 119/var(--tw-bg-opacity,1))}.bg-pink-600\/20{background-color:rgba(219,39,119,.2)}.bg-pink-600\/90{background-color:rgba(219,39,119,.9)}.bg-pink-700\/30{background-color:rgba(190,24,93,.3)}.bg-pink-700\/60{background-color:rgba(190,24,93,.6)}.bg-pink-800\/50{background-color:rgba(157,23,77,.5)}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.bg-purple-700\/80{background-color:rgba(126,34,206,.8)}.bg-purple-800\/50{background-color:rgba(107,33,168,.5)}.bg-red-500\/10{background-color:rgba(239,68,68,.1)}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-red-700\/50{background-color:rgba(185,28,28,.5)}.bg-red-700\/80{background-color:rgba(185,28,28,.8)}.bg-red-900\/20{background-color:rgba(127,29,29,.2)}.bg-red-900\/30{background-color:rgba(127,29,29,.3)}.bg-red-900\/50{background-color:rgba(127,29,29,.5)}.bg-rose-700\/90{background-color:rgba(190,18,60,.9)}.bg-slate-600\/90{background-color:rgba(71,85,105,.9)}.bg-slate-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.bg-slate-700\/50{background-color:rgba(51,65,85,.5)}.bg-slate-700\/80{background-color:rgba(51,65,85,.8)}.bg-slate-700\/90{background-color:rgba(51,65,85,.9)}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-800\/50{background-color:rgba(30,41,59,.5)}.bg-slate-800\/80{background-color:rgba(30,41,59,.8)}.bg-slate-800\/90{background-color:rgba(30,41,59,.9)}.bg-slate-900\/50{background-color:rgba(15,23,42,.5)}.bg-slate-900\/95{background-color:rgba(15,23,42,.95)}.bg-white\/20{background-color:hsla(0,0%,100%,.2)}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-yellow-700{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.bg-yellow-700\/50{background-color:rgba(161,98,7,.5)}.bg-yellow-700\/80{background-color:rgba(161,98,7,.8)}.bg-opacity-90{--tw-bg-opacity:0.9}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-6xl{font-size:3.75rem;line-height:1}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-300,.text-blue-300-accessible{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-50{--tw-text-opacity:1;color:rgb(239 246 255/var(--tw-text-opacity,1))}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/var(--tw-text-opacity,1))}.text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.text-orange-300{--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.text-pink-200{--tw-text-opacity:1;color:rgb(251 207 232/var(--tw-text-opacity,1))}.text-pink-300,.text-pink-300-accessible{--tw-text-opacity:1;color:rgb(249 168 212/var(--tw-text-opacity,1))}.text-pink-400{--tw-text-opacity:1;color:rgb(244 114 182/var(--tw-text-opacity,1))}.text-purple-100{--tw-text-opacity:1;color:rgb(243 232 255/var(--tw-text-opacity,1))}.text-purple-200{--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.text-purple-300-accessible{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-purple-400{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.text-purple-50{--tw-text-opacity:1;color:rgb(250 245 255/var(--tw-text-opacity,1))}.text-red-100{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-rose-100{--tw-text-opacity:1;color:rgb(255 228 230/var(--tw-text-opacity,1))}.text-rose-200{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-2xl,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-blue-900\/30{--tw-shadow-color:rgba(30,58,138,.3);--tw-shadow:var(--tw-shadow-colored)}.shadow-green-400\/50{--tw-shadow-color:rgba(74,222,128,.5);--tw-shadow:var(--tw-shadow-colored)}.shadow-purple-900\/30{--tw-shadow-color:rgba(88,28,135,.3);--tw-shadow:var(--tw-shadow-colored)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.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-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-filter{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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@media (max-width:768px){#sidebar{position:fixed;z-index:1000;height:100%;--tw-translate-x:-100%}#sidebar,#sidebar.open{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#sidebar.open{--tw-translate-x:0px}#mainContent{padding:5rem 1rem 1rem}.mobile-nav-toggle{display:block}.timeline-container:after{left:1rem}.timeline-item{width:100%;padding-left:3rem;padding-right:.5rem}.timeline-item.right{left:0}.timeline-item:after{left:.375rem}}.hover\:border-blue-400:hover{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.hover\:border-orange-400:hover{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.hover\:border-purple-400:hover{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.hover\:border-red-400:hover{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.hover\:border-yellow-400:hover{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.hover\:bg-blue-600\/20:hover{background-color:rgba(37,99,235,.2)}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-blue-900:hover{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgb(190 24 93/var(--tw-bg-opacity,1))}.hover\:bg-purple-600\/20:hover{background-color:rgba(147,51,234,.2)}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-red-900:hover{--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.hover\:bg-red-900\/40:hover{background-color:rgba(127,29,29,.4)}.hover\:bg-slate-600\/30:hover{background-color:rgba(71,85,105,.3)}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.hover\:bg-slate-700\/50:hover{background-color:rgba(51,65,85,.5)}.hover\:bg-white\/30:hover{background-color:hsla(0,0%,100%,.3)}.hover\:text-blue-100:hover{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.hover\:text-green-400:hover{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.hover\:text-orange-400:hover{--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.hover\:text-purple-400:hover{--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.hover\:text-red-100:hover{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:border-pink-400:focus{--tw-border-opacity:1;border-color:rgb(244 114 182/var(--tw-border-opacity,1))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-gray-500\/20:focus{--tw-ring-color:hsla(220,9%,46%,.2)}.focus\:ring-pink-400\/20:focus{--tw-ring-color:rgba(244,114,182,.2)}.focus\:ring-red-500\/20:focus{--tw-ring-color:rgba(239,68,68,.2)}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (min-width:768px){.md\:col-span-3{grid-column:span 3/span 3}.md\:hidden{display:none}.md\:h-32{height:8rem}.md\:w-32{width:8rem}.md\:max-w-lg{max-width:32rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:p-12{padding:3rem}.md\:p-8{padding:2rem}.md\:text-left{text-align:left}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}}@media (min-width:1024px){.lg\:max-w-md{max-width:28rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}

:root {
  --primary-bg: #FDF6E4;
  --panel-bg: #FFFFFF;
  --primary-action: #4A90E2;
  --primary-text: #2D3748;
  --secondary-text: #4A5568;
  --border-color: #E2E8F0;
  --progress-bar-fill: #68D391;
  --hover-bg: #EBF4FF;
}

.puzzle-library {
  max-width: 1120px;
  margin: 0 auto 2rem;
  padding: 2rem;
  background-color: var(--primary-bg);
  border: 1px solid rgba(226, 232, 240, 0.8);
  border-radius: 24px;
  box-shadow: 0 18px 36px rgba(45, 55, 72, 0.08);
}

.puzzle-library__header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.puzzle-library__title {
  margin: 0;
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--primary-text);
}

.puzzle-library__subtitle {
  margin: 0.25rem 0 0;
  color: var(--secondary-text);
}

.puzzle-library__admin-btn {
  white-space: nowrap;
}

#controls-bar {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  background-color: var(--panel-bg);
  border: 1px solid rgba(226, 232, 240, 0.6);
  border-radius: 18px;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
  box-shadow: 0 8px 18px rgba(45, 55, 72, 0.06);
}

.control-group {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  color: var(--secondary-text);
}

.control-group label {
  font-size: 0.85rem;
  font-weight: 600;
}

.search-wrapper {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  padding: 0.5rem 0.75rem;
  background-color: #fff;
}

.search-icon {
  color: var(--secondary-text);
  font-size: 1.1rem;
}

#controls-bar input[type="text"],
#controls-bar select {
  width: 100%;
  border: none;
  background: transparent;
  color: var(--primary-text);
  font-size: 0.95rem;
  outline: none;
}

#controls-bar select {
  border: 1px solid var(--border-color);
  border-radius: 12px;
  padding: 0.5rem 0.75rem;
  background-color: #fff;
  appearance: none;
}

#controls-bar input[type="text"]:focus-visible,
#controls-bar select:focus-visible {
  box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.3);
  border-color: var(--primary-action);
}

.view-toggle {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  justify-content: flex-end;
  align-self: flex-end;
}

.view-toggle button {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 12px;
  border: 1px solid var(--border-color);
  background: #fff;
  color: var(--secondary-text);
  font-size: 1.2rem;
  display: grid;
  place-items: center;
  transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.view-toggle button:hover,
.view-toggle button:focus-visible {
  background-color: var(--hover-bg);
  color: var(--primary-action);
  box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.2);
}

.view-toggle button.active {
  background-color: var(--primary-action);
  color: #fff;
  border-color: var(--primary-action);
  box-shadow: 0 6px 14px rgba(74, 144, 226, 0.25);
}

.puzzle-container {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.puzzle-container.grid-view {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.25rem;
}

.puzzle-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 180px 48px;
  gap: 1.25rem;
  align-items: center;
  background-color: var(--panel-bg);
  border: 1px solid rgba(226, 232, 240, 0.7);
  border-radius: 18px;
  padding: 1.25rem 1.5rem;
  transition: box-shadow 0.2s ease, transform 0.2s ease, background-color 0.2s ease;
  cursor: pointer;
}

.puzzle-container.grid-view .puzzle-item {
  grid-template-columns: 1fr;
  align-items: flex-start;
  height: 100%;
  cursor: default;
}

.puzzle-item:hover,
.puzzle-item:focus-within {
  background-color: var(--hover-bg);
  box-shadow: 0 14px 24px rgba(74, 144, 226, 0.15);
  transform: translateY(-2px);
}

.puzzle-item:focus-visible {
  outline: 3px solid var(--primary-action);
  outline-offset: 3px;
}

.puzzle-info {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.puzzle-title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--primary-text);
}

.puzzle-meta {
  margin: 0;
  color: var(--secondary-text);
  font-size: 0.9rem;
}

.puzzle-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.25rem;
}

.puzzle-tag {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  background-color: rgba(74, 144, 226, 0.12);
  color: var(--primary-action);
  padding: 0.2rem 0.6rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
}

.puzzle-progress {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  align-items: flex-end;
}

.puzzle-container.grid-view .puzzle-progress {
  width: 100%;
  align-items: flex-start;
}

.puzzle-progress__value {
  font-weight: 700;
  color: var(--primary-text);
}

.progress-bar-wrapper {
  width: 160px;
  height: 10px;
  border-radius: 999px;
  background-color: rgba(226, 232, 240, 0.8);
}
}

.puzzle-container.grid-view .progress-bar-wrapper {
  width: 100%;
}

.progress-bar-fill {
  height: 100%;
  background-color: var(--progress-bar-fill);
  border-radius: 999px;
  transition: width 0.3s ease;
}

.puzzle-actions {
  display: flex;
  justify-content: flex-end;
}

.puzzle-container.grid-view .puzzle-actions {
  align-self: flex-end;
}

.more-actions-btn {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 12px;
  border: 1px solid var(--border-color);
  background-color: #fff;
  color: var(--secondary-text);
  font-size: 1.2rem;
  line-height: 1;
  transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

.more-actions-btn:hover,
.more-actions-btn:focus-visible {
  background-color: var(--primary-action);
  color: #fff;
  box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.25);
}

.more-actions-menu {
  position: absolute;
  z-index: 20;
  min-width: 180px;
  background-color: #fff;
  border: 1px solid rgba(203, 213, 225, 0.9);
  border-radius: 14px;
  box-shadow: 0 18px 30px rgba(45, 55, 72, 0.16);
  padding: 0.5rem 0;
}

.more-actions-menu__item {
  width: 100%;
  text-align: left;
  padding: 0.65rem 1rem;
  background: transparent;
  border: none;
  font-size: 0.95rem;
  color: var(--primary-text);
  cursor: pointer;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.more-actions-menu__item:hover,
.more-actions-menu__item:focus-visible {
  background-color: var(--hover-bg);
  color: var(--primary-action);
}

.puzzle-empty {
  text-align: center;
  padding: 2.5rem 1rem;
  border: 2px dashed rgba(226, 232, 240, 0.8);
  border-radius: 18px;
  background-color: rgba(255, 255, 255, 0.8);
  color: var(--secondary-text);
}

.puzzle-library__load-more {
  text-align: center;
  margin-top: 1.5rem;
}

.puzzle-library__load-more .btn {
  min-width: 200px;
}

@media (max-width: 900px) {
  .puzzle-item {
    grid-template-columns: minmax(0, 1fr);
  }
  .puzzle-progress {
    align-items: flex-start;
  }
  .puzzle-actions {
    justify-content: flex-start;
  }
  .progress-bar-wrapper {
    width: 100%;
  }
}

@media (max-width: 640px) {
  .puzzle-library {
    padding: 1.5rem;
  }
  #controls-bar {
    grid-template-columns: 1fr;
  }
  .view-toggle {
    justify-content: flex-start;
  }
  .puzzle-library__header {
    align-items: flex-start;
  }
}


/* Crossword Mobile UI - CSS (mobile-first) */

/* Mobile Crossword Variables */
:root {
  --cw-bar-bg: rgba(30, 41, 59, 0.95);
  --cw-bar-fg: #fff;
  --cw-btn-bg: #475569;
  --cw-btn-fg: #e2e8f0;
  --cw-outline: #3b82f6;
  --cw-active-word: #fef3c7;
  --cw-active-cell: #dbeafe;
  --cw-overlay-bg: rgba(15, 23, 42, 0.98);
  --cw-border: #475569;
}

/* Mobile-first: Hide desktop elements by default */
#clues-across-panel, #clues-down-panel {
  display: none;
}

/* Mobile grid container styling */
#main-grid-panel {
  display: block;
  background: var(--panel-bg);
  border: 1px solid rgba(226, 232, 240, 0.7);
  border-radius: 16px;
  padding: 16px;
  margin: 16px;
}

/* Mobile crossword layout */
.crossword-layout {
  display: block;
  gap: 0;
}

/* Hide active clue display on mobile (we have the mobile bar instead) */
#active-clue-display {
  display: none;
}

/* Mobile grid wrapper */
.crossword-grid-wrapper {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  display: flex;
  justify-content: center;
  padding: 8px;
}

/* Mobile crossword grid table */
.crossword-grid-table {
  border-collapse: collapse;
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 8px 16px rgba(45, 55, 72, 0.1);
}

/* Mobile grid squares */
.grid-square {
  width: 32px;
  height: 32px;
  position: relative;
  border: 1px solid var(--border-color);
  vertical-align: middle;
  text-align: center;
  font-family: 'Nunito', sans-serif;
  font-size: 0.9rem;
  font-weight: 600;
}

.grid-square-letter {
  background: var(--panel-bg);
  cursor: pointer;
  transition: background-color 0.15s ease, box-shadow 0.15s ease;
}

.grid-square-block {
  background: #374151;
}

.word-highlight {
  background: var(--cw-active-word) !important;
}

.focus-highlight {
  background: var(--cw-active-cell) !important;
  box-shadow: inset 0 0 0 2px var(--cw-outline) !important;
}

/* Mobile active clue bar */
#mobile-active-clue-bar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--cw-bar-bg);
  color: var(--cw-bar-fg);
  padding: 12px 16px;
  font-size: 0.9rem;
  border-bottom: 1px solid var(--cw-border);
  backdrop-filter: blur(8px);
  display: block;
}

#mobile-active-clue-text {
  font-weight: 600;
  line-height: 1.4;
}

/* Mobile navigation controls - FIXED at bottom during scroll */
#mobile-nav-controls {
  position: fixed !important;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1000;
  display: flex;
  gap: 1px;
  background: var(--cw-bar-bg);
  border-top: 1px solid var(--cw-border);
  backdrop-filter: blur(8px);
  padding: 0 0 env(safe-area-inset-bottom, 0);
  box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.15);
}

#mobile-nav-controls button {
  flex: 1;
  padding: 16px 12px;
  background: var(--cw-btn-bg);
  color: var(--cw-btn-fg);
  border: none;
  font-size: 0.9rem;
  font-weight: 600;
  transition: background-color 0.2s ease;
}

#mobile-nav-controls button:hover,
#mobile-nav-controls button:focus {
  background: var(--cw-outline);
  color: white;
}

#mobile-nav-controls button:active {
  transform: scale(0.98);
}

/* Prevent parent transform from breaking viewport-fixed UI on mobile */
#crosswordContent.page-content:not(.hidden) {
  transform: none !important;
}

/* Reserve space for bottom navigation - prevent content from being hidden */
body.has-mobile-nav {
  padding-bottom: 80px;
}

body.has-mobile-nav #mainContent {
  padding-bottom: 80px;
}

/* Mobile clue list overlay */
#mobile-clue-list-view {
  position: fixed;
  inset: 0;
  background: var(--cw-overlay-bg);
  color: var(--cw-bar-fg);
  z-index: 100;
  display: none;
  flex-direction: column;
  backdrop-filter: blur(10px);
}

#mobile-clue-list-view[aria-hidden="false"] {
  display: flex;
}

.mobile-clue-header {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 16px;
  border-bottom: 1px solid var(--cw-border);
  background: var(--cw-bar-bg);
  backdrop-filter: blur(8px);
}

.mobile-clue-header button {
  padding: 8px 16px;
  background: var(--cw-btn-bg);
  color: var(--cw-btn-fg);
  border: 1px solid var(--cw-border);
  border-radius: 6px;
  font-weight: 600;
}

.mobile-clue-tabs {
  margin-left: auto;
  display: inline-flex;
  gap: 8px;
}

.mobile-clue-tabs button[aria-selected="true"] {
  background: var(--cw-outline);
  color: white;
  border-color: var(--cw-outline);
}

.mobile-clue-panels {
  flex: 1;
  overflow: auto;
  padding: 16px;
}

/* Mobile clue items styling */
#mobile-clue-list-view .clue-item {
  display: block;
  width: 100%;
  text-align: left;
  padding: 12px 16px;
  margin-bottom: 8px;
  background: rgba(71, 85, 105, 0.3);
  border: 1px solid var(--cw-border);
  border-radius: 8px;
  color: var(--cw-bar-fg);
  font-size: 0.9rem;
  line-height: 1.4;
}

#mobile-clue-list-view .clue-item:hover,
#mobile-clue-list-view .clue-item:focus {
  background: rgba(59, 130, 246, 0.2);
  border-color: var(--cw-outline);
}

#mobile-clue-list-view .clue-item.completed {
  text-decoration: line-through;
  opacity: 0.6;
}

/* Mobile highlight classes - align with JS naming */
.active-word {
  background: var(--cw-active-word) !important;
}

.active-cell {
  background: var(--cw-active-cell) !important;
  box-shadow: inset 0 0 0 2px var(--cw-outline) !important;
}

/* Mobile grid adjustments */
.crossword-game-shell {
  padding: 0;
  margin: 0;
  background: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
}

.crossword-layout {
  display: block;
  gap: 0;
}

.grid-panel {
  background: var(--panel-bg);
  border: 1px solid rgba(226, 232, 240, 0.7);
  border-radius: 16px;
  padding: 16px;
  margin: 16px;
}

.crossword-grid-wrapper {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.crossword-toolbar {
  padding: 12px 16px;
  margin: 0 16px 16px;
  border-radius: 12px;
}

/* Desktop styles (992px and up) */
@media (min-width: 992px) {
  /* Hide mobile UI elements on desktop */
  #mobile-active-clue-bar,
  #mobile-nav-controls,
  #mobile-clue-list-view {
    display: none !important;
  }
  
  /* Show desktop clue panels */
  #clues-across-panel,
  #clues-down-panel {
    display: block;
  }
  
  /* Restore desktop body padding */
  body.has-mobile-nav {
    padding-bottom: 0;
  }

  /* Desktop Crossword Game Layout */
  .crossword-game-shell {
    max-width: 1200px;
    margin: 0 auto 2rem;
    padding: 1.75rem;
    background: var(--primary-bg);
    border: 1px solid rgba(226, 232, 240, 0.8);
    border-radius: 24px;
    box-shadow: 0 20px 36px rgba(45, 55, 72, 0.08);
  }

  .crossword-game-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 1.25rem;
  }

  .crossword-game-header .header-meta h2 {
    margin: 0;
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--primary-text);
  }

  .crossword-game-header .header-meta p {
    margin: 0.35rem 0 0;
    color: var(--secondary-text);
    font-size: 0.95rem;
  }

  .crossword-game-header .header-actions {
    display: flex;
    align-items: center;
    gap: 0.75rem;
  }

  .completion-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.4rem 0.9rem;
    border-radius: 999px;
    background: rgba(104, 211, 145, 0.18);
    color: var(--primary-text);
    font-weight: 600;
  }

  .completion-pill .label {
    font-size: 0.85rem;
  }

  .btn-outline {
    border: 1.5px solid var(--primary-action);
    background: transparent;
    color: var(--primary-action);
    padding: 0.55rem 1.1rem;
    border-radius: 999px;
    font-weight: 600;
    transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
  }

  .btn-outline:hover,
  .btn-outline:focus-visible {
    background-color: rgba(74, 144, 226, 0.12);
    color: var(--primary-action);
    box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.25);
  }

  .crossword-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.85rem 1.25rem;
    background: var(--panel-bg);
    border: 1px solid rgba(226, 232, 240, 0.7);
    border-radius: 18px;
    margin-bottom: 1.75rem;
  }

  .mode-toggle {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
  }

  .toolbar-right {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
  }

  .player-pill-row {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
  }

  .player-pill {
    padding: 0.4rem 0.75rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 600;
    background: rgba(74, 144, 226, 0.12);
    color: var(--primary-action);
  }

  .player-pill-stitch {
    background: rgba(66, 153, 225, 0.18);
    color: #2563eb;
  }

  .player-pill-lilo {
    background: rgba(214, 188, 250, 0.2);
    color: #6d28d9;
  }

  .player-pill-waiting {
    background: rgba(252, 211, 77, 0.2);
    color: #b45309;
  }

  .tools-menu-wrapper {
    position: relative;
  }

  .tools-trigger {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
  }

  .tools-menu {
    position: absolute;
    top: calc(100% + 0.6rem);
    right: 0;
    min-width: 180px;
    padding: 0.5rem 0;
    background: var(--panel-bg);
    border: 1px solid rgba(203, 213, 225, 0.8);
    border-radius: 16px;
    box-shadow: 0 16px 32px rgba(45, 55, 72, 0.12);
    z-index: 25;
  }

  .tools-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 0.6rem 1rem;
    background: transparent;
    border: none;
    color: var(--primary-text);
    font-size: 0.9rem;
    transition: background-color 0.2s ease, color 0.2s ease;
  }

  .tools-item:hover,
  .tools-item:focus-visible {
    background: var(--hover-bg);
    color: var(--primary-action);
  }

  .crossword-layout {
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(320px, 2fr) minmax(220px, 1fr);
    gap: 1.5rem;
    align-items: start;
  }

  .clues-panel {
    background: var(--panel-bg);
    border: 1px solid rgba(226, 232, 240, 0.7);
    border-radius: 18px;
    padding: 1rem;
    max-height: 70vh;
    overflow-y: auto;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
  }

  .clues-heading {
    font-size: 1rem;
    font-weight: 700;
    color: var(--primary-text);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.75rem;
  }

  .clues-list {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
  }

  .clue-item {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.55rem 0.65rem;
    border-radius: 12px;
    background: transparent;
    border: none;
    text-align: left;
    cursor: pointer;
    color: var(--secondary-text);
    transition: background-color 0.18s ease, color 0.18s ease;
  }

  .clue-item:hover,
  .clue-item:focus-visible {
    background: rgba(74, 144, 226, 0.12);
    color: var(--primary-text);
  }

  .clue-item.active {
    background: var(--primary-action);
    color: #fff;
    box-shadow: 0 10px 20px rgba(74, 144, 226, 0.2);
  }

  .clue-item .clue-ordinal {
    font-weight: 700;
    min-width: 2.5rem;
  }

  .grid-panel {
    background: var(--panel-bg);
    border: 1px solid rgba(226, 232, 240, 0.7);
    border-radius: 24px;
    padding: 1.5rem;
    box-shadow: 0 10px 20px rgba(45, 55, 72, 0.08);
  }

  .active-clue-display {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    padding: 0.85rem 1rem;
    border: 1px solid rgba(226, 232, 240, 0.7);
    border-radius: 16px;
    background: var(--panel-bg);
    margin-bottom: 1.25rem;
  }

  .active-clue-number {
    font-weight: 700;
    color: var(--primary-action);
    font-size: 0.9rem;
    letter-spacing: 0.02em;
  }

  .active-clue-text {
    margin: 0;
    color: var(--primary-text);
    font-size: 1rem;
    line-height: 1.4;
  }

  .crossword-grid-wrapper {
    display: flex;
    justify-content: center;
    overflow-x: auto;
  }

  .crossword-grid-table {
    border-collapse: collapse;
    background: #fff;
    box-shadow: 0 12px 26px rgba(45, 55, 72, 0.12);
    border-radius: 16px;
    overflow: hidden;
  }

  .grid-square {
    width: 44px;
    height: 44px;
    position: relative;
    border: 1px solid var(--border-color);
    vertical-align: middle;
    text-align: center;
    font-family: 'Nunito', sans-serif;
  }

  .grid-square-letter {
    background: var(--panel-bg);
    cursor: pointer;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
  }

  .grid-square-block {
    background: #1f2937;
  }

  .word-highlight {
    background: #EBF4FF;
  }

  .focus-highlight {
    background: #FFD700 !important;
    box-shadow: inset 0 0 0 2px rgba(45, 55, 72, 0.35);
  }

  .grid-square-locked {
    position: relative;
  }

  .grid-square-locked::after {
    content: '';
    position: absolute;
    inset: 2px;
    border-radius: 6px;
    border: 2px dashed rgba(45, 55, 72, 0.25);
  }

  .grid-square-locked-stitch::after {
    border-color: rgba(37, 99, 235, 0.5);
  }

  .grid-square-locked-lilo::after {
    border-color: rgba(109, 40, 217, 0.5);
  }

  .crossword-number {
    position: absolute;
    top: 3px;
    left: 4px;
    font-size: 0.55rem;
    font-weight: 700;
    color: var(--secondary-text);
  }

  .crossword-letter {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--primary-text);
  }
}

/* Desktop-only responsive breakpoints */
@media (min-width: 992px) and (max-width: 1024px) {
  .crossword-layout {
    grid-template-columns: minmax(220px, 1fr) minmax(320px, 2fr);
    grid-template-areas:
      "across grid"
      "down grid";
  }
  #clues-across-panel { grid-area: across; }
  #main-grid-panel { grid-area: grid; }
  #clues-down-panel { grid-area: down; }
}
