.json-tree{font-size:14px;line-height:1.5}.collapsible:hover{cursor:pointer;text-decoration:underline}.json-key{color:#881391;font-weight:700}.json-string{color:#1A8F35}.json-number{color:#1A56DB}.json-boolean{color:#B5470F}.json-null{color:#808080}.indent{margin-left:2rem}.caret{display:inline-block;width:12px;text-align:center}.line{white-space:nowrap}.copy-button{opacity:0;transition:opacity .2s}.json-node:hover .copy-button{opacity:1}.faq-content strong{font-weight:700}.thumbnail-card{transition:all .3s ease}.thumbnail-card:hover{transform:translateY(-5px)}.download-btn{transition:all .2s ease}.download-btn:hover{transform:translateY(-2px)}.pulse-animation{animation:pulse 2s infinite}.fade-in{animation:fadeIn .5s ease-in-out}.shake{animation:shake .5s cubic-bezier(.36,.07,.19,.97) both}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-3px,0,0)}40%,60%{transform:translate3d(3px,0,0)}}.blob{border-radius:9999px;opacity:.4;pointer-events:none;z-index:0}body{background-color:#f5f7fa}.drop-zone{border:2px dashed #cbd5e1;transition:all .3s ease}.drop-zone.active{border-color:#3b82f6;background-color:rgba(59,130,246,.05)}.image-preview{max-height:300px;-o-object-fit:contain;object-fit:contain}.quality-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:#3b82f6;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px rgba(0,0,0,.15)}.quality-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#3b82f6;cursor:pointer;border:2px solid white;box-shadow:0 2px 6px rgba(0,0,0,.15)}.progress-ring{transform:rotate(-90deg)}.progress-ring__circle{stroke-dasharray:251.2;stroke-dashoffset:251.2;transition:stroke-dashoffset .5s ease}.blob{position:absolute;border-radius:50%;filter:blur(70px);z-index:-1;opacity:.5}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .5s ease forwards}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.scale-in{animation:scaleIn .3s ease forwards}.light-text{font-weight:300}.normal-text{font-weight:400}.medium-text{font-weight:500}.semibold-text{font-weight:600}.bold-text{font-weight:700}.extrabold-text{font-weight:800}