.author-info:where(.astro-gtgkbr6n){display:flex;gap:.5rem;align-items:center;margin:1rem 0;font-size:.9rem}.author-avatar-link:where(.astro-gtgkbr6n){display:inline-flex;flex-shrink:0;line-height:0}.author-avatar:where(.astro-gtgkbr6n){width:28px;height:28px;border-radius:999px;object-fit:cover;border:1px solid var(--sl-color-gray-3);background:var(--sl-color-gray-4)}.author-link:where(.astro-gtgkbr6n){color:var(--sl-color-text-accent);text-decoration:none;font-weight:500}.author-link:where(.astro-gtgkbr6n):hover{text-decoration:underline}.related-tools:where(.astro-3jd3xusc){background-color:transparent;margin-top:1rem}.related-tools:where(.astro-3jd3xusc) h2:where(.astro-3jd3xusc){font-size:1.5rem;font-weight:700;color:var(--sl-color-white);margin:0 0 1.25rem;letter-spacing:-.02em}.related-track:where(.astro-3jd3xusc){display:flex;gap:1rem;overflow-x:auto;overflow-y:hidden;cursor:grab;padding:.75rem .25rem 1rem;margin:-.75rem -.25rem 0;scrollbar-width:none;-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(90deg,transparent,#000 2.5%,#000 97.5%,transparent);mask:linear-gradient(90deg,transparent,#000 2.5%,#000 97.5%,transparent)}.related-track:where(.astro-3jd3xusc).dragging{cursor:grabbing}.related-track:where(.astro-3jd3xusc).dragging .related-tool-link:where(.astro-3jd3xusc){pointer-events:none}.related-track:where(.astro-3jd3xusc)::-webkit-scrollbar{display:none}.related-tool-link:where(.astro-3jd3xusc){flex:0 0 300px;display:flex;align-items:center;gap:1rem;text-decoration:none;background:transparent;padding:1.25rem;border-radius:1rem;border:1px solid var(--sl-color-gray-3);box-shadow:inset 0 0 40px #8b5cf614;transition:transform .25s cubic-bezier(.4,0,.2,1),border-color .25s ease,box-shadow .25s ease}.related-tool-link:where(.astro-3jd3xusc):hover{transform:translateY(-4px);border-color:var(--sl-color-accent);box-shadow:inset 0 0 50px #8b5cf626,0 14px 28px -12px #8b5cf659}.favicon:where(.astro-3jd3xusc){flex-shrink:0;width:40px;height:40px;border-radius:.6rem}.tool-info:where(.astro-3jd3xusc){flex-grow:1;min-width:0;margin-top:0!important}.tool-info:where(.astro-3jd3xusc) h3:where(.astro-3jd3xusc){margin:0 0 .25rem;font-size:1.05rem;font-weight:600;color:var(--sl-color-white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-info:where(.astro-3jd3xusc) p:where(.astro-3jd3xusc){margin:0;font-size:.85rem;color:var(--sl-color-gray-2);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}@media(max-width:600px){.related-tool-link:where(.astro-3jd3xusc){flex-basis:82%}}.tool-hero{position:relative;display:flex;flex-direction:column;gap:2rem;padding:2.5rem;background:color-mix(in srgb,var(--sl-color-gray-5) 45%,transparent);backdrop-filter:blur(8px);border:1px solid var(--sl-color-gray-3);border-radius:1.5rem;box-shadow:inset 0 1px #ffffff0d,inset 0 0 50px #8b5cf617;margin-bottom:2rem;overflow:hidden}.tool-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(60% 55% at 50% 0%,rgba(139,92,246,.12),transparent 70%);pointer-events:none}.tool-actions-enhanced .tool-edit-btn{background:transparent;border-color:transparent;opacity:.7}.tool-actions-enhanced .tool-edit-btn:hover{opacity:1;border-color:var(--sl-color-accent)}.deal-code-btn.deal-locked{text-decoration:none}.deal-code-btn.deal-locked code{filter:blur(4px);user-select:none}.deal-code-btn.deal-locked:hover{border-color:#ffb938f2;box-shadow:0 6px 18px -8px #ffb93880}.submitted-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:2rem;padding:1rem 1.35rem;border:1px solid rgba(139,92,246,.5);border-radius:1rem;background:radial-gradient(50% 100% at 50% 0%,rgba(139,92,246,.12),transparent 80%)}.submitted-emoji{font-size:1.5rem;flex-shrink:0}.submitted-text{display:flex;flex-direction:column;gap:.1rem;flex:1;min-width:14rem}.submitted-text strong{color:var(--sl-color-white);font-size:.98rem}.submitted-text span{color:var(--sl-color-gray-2);font-size:.82rem}.submitted-actions{display:inline-flex;align-items:center;gap:.6rem;flex-wrap:wrap}.submitted-actions a{display:inline-flex;padding:.5rem 1.1rem;border-radius:999px;background:var(--sl-color-accent);color:#fff;font-weight:700;font-size:.85rem;text-decoration:none}.submitted-actions a.submitted-secondary{background:transparent;border:1px solid var(--sl-color-gray-3);color:var(--sl-color-gray-1);font-weight:600}.submitted-actions a:hover{filter:brightness(1.1)}.deal-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:2rem;padding:1rem 1.35rem;border:1px dashed rgba(255,185,56,.55);border-radius:1rem;background:radial-gradient(50% 100% at 50% 0%,rgba(255,185,56,.07),transparent 80%)}.deal-info{display:flex;align-items:center;gap:.85rem;min-width:0}.deal-emoji{font-size:1.5rem;flex-shrink:0}.deal-text{display:flex;flex-direction:column;gap:.1rem;min-width:0}.deal-text strong{color:var(--sl-color-white);font-size:.98rem}.deal-sub{color:var(--sl-color-gray-2);font-size:.8rem}.deal-code-btn{display:inline-flex;align-items:center;gap:.55rem;padding:.55rem 1.1rem;border-radius:999px;border:1px solid rgba(255,185,56,.55);background:transparent;color:var(--sl-color-accent-yellow, #ffb938);cursor:pointer;transition:border-color .18s ease,box-shadow .2s ease,transform .18s ease}.deal-code-btn code{background:none;font-size:.95rem;font-weight:800;letter-spacing:.08em;color:inherit;direction:ltr}.deal-code-btn:hover{transform:translateY(-1px);box-shadow:inset 0 0 18px #ffb93826,0 8px 20px -10px #ffb93880}.deal-copied{font-size:.8rem;font-weight:700;color:var(--sl-color-green, #22c55e)}.deal-code-btn.copied .deal-copy-icon{display:none}.tool-hero-main{display:flex;flex-direction:column;gap:2rem}.tool-upvote-corner{position:absolute;top:1.5rem;right:1.5rem}[dir=rtl] .tool-upvote-corner{right:auto;left:1.5rem}.tool-upvote-corner .upvote-button{display:block}.tool-upvote-corner .upvote-button button{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:.5rem!important;min-width:80px!important;min-height:80px!important;padding:1rem!important;background:transparent!important;border:2px solid var(--sl-color-gray-3)!important;border-radius:1rem!important;box-shadow:inset 0 2px 4px #0000001a,inset 0 -2px 4px #ffffff0d,0 4px 12px #0000001a!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important;backdrop-filter:blur(8px)!important}.tool-upvote-corner .upvote-button button:hover{border-color:var(--sl-color-accent)!important;background:#8b5cf60d!important;box-shadow:inset 0 2px 8px #8b5cf626,inset 0 -2px 8px #8b5cf61a,0 6px 20px #8b5cf633!important;transform:translateY(-2px)!important}.tool-upvote-corner .upvote-button button[data-upvoted=true]{background:var(--sl-color-accent)!important;border-color:var(--sl-color-accent-high)!important;box-shadow:inset 0 2px 4px #ffffff4d,inset 0 -2px 4px #0003,0 6px 20px #8b5cf666,0 0 0 1px #8b5cf61a!important;color:var(--sl-color-white)!important}.tool-upvote-corner .upvote-button button[data-upvoted=true]:hover{box-shadow:inset 0 2px 8px #fff6,inset 0 -2px 8px #0000004d,0 8px 24px #8b5cf680,0 0 0 1px #8b5cf633!important;transform:translateY(-3px) scale(1.02)!important}.tool-upvote-corner .upvote-button .sparkle-icon{width:28px!important;height:28px!important;stroke-width:2.5!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1))}.tool-upvote-corner .upvote-button .upvote-count{font-size:1.125rem!important;font-weight:700!important;line-height:1!important;letter-spacing:-.02em!important}@media(max-width:768px){.tool-upvote-corner .upvote-button button{min-width:70px!important;min-height:70px!important;padding:.875rem!important}.tool-upvote-corner .upvote-button .sparkle-icon{width:24px!important;height:24px!important}.tool-upvote-corner .upvote-button .upvote-count{font-size:1rem!important}}.tool-identity{display:flex;align-items:center;gap:1.5rem}.tool-favicon-wrapper{flex-shrink:0;width:64px;height:64px;border-radius:1rem;background:var(--sl-color-gray-4);border:1px solid var(--sl-color-gray-3);padding:.5rem;display:flex;align-items:center;justify-content:center}.tool-favicon{width:100%;height:100%;object-fit:contain;border-radius:.5rem;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.tool-title-group{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;padding-right:3rem}[dir=rtl] .tool-title-group{padding-right:0;padding-left:3rem}.tool-title{margin:0 0 .5rem;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:700;color:var(--sl-color-white);letter-spacing:-.02em;line-height:1.2}.tool-subtitle{margin:0;font-size:1rem;color:var(--sl-color-gray-2);line-height:1.5}.tool-actions-enhanced{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.tool-actions-enhanced>.action-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:.625rem;border:1px solid var(--sl-color-gray-3);background:transparent;color:var(--sl-color-gray-1);cursor:pointer;transition:all .2s ease;text-decoration:none;white-space:nowrap;min-height:38px}.tool-actions-enhanced>.action-btn:hover{border-color:var(--sl-color-accent);color:var(--sl-color-white);background:#8b5cf614}.action-icon{width:18px;height:18px;stroke-width:2;flex-shrink:0}.action-label{font-weight:500;font-size:.875rem}.tool-actions-enhanced .upvote-button,.tool-actions-enhanced .toolbar-menu{display:inline-flex;align-items:center}.awards-section-wrapper{margin:2rem 0;padding:2rem;background:var(--sl-color-gray-5);border:1px solid var(--sl-color-gray-3);border-radius:1.25rem;box-shadow:var(--tool-card-shadow)}.section-title{display:flex;align-items:center;gap:.75rem;margin:0 0 1.5rem;font-size:1.25rem;font-weight:600;color:var(--sl-color-white)}.section-icon{color:var(--sl-color-accent);flex-shrink:0}.awards-section{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.award-badge{position:relative;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);margin:0!important;padding:1rem;background:transparent;border:1px solid transparent;border-radius:.875rem}.award-badge:hover{transform:translateY(-4px);box-shadow:var(--tool-card-shadow),0 12px 24px -8px #8b5cf633;border-color:var(--sl-color-accent)}@media(hover:hover){.award-badge{filter:grayscale(1);opacity:.55;transition:filter .25s ease,opacity .25s ease,transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s ease,border-color .3s ease}.award-badge:hover{filter:none;opacity:1}}.award-icon{width:100%;height:auto}.badge-background{fill:color-mix(in srgb,var(--sl-color-gray-6) 70%,transparent);stroke:var(--sl-color-accent);stroke-opacity:.5}.badge-subtitle{font-family:system-ui,-apple-system,sans-serif;font-size:10.5px;fill:var(--sl-color-accent-high, var(--sl-color-accent));font-weight:600;text-transform:uppercase;letter-spacing:.17em}.badge-title{font-family:system-ui,-apple-system,sans-serif;font-size:17px;fill:var(--sl-color-white);font-weight:700}.award-badge[data-rank="1"] .badge-logo{fill:#eda311}.award-badge[data-rank="2"] .badge-logo{fill:#9aa3b5}.award-badge[data-rank="3"] .badge-logo{fill:#c9834e}.award-badge .badge-logo{fill:var(--sl-color-accent)}.award-tooltip{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--sl-color-gray-4);color:var(--sl-color-gray-1);padding:.75rem 1rem;border-radius:.5rem;font-size:.75rem;white-space:nowrap;z-index:10;margin-bottom:.5rem;border:1px solid var(--sl-color-gray-3);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.award-badge:hover .award-tooltip{display:block}.award-type{display:block;font-weight:600;margin-bottom:.25rem;color:var(--sl-color-white)}.award-date-text{display:block;font-size:.7rem;opacity:.8}.award-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:6px;border-style:solid;border-color:var(--sl-color-gray-3) transparent transparent transparent}@media(max-width:768px){.tool-hero{padding:1.5rem;gap:1.5rem}.tool-upvote-corner{position:static;align-self:flex-end;margin-bottom:1rem}[dir=rtl] .tool-upvote-corner{align-self:flex-start}.tool-title-group{padding-right:0}[dir=rtl] .tool-title-group{padding-left:0}.tool-identity{flex-direction:column;align-items:flex-start}.tool-favicon-wrapper{width:56px;height:56px}.tool-title{font-size:1.5rem}.tool-subtitle{font-size:.9rem}.tool-actions-enhanced{width:100%;flex-direction:row;flex-wrap:wrap}.action-btn{flex:1;min-width:calc(50% - .25rem);justify-content:center}.awards-section{grid-template-columns:1fr}.awards-section-wrapper{padding:1.5rem}.section-title{font-size:1.1rem}}.tool-content{max-width:var(--content-width);margin:0 auto;padding:var(--content-padding)}.tool-header{margin-bottom:3rem}.meta{display:flex;justify-content:space-between;align-items:center;margin-top:2rem;padding-top:1rem}.hero-image-link{position:relative;display:block;cursor:pointer}.hero-image-link .hero-image{transition:transform .35s ease}.hero-image-link:hover .hero-image{transform:scale(1.02)}.hero-image-hint{position:absolute;bottom:.85rem;inset-inline-end:.85rem;display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .9rem;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:#0401288c;backdrop-filter:blur(8px);color:#fff;font-size:.78rem;font-weight:600;opacity:0;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}.hero-image-link:hover .hero-image-hint,.hero-image-link:focus-visible .hero-image-hint{opacity:1;transform:translateY(0)}@media(hover:none){.hero-image-hint{opacity:1;transform:none}}.hero-image-container{margin:2rem 0;width:100%;overflow:hidden;border-radius:1rem;border:1px solid var(--sl-color-gray-5);background:var(--sl-color-gray-6)}.hero-image-container.img-failed{min-height:180px;background:radial-gradient(120% 140% at 0% 0%,rgba(139,92,246,.25),transparent 60%),radial-gradient(120% 140% at 100% 100%,rgba(255,185,56,.18),transparent 60%),var(--sl-color-gray-5)}.hero-image{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .3s ease}.hero-image:hover{transform:scale(1.02)}.tool-metadata{margin-top:2rem;display:flex;flex-direction:column;gap:1.25rem;font-size:.875rem;color:var(--sl-color-gray-2);background:transparent;box-shadow:inset 0 0 45px #8b5cf614;padding:1.75rem;border-radius:1.25rem;border:1px solid var(--sl-color-gray-3)}.tool-metadata>div{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.tool-metadata>div>strong{flex-basis:100%;margin-bottom:.15rem}.category-tag,.tag-item{display:inline-flex;align-items:center;padding:.3rem .85rem;background-color:var(--sl-color-accent-low);color:var(--sl-color-accent);border:1px solid var(--sl-color-accent);border-radius:999px;text-decoration:none;font-size:.78rem;font-weight:500;transition:all .2s ease}.category-tag:hover,.tag-item:hover{background-color:var(--sl-color-accent);color:#fff;text-decoration:none;transform:translateY(-2px)}.software-type-item,.pricing-model-value{display:inline-flex;align-items:center;color:var(--sl-color-gray-1);background:var(--sl-color-gray-4);border:1px solid var(--sl-color-gray-3);padding:.3rem .85rem;border-radius:999px;font-size:.78rem}.tool-metadata strong{display:inline-flex;align-items:center;min-width:5.5rem;margin-inline-end:.5rem;white-space:nowrap;color:var(--sl-color-gray-2);font-weight:700;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}.pricing-model-value{color:var(--sl-color-accent);font-weight:500}.tool-content main{margin:2rem 0;line-height:1.6}.tool-content main h2{display:flex;align-items:center;gap:.75rem;margin:2.5rem 0 1rem;padding:1.25rem 1.5rem;font-size:1.5rem;font-weight:600;color:var(--sl-color-white);background:var(--sl-color-gray-5);border:1px solid var(--sl-color-gray-3);border-radius:1rem;box-shadow:var(--tool-card-shadow);position:relative;overflow:hidden}.tool-content main h2:before{content:"";width:4px;height:100%;background:linear-gradient(to bottom,var(--sl-color-accent),var(--sl-color-accent-yellow));position:absolute;left:0;top:0;border-radius:1rem 0 0 1rem}[dir=rtl] .tool-content main h2:before{left:auto;right:0;border-radius:0 1rem 1rem 0}.tool-content main p{margin:1rem 0;color:var(--sl-color-gray-1)}.tool-content main h3{margin:1.75rem 0 .75rem;padding:1rem 1.25rem;font-size:1.25rem;font-weight:600;color:var(--sl-color-white);background:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-3);border-left:3px solid var(--sl-color-accent);border-radius:.75rem}.tool-content main h4{margin:1.5rem 0 .5rem;font-size:1.1rem;font-weight:600;color:var(--sl-color-accent-high)}.tool-content main ul,.tool-content main ol{padding-left:1.5rem;margin:1rem 0}.tool-content main li{margin:.5rem 0;color:var(--sl-color-gray-1)}.tool-content main li::marker{color:var(--sl-color-accent)}.tool-content main blockquote{border-left:4px solid var(--sl-color-accent);padding-left:1.5rem;margin:1.5rem 0;font-style:italic;color:var(--sl-color-gray-2)}.tool-content main code{background:var(--sl-color-gray-4);color:var(--sl-color-accent-yellow);padding:.2rem .4rem;border-radius:.375rem;font-size:.9em;border:1px solid var(--sl-color-gray-3)}.tool-content main pre{background:var(--sl-color-gray-6);border:1px solid var(--sl-color-gray-3);border-radius:.75rem;padding:1.5rem;overflow-x:auto;margin:1.5rem 0;box-shadow:var(--tool-card-shadow)}.tool-content main pre code{background:transparent;border:none;padding:0}.tool-content main a{color:var(--sl-color-accent);text-decoration:none;border-bottom:1px solid transparent;transition:all .2s}.tool-content main a:hover{color:var(--sl-color-accent-high);border-bottom-color:var(--sl-color-accent-high)}.tool-content main img{max-width:100%;height:auto;border-radius:.75rem;border:1px solid var(--sl-color-gray-3);margin:1.5rem 0;box-shadow:var(--tool-card-shadow)}.tool-content main strong{color:var(--sl-color-white);font-weight:600}.tool-content main em{color:var(--sl-color-accent-yellow);font-style:italic}footer{margin-top:3rem;padding-top:2rem;border-top:2px solid var(--sl-color-gray-5)}.report-modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#0401288c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.report-modal-content{background:color-mix(in srgb,var(--sl-color-gray-6) 90%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--sl-color-gray-3);border-radius:1.25rem;max-width:460px;width:100%;box-shadow:inset 0 0 50px #8b5cf614,0 30px 80px -20px #000000b3;animation:reportModalPop .28s cubic-bezier(.34,1.2,.64,1)}@keyframes reportModalPop{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.report-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.15rem 1.5rem .9rem;border-bottom:1px solid color-mix(in srgb,var(--sl-color-gray-3) 55%,transparent)}.report-modal-header h3{margin:0;font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--sl-color-gray-2)}.report-modal-close{background:none;border:1px solid var(--sl-color-gray-3);font-size:1.35rem;color:var(--sl-color-gray-1);cursor:pointer;line-height:1;padding:0;width:2.15rem;height:2.15rem;display:flex;align-items:center;justify-content:center;border-radius:999px;transition:border-color .18s ease,color .18s ease,box-shadow .2s ease}.report-modal-close:hover{border-color:var(--sl-color-accent);color:var(--sl-color-white);box-shadow:inset 0 0 14px #8b5cf633}.report-form{padding:1.25rem 1.5rem 1.5rem;display:flex;flex-direction:column;gap:1rem}.report-form select,.report-form textarea{width:100%;padding:.7rem .85rem;background:color-mix(in srgb,var(--sl-color-gray-5) 65%,transparent);border:1px solid var(--sl-color-gray-3);border-radius:.75rem;color:var(--sl-color-gray-1);font-size:.875rem;transition:border-color .2s ease,box-shadow .2s ease}.report-form select:focus,.report-form textarea:focus{outline:none;border-color:var(--sl-color-accent);box-shadow:0 0 0 3px #8b5cf629}.report-form textarea{min-height:100px;resize:vertical}.report-form button[type=submit]{padding:.7rem 1.5rem;background:var(--sl-color-accent);color:#fff;border:none;border-radius:999px;font-weight:700;cursor:pointer;transition:all .2s}.report-form button[type=submit]:hover{background:#7c4deb;box-shadow:0 8px 20px -8px #8b5cf6b3}
