
@font-face{font-family:'pxl';src:url('lib/pixel-12-latin.woff2') format('woff2');font-display:swap}
@font-face{font-family:'px';src:url('lib/pixel-12-zh_hans.woff2') format('woff2');font-display:swap}
@font-face{font-family:'font';src:url('lib/字体.ttf') format('truetype');font-display:swap}
*{margin:0;padding:0;box-sizing:border-box}
body{background:#0d0d2b;min-height:100vh;font-family:"font","Segoe UI","Microsoft YaHei",sans-serif;padding:20px;color:#ccc;overflow:hidden}
.container{max-width:960px;margin:0 auto;position:relative;z-index:1}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:rgba(124,77,255,.55)}
::selection{background:rgba(124,77,255,.45);color:#fff}
.wm{position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:999;opacity:0}
.wm-footer{position:fixed;bottom:6px;left:0;width:100%;text-align:center;pointer-events:none;z-index:999;font-size:12px;color:rgba(255,255,255,.12)}
.header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.header h1{font-size:24px;color:#fff;display:flex;align-items:center;gap:12px}
.logo-frame{width:44px;height:44px;padding:7px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}
.logo-frame img{width:28px;height:28px;border-radius:7px;display:block}
.header h1 span{background:linear-gradient(135deg,#7c4dff,#448aff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.header .sub{font-size:13px;color:#889}.header .badge{display:inline-block;padding:2px 10px;border-radius:10px;font-size:11px;background:rgba(124,77,255,.2);color:#b197fc;margin-left:6px}
.hm{font-size:11px;color:rgba(255,255,255,.1);font-weight:400;user-select:none;white-space:nowrap}
#status{background:rgba(255,255,255,.03);border-left:3px solid #7c4dff;border-radius:6px;padding:10px 16px;margin-bottom:10px;font-size:13px}
.card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px;padding:14px;margin-bottom:10px}
.drop-zone{border:2px dashed rgba(255,255,255,.1);border-radius:8px;padding:24px 20px;text-align:center;cursor:pointer;transition:.3s}
.drop-zone:hover{border-color:rgba(124,77,255,.6);background:rgba(124,77,255,.10);transform:translateY(-1px)}
.drop-zone.drag-over{border-color:#7c4dff;background:rgba(124,77,255,.16)}
.drop-zone.has-file{border-color:#ffd43b;background:rgba(255,212,59,.08)}
.drop-zone .file-name{color:#ffd43b;font-weight:500;margin-top:4px;font-size:14px}
.drop-zone .file-size{font-size:11px;color:#888}
.drop-zone input[type=file]{display:none}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}
.row label{font-size:12px;color:#999}
.row input[type=text],.row input[type=number]{padding:6px 10px;border:1px solid rgba(255,255,255,.1);border-radius:4px;background:rgba(0,0,0,.3);color:#ccc;font-size:12px;width:60px;transition:border-color .2s,box-shadow .2s}
.row select{padding:6px 10px;border:1px solid rgba(255,255,255,.1);border-radius:4px;background:rgba(0,0,0,.3);color:#ccc;font-size:12px}
.row input:focus,.row select:focus{border-color:#7c4dff;outline:none;box-shadow:0 0 0 2px rgba(124,77,255,.25)}
.btn{padding:8px 20px;border:none;border-radius:6px;font-size:13px;cursor:pointer;color:#fff;display:inline-flex;align-items:center;gap:6px;transition:.15s;font-weight:500}
.btn:disabled{opacity:.35;cursor:not-allowed}
.btn-preview{background:linear-gradient(135deg,#00b894,#00a381)}
.btn-preview:hover:not(:disabled){opacity:.85;transform:scale(1.02)}
.btn-primary{background:linear-gradient(135deg,#7c4dff,#5e35e0)}
.btn-primary:hover:not(:disabled){opacity:.85;transform:scale(1.02)}
.btn-success{background:linear-gradient(135deg,#00c853,#00a844)}
.btn-success:hover:not(:disabled){opacity:.85;transform:scale(1.02)}

.btn-danger{background:linear-gradient(135deg,#ff1744,#d50000)}
.btn-danger:hover:not(:disabled){opacity:.85;transform:scale(1.02)}
.btn-sm{padding:4px 12px;font-size:12px}
 
button:focus,input:focus,select:focus,a:focus,.tab:focus,.copy-btn:focus,.sens-area:focus{outline:none!important}
 
.btn:active:not(:disabled){transform:scale(.95)!important;transition:transform .08s!important}
.btn:active:not(:disabled)::after{content:'';position:absolute;inset:0;border-radius:6px;background:rgba(255,255,255,.15);pointer-events:none;animation:rippleFade .3s ease-out forwards}
@keyframes rippleFade{0%{opacity:1}100%{opacity:0}}
.btn{position:relative;overflow:hidden}
.tabs{position:relative;overflow:hidden;display:flex;gap:2px;margin-top:10px;padding:4px;border-radius:12px;background:transparent;border:none;box-shadow:none}
.tab{padding:7px 16px;cursor:pointer;font-size:12px;color:rgba(255,255,255,.85);border:none;border-radius:8px;transition:.2s;display:flex;align-items:center;gap:4px}
.tab:hover{color:#fff;background:rgba(255,255,255,.10)}
.tab.active{color:#fff;background:rgba(124,77,255,.28)}
.tab-content{display:none;margin-top:6px}.tab-content.active{display:block}
.box{background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:12px;font-size:12px;color:#d9d9ef;height:260px;overflow:auto;white-space:pre-wrap;word-break:break-all}
.box-lg{height:380px}.box-sm{height:150px}
.box-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.box-header span{font-size:11px;color:#aaa}
.copy-btn{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#eee;padding:3px 14px;border-radius:6px;font-size:11px;cursor:pointer;transition:.2s}
.copy-btn:hover{background:rgba(124,77,255,.35);color:#fff}
.sens-area{width:100%;height:160px;font-size:12px;margin-top:8px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:10px;color:#ccc;resize:vertical;transition:.2s}
.sens-area:focus{outline:none;border-color:#7c4dff;box-shadow:0 0 0 2px rgba(124,77,255,.25)}
#loadingOverlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;align-items:center;justify-content:center;flex-direction:column;gap:12px;overflow:hidden;background:radial-gradient(1000px 700px at 50% -10%,rgba(124,77,255,.22),transparent 60%),radial-gradient(800px 600px at 90% 115%,rgba(68,138,255,.16),transparent 60%),radial-gradient(600px 500px at 8% 90%,rgba(0,229,160,.10),transparent 60%),repeating-linear-gradient(0deg,rgba(255,255,255,.028) 0 1px,transparent 1px 26px),repeating-linear-gradient(90deg,rgba(255,255,255,.028) 0 1px,transparent 1px 26px),#0d0d2b}
#loadingOverlay.active{display:flex;animation:splashIn .7s cubic-bezier(.22,.9,.3,1) both}
#loadingOverlay.hide{animation:splashOut .55s ease both;pointer-events:none}
@keyframes splashIn{from{opacity:0}to{opacity:1}}
@keyframes splashOut{from{opacity:1}to{opacity:0}}
#splashParticles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
#splashParticles span{position:absolute;bottom:-24px;border-radius:3px;box-shadow:0 0 6px rgba(255,255,255,.25);opacity:0;animation:splashFloat linear infinite}
@keyframes splashFloat{0%{transform:translate3d(0,0,0) rotate(0deg);opacity:0}8%{opacity:.9}85%{opacity:.5}100%{transform:translate3d(0,-115vh,0) rotate(720deg);opacity:0}}
.cube-scene{width:110px;height:110px;perspective:640px;position:relative;z-index:1;margin-bottom:4px}
.cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;animation:cubeSpin 6s linear infinite}
.cube-face{position:absolute;left:25px;top:25px;width:60px;height:60px;border:2px solid rgba(255,255,255,.4);background:repeating-conic-gradient(rgba(124,77,255,.9) 0 25%,rgba(160,107,255,.72) 0 50%) 0 0/20px 20px;box-shadow:inset 0 0 18px rgba(0,0,0,.35)}
.cf-top{transform:rotateX(90deg) translateZ(30px);background:repeating-conic-gradient(rgba(0,229,160,.85) 0 25%,rgba(64,220,180,.68) 0 50%) 0 0/20px 20px}
.cf-bottom{transform:rotateX(-90deg) translateZ(30px)}
.cf-front{transform:translateZ(30px)}
.cf-back{transform:rotateY(180deg) translateZ(30px)}
.cf-left{transform:rotateY(-90deg) translateZ(30px)}
.cf-right{transform:rotateY(90deg) translateZ(30px)}
@keyframes cubeSpin{0%{transform:rotateX(-40deg) rotateY(0deg)}100%{transform:rotateX(-40deg) rotateY(360deg)}}
.splash-title{position:relative;z-index:1;margin:2px 0 0;font-size:30px;font-weight:800;letter-spacing:2px;background:linear-gradient(90deg,#7c4dff,#448aff,#00e5a0,#ffd54a,#7c4dff);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:titleFlow 3.2s linear infinite;filter:drop-shadow(0 0 16px rgba(124,77,255,.6))}
@keyframes titleFlow{to{background-position:300% 0}}
.splash-sub{position:relative;z-index:1;font-size:12px;color:#8a86b8;letter-spacing:4px;margin-bottom:2px}
.splash-hint{position:relative;z-index:1;font-size:12px;color:#5a5688;animation:hintPulse 2.2s ease-in-out infinite}
@keyframes hintPulse{0%,100%{opacity:.45}50%{opacity:1}}
#loadingOverlay .loading-text{color:#8a86b8;font-size:13px;position:relative;z-index:1}
#loadingOverlay .progress-wrap{width:220px;height:4px;background:rgba(255,255,255,.08);border-radius:4px;overflow:hidden}
#loadingOverlay .progress-bar{height:100%;width:0%;background:linear-gradient(90deg,#7c4dff,#448aff);border-radius:4px;transition:width .3s}
#lsBody{display:inline-block;margin-top:16px;text-align:left}
.ls-it{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:13px;color:#889;white-space:nowrap}
.ls-dot{width:10px;height:10px;border-radius:50%;background:#333;flex-shrink:0;transition:all .3s}
.ls-dot.act{background:#448aff;box-shadow:0 0 8px #448aff}
.ls-dot.ok{background:#2fb344}
.ls-pct{color:#666;font-size:11px;min-width:45px;text-align:right}
.ls-bar-wrap{width:90px;height:3px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden;margin-left:auto}
.ls-bar{height:100%;width:0%;background:linear-gradient(90deg,#7c4dff,#448aff);border-radius:3px;transition:width .2s}
#parseProgress{margin-top:6px;width:100%;height:3px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden}
#parseProgress .pp-bar{height:100%;width:0%;background:linear-gradient(90deg,#7c4dff,#448aff);border-radius:3px;transition:width .3s}
.cv-panel{position:fixed;z-index:9996;border-radius:10px;background:rgba(18,18,42,.96);box-shadow:0 12px 44px rgba(0,0,0,.5);border:1px solid rgba(124,77,255,.5);display:flex;align-items:center;gap:12px;padding:0 18px;transition:left .5s cubic-bezier(.2,.8,.2,1),top .5s cubic-bezier(.2,.8,.2,1),width .5s cubic-bezier(.2,.8,.2,1),height .5s cubic-bezier(.2,.8,.2,1),opacity .35s ease;pointer-events:none}
.cv-panel .cv-name{color:#c8c8e8;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto;min-width:0}
.cv-panel .cv-track{flex:1 1 auto;height:6px;background:rgba(255,255,255,.1);border-radius:6px;overflow:hidden;min-width:60px}
.cv-panel .cv-fill{height:100%;width:0%;background:linear-gradient(90deg,#7c4dff,#448aff,#00e5a0,#7c4dff);background-size:300% 100%;border-radius:6px;transition:width .2s ease;animation:cvShine 1.4s linear infinite}
@keyframes cvShine{to{background-position:300% 0}}
.cv-panel .cv-pct{color:#9f9fd0;font-size:12px;font-variant-numeric:tabular-nums;min-width:44px;text-align:right;flex-shrink:0}
#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(80px);padding:12px 28px;border-radius:8px;font-size:14px;font-weight:500;z-index:10000;opacity:0;transition:all .4s;pointer-events:none;background:rgba(22,22,48,.96);box-shadow:0 10px 32px rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.15)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.success{border-color:#00c853;color:#69db7c}
#toast.error{border-color:#ff1744;color:#ff6b6b}
#toast.info{border-color:#448aff;color:#74c0fc}
@media(max-width:600px){body{padding:10px}.header h1{font-size:18px}.header .sub{font-size:11px}.card{padding:10px}.drop-zone{padding:18px 14px;font-size:13px}.row{gap:6px}.row label{font-size:11px}.row input[type=text],.row input[type=number]{height:30px;width:48px;font-size:13px;padding:4px 6px}.row select{height:30px;font-size:13px;padding:4px 6px}.btn{padding:9px 14px;font-size:12px;touch-action:manipulation}.btn-sm{padding:6px 10px;font-size:11px}.tab{padding:5px 10px;font-size:11px}.box{height:160px;font-size:11px;padding:8px}.box-lg{height:220px}.box-sm{height:100px}#toast{left:12px;right:12px;transform:translateY(80px);text-align:center;font-size:13px;padding:10px 16px;border-radius:8px}#toast.show{transform:translateY(0)}.wm{opacity:0}}@media(max-width:420px){body{padding:6px}.header h1{font-size:15px}.header .sub{font-size:10px}.drop-zone{padding:14px 10px;font-size:12px}.card{padding:8px}.row input[type=text],.row input[type=number]{width:40px;font-size:12px;min-height:30px}.row select{font-size:12px;min-height:30px}.btn{padding:8px 10px;font-size:11px}.btn-sm{padding:5px 8px}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:0}.tab{white-space:nowrap;flex-shrink:0;padding:5px 8px}.box{height:140px}.box-lg{height:180px}.box-sm{height:80px}.sens-area{font-size:13px}}
@media(max-width:600px){.logo-frame{width:38px;height:38px;padding:6px}.logo-frame img{width:24px;height:24px}}
/* ================== Minecraft 像素风覆盖层 ================== */
*{border-radius:0!important;image-rendering:pixelated}
body{background:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),#232323;background-size:18px 18px,18px 18px,auto;color:#d6d6d6;overflow-y:auto!important;font-family:"font","Segoe UI","Microsoft YaHei",sans-serif}
::-webkit-scrollbar{width:14px;height:14px}
::-webkit-scrollbar-track{background:#181818;border:2px solid #000}
::-webkit-scrollbar-thumb{background:#6b6b6b;border:2px solid #000}
::-webkit-scrollbar-thumb:hover{background:#8a8a8a}
::selection{background:#7bc043;color:#0a0a0a}
.container{background:#343434;border:3px solid #0c0c0c;box-shadow:inset 0 0 0 2px #4b4b4b,0 10px 0 #151515;padding:20px 22px 30px;margin:0 auto 40px}
.header h1{color:#fff;text-shadow:3px 3px 0 #141414;letter-spacing:1px}
.header h1>span:not(.logo-frame):not(.hm){background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;-webkit-text-fill-color:#ffd93b!important;color:#ffd93b!important;text-shadow:3px 3px 0 #2b1d00}
.logo-frame{background:#101010!important;border:3px solid #0a0a0a!important;box-shadow:inset 0 0 0 2px #5f5f5f;padding:6px}
.logo-frame img{image-rendering:pixelated}
.header .sub{color:#a8a8a8;text-shadow:2px 2px 0 #141414;letter-spacing:1px;font-family:"Segoe UI",monospace}
.header .badge{background:#222;border:2px solid #0c0c0c;color:#ffd93b;box-shadow:inset 0 2px 0 rgba(255,255,255,.15);padding:3px 10px}
.hm{color:#787878!important;-webkit-text-fill-color:#787878}
#status{background:#1c1c1c;border:2px solid #0b0b0b;border-left:8px solid #ffd93b;color:#ffe9a8;box-shadow:inset 0 0 0 2px #3c3c3c;padding:10px 14px;font-family:Consolas,"Segoe UI",monospace}
#parseProgress{height:10px;background:#101010;border:2px solid #0b0b0b;box-shadow:inset 0 0 0 1px #4a4a4a;margin-top:8px}
#parseProgress .pp-bar{background:#7bc043}
.card{background:#3a3a3a;border:2px solid #0c0c0c;box-shadow:inset 0 0 0 1px #585858;padding:14px;margin-bottom:12px}
.drop-zone{background:#2b2b2b;border:3px dashed #0a0a0a;box-shadow:inset 0 0 0 2px #5e5e5e;color:#c9c9c9;padding:26px 18px}
.drop-zone:hover{background:#313131;transform:none;box-shadow:inset 0 0 0 2px #ffd93b;border-color:#0a0a0a}
.drop-zone.drag-over{background:#2a3a18;box-shadow:inset 0 0 0 2px #7bc043;border-color:#0a0a0a}
.drop-zone.has-file{background:#3a2c0c;box-shadow:inset 0 0 0 2px #f2b632}
.drop-zone .file-name{color:#ffd93b;text-shadow:2px 2px 0 #141414}
.drop-zone .file-size{color:#9a9a9a}
.drop-zone svg{stroke:#8a8a8a}
.row label{color:#c4c4c4;text-shadow:1px 1px 0 #141414}
.row input[type=text],.row input[type=number],.row select{background:#131313;border:2px solid #000;box-shadow:inset 0 0 0 1px #6a6a6a;color:#f0f0f0;padding:6px 8px}
.row input:focus,.row select:focus{border-color:#ffd93b;box-shadow:inset 0 0 0 1px #ffd93b}
.row input[type=checkbox]{appearance:none;-webkit-appearance:none;width:16px;height:16px;margin:0;background:#131313;border:2px solid #000;box-shadow:inset 0 0 0 1px #6a6a6a;display:inline-block;vertical-align:middle;cursor:pointer}
.row input[type=checkbox]:checked{background:#7bc043;box-shadow:inset 0 0 0 2px #131313}
.btn{position:relative;border-radius:0!important;border:2px solid #000!important;background:#7a7a7a;color:#fff;font-weight:700;text-shadow:1px 1px 0 #000;box-shadow:inset 0 2px 0 rgba(255,255,255,.4),inset 0 -3px 0 rgba(0,0,0,.35);padding:9px 18px;overflow:hidden}
.btn:hover:not(:disabled){filter:brightness(1.18);transform:none}
.btn:active:not(:disabled){transform:translateY(2px)!important;box-shadow:inset 0 3px 0 rgba(0,0,0,.4)}
.btn:active:not(:disabled)::after{border-radius:0}
.btn:disabled{filter:grayscale(1) brightness(.55)}
.btn-preview{background:#b06fd6}
.btn-primary{background:#5a9e3c}
.btn-success{background:#2ba6a6}
.btn-danger{background:#cf4a3e}
.pv-link{border:none!important;background:none!important;box-shadow:none!important;padding:0!important;margin:0!important;font-size:12px!important;font-weight:400!important;color:#9a9a9a!important;text-shadow:none!important;text-decoration:underline!important;text-underline-offset:3px;cursor:pointer;display:inline-block;line-height:1.6}
.pv-link:hover{color:#c9c9c9!important}
.pv-link:disabled{opacity:.45;cursor:default}
.tabs{background:#1f1f1f;border:2px solid #0c0c0c;box-shadow:inset 0 0 0 1px #4a4a4a;padding:4px;gap:2px;margin-top:12px}
.tab{border:2px solid transparent;color:#b0b0b0;padding:7px 14px}
.tab:hover{background:#444;color:#fff}
.tab.active{background:transparent!important;color:#ffd93b;box-shadow:none}
.box{background:#101418;border:2px solid #000;box-shadow:inset 0 0 0 2px #2e2e2e,inset 0 0 0 5px #191919;color:#cfe9c0;font-family:Consolas,"Courier New",monospace}
.box-header span{color:#b9b9b9;font-family:"Segoe UI",monospace;letter-spacing:.5px}
.copy-btn{background:#3a3a3a;border:2px solid #000;color:#ffd93b;box-shadow:inset 0 2px 0 rgba(255,255,255,.18);text-shadow:1px 1px 0 #000;padding:4px 14px}
.copy-btn:hover{background:#525252;color:#ffe066}
.sens-area{background:#101418;border:2px solid #000;box-shadow:inset 0 0 0 1px #454545;color:#e0e0e0}
.sens-area:focus{border-color:#ffd93b;box-shadow:inset 0 0 0 2px #ffd93b}
#loadingOverlay{background:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),repeating-linear-gradient(45deg,#222 0 16px,#1f1f1f 16px 32px);background-size:24px 24px,24px 24px,auto}
.splash-title{background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;color:#ffd93b;-webkit-text-fill-color:#ffd93b;text-shadow:4px 4px 0 #161616;animation:none!important;filter:none!important;letter-spacing:3px;font-weight:900}
.splash-sub{color:#c9c9c9;text-shadow:2px 2px 0 #161616}
.splash-hint{color:#8a8a8a;text-shadow:1px 1px 0 #161616}
#loadingOverlay .loading-text{color:#b8b8b8}
.cube-scene{perspective:600px}
.cube-face{background:repeating-conic-gradient(#8a8a8a 0 25%,#6e6e6e 0 50%) 0 0/20px 20px;border:2px solid #000;box-shadow:none}
.cf-top{background:repeating-conic-gradient(#7bc043 0 25%,#5d9a2f 0 50%) 0 0/20px 20px}
.cf-bottom{background:repeating-conic-gradient(#7a5a3a 0 25%,#63482d 0 50%) 0 0/20px 20px}
.ls-dot{background:#4a4a4a}
.ls-dot.act{background:#ffd93b;box-shadow:none}
.ls-dot.ok{background:#7bc043;box-shadow:none}
.ls-bar{background:#7bc043}
.ls-bar-wrap{background:#131313;border:1px solid #000}
#loadingOverlay .progress-wrap{background:#131313;border:1px solid #000}
#loadingOverlay .progress-bar{background:#7bc043}
.cv-panel{border:2px solid #0c0c0c;box-shadow:inset 0 0 0 1px #4a4a4a,0 8px 0 #101010;background:#2c2c2c}
.cv-panel .cv-name{color:#eee}
.cv-panel .cv-track{background:#111;border:1px solid #000;height:8px}
.cv-panel .cv-fill{background:#ffd93b;animation:none!important}
.cv-panel .cv-pct{color:#b8b8b8;font-family:Consolas,monospace}
#toast{border:2px solid #000;box-shadow:inset 0 0 0 2px #3a3a3a,0 6px 0 #101010;background:#262626}
#toast.success{border-color:#7bc043;color:#9be16b}
#toast.error{border-color:#cf4a3e;color:#ff8383}
#toast.info{border-color:#4a9dff;color:#7cc0ff}
a{color:#7cc0ff}
/* ---------- 自绘控件：去掉浏览器默认外观 ---------- */
*{-webkit-tap-highlight-color:transparent}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:#fff;-webkit-box-shadow:0 0 0 1000px #131313 inset!important;box-shadow:0 0 0 1000px #131313 inset!important}
.row input[type=text],.row input[type=number],.row select,.sens-area{caret-color:#ffd93b}
.btn:focus-visible,.copy-btn:focus-visible,.px-sel-box:focus-visible,.px-sel-opt:focus-visible,.sens-area:focus-visible,.row input:focus-visible,.row select:focus-visible{outline:2px solid #ffd93b!important;outline-offset:1px}
/* 复选框：MC 方块勾 */
.row input[type=checkbox]{position:relative;width:15px;height:15px;margin:0;background:#cfcfcf;border:2px solid #0a0a0a;box-shadow:inset -2px -2px 0 #7a7a7a,inset 2px 2px 0 #fff;display:inline-block;vertical-align:-2px;cursor:pointer}
.row input[type=checkbox]:checked{background:#7bc043;box-shadow:inset -2px -2px 0 #4f7f2a,inset 2px 2px 0 #a5e070}
.row input[type=checkbox]::after{content:'';position:absolute;left:2px;top:-1px;width:5px;height:9px;border:solid #101418;border-width:0 3px 3px 0;transform:rotate(45deg);opacity:0}
.row input[type=checkbox]:checked::after{opacity:1}
/* 自绘像素下拉框 */
.px-sel{position:relative;display:inline-block;vertical-align:middle}
.px-sel-box{display:inline-flex;align-items:center;gap:8px;background:#131313;color:#f0f0f0;border:2px solid #000;box-shadow:inset 0 0 0 1px #6a6a6a;padding:6px 10px;font-size:12px;cursor:pointer;min-width:84px;white-space:nowrap}
.px-sel-box::after{content:'';border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #ffd93b;margin-left:auto}
.px-sel.open .px-sel-box{border-color:#ffd93b;box-shadow:inset 0 0 0 1px #ffd93b}
.px-sel-menu{display:none;position:absolute;top:calc(100% + 5px);left:0;z-index:120;min-width:100%;white-space:nowrap;background:#333;border:2px solid #000;box-shadow:inset 0 0 0 1px #6a6a6a,0 6px 0 #141414;padding:2px}
.px-sel.open .px-sel-menu{display:block}
.px-sel-opt{display:block;width:100%;text-align:left;background:none;border:none;color:#eee;font-size:12px;padding:7px 14px;cursor:pointer}
.px-sel-opt:hover{background:#4a4a4a;color:#fff}
.px-sel-opt.on{background:#3f6d1e;color:#ffd93b}
.px-sel-opt.on::before{content:'>';margin-right:7px;color:#ffd93b}
/* 像素字体栈：西文/数字走 pxl，简体中文走 px，字符缺失回退 font（原字体） */
body,.wm-footer,.header h1,.header .sub,.header .badge,.hm,#status,.card,.drop-zone,.drop-zone .file-name,.drop-zone .file-size,.row,.row label,.btn,.copy-btn,.tabs,.tab,.box,.box-header,.box-header span,.sens-area,.px-sel,.px-sel-box,.px-sel-opt,.cv-panel,.cv-name,.cv-pct,.splash-title,.splash-sub,.splash-hint,.ls-bar,.ls-bar-wrap,.loading-text,a,button,input,select,textarea,option{font-family:'pxl','px','font','Segoe UI','Microsoft YaHei',sans-serif!important}
/* ---------- 系统级平滑过渡：入场 ease-out、退场 ease-in，禁用匀速 ---------- */
.tabs .tab{transition:color .15s cubic-bezier(.2,0,.2,1),background-color .15s cubic-bezier(.2,0,.2,1),box-shadow .15s cubic-bezier(.2,0,.2,1),border-color .15s cubic-bezier(.2,0,.2,1)}
.tab-content.active{animation:pxContentIn .22s cubic-bezier(.2,0,.2,1) both}
#dlArea{animation:pxContentIn .26s cubic-bezier(.2,0,.2,1) both}
@keyframes pxContentIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.btn,.copy-btn,.px-sel-box,.px-sel-opt{transition:filter .15s cubic-bezier(.2,0,.2,1),background-color .15s cubic-bezier(.2,0,.2,1),color .15s cubic-bezier(.2,0,.2,1),box-shadow .12s ease-out,opacity .15s cubic-bezier(.2,0,.2,1),transform .32s cubic-bezier(.34,1.56,.64,1)}
.btn:active:not(:disabled){transition-duration:40ms}
.drop-zone{transition:background-color .18s cubic-bezier(.2,0,.2,1),border-color .18s cubic-bezier(.2,0,.2,1),box-shadow .18s cubic-bezier(.2,0,.2,1)}
#toast{transition:opacity .18s ease-in,transform .24s cubic-bezier(.2,0,.2,1)}
/* 自绘下拉菜单 入场/退场动画 */
.px-sel-menu{transform-origin:top left;will-change:transform,opacity}
.px-sel.open .px-sel-menu{animation:pxMenuIn .2s cubic-bezier(.2,0,.2,1) both}
.px-sel.closing .px-sel-menu{display:block;pointer-events:none;animation:pxMenuOut .15s ease-in both}
@keyframes pxMenuIn{from{opacity:0;transform:translateY(-6px) scale(.97)}to{opacity:1;transform:none}}
@keyframes pxMenuOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-5px) scale(.97)}}
/* ---------- 高级反馈：按压缩回弹 / 标签游标滑移 / 图标弹性 ---------- */
/* 按下即收缩（8% 量级），松手用 overshoot 曲线弹开回原位 */
.btn:active:not(:disabled){transform:translateY(2px) scale(.93,.88)!important;box-shadow:inset 0 3px 0 rgba(0,0,0,.4)}
.copy-btn:active{transform:translateY(1px) scale(.94)}
.px-sel-box:active{transform:scale(.96)}
.copy-btn:active,.px-sel-box:active{transition:transform .09s ease-out,filter .09s ease-out,color .12s ease-out,background-color .12s ease-out,box-shadow .09s ease-out}
/* 标签金色游标：点击后平滑变速滑到目标标签 */
.px-tab-ind{position:absolute;bottom:6px;left:0;width:0;height:3px;background:#ffd93b;box-shadow:0 0 10px rgba(255,217,59,.45);transition:left .34s cubic-bezier(.55,.06,.32,.94),width .34s cubic-bezier(.55,.06,.32,.94);pointer-events:none;z-index:0}
/* 顶部图标 hover 弹性放大回弹 */
.logo-frame{transition:transform .34s cubic-bezier(.34,1.56,.64,1),box-shadow .3s cubic-bezier(.2,0,.2,1)}
.logo-frame:hover{transform:scale(1.1) rotate(-4deg)}

/* ===== 补充：当前 index.html 用到的额外类（.bak 原用内联 style 实现） ===== */
.ic{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:1}
.ic svg{display:block}
.dz-ic{display:inline-flex;align-items:center;justify-content:center;margin-bottom:6px}
.dz-ic svg{display:block;stroke:#8a8a8a}
.bili{color:#fb7299;text-decoration:none;display:flex;align-items:center;gap:4px}
.pv-head{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:8px}
#dlArea{display:none;margin-top:8px;animation:pxContentIn .26s cubic-bezier(.2,0,.2,1) both}
#dlArea.show{display:block}
#fileInfo{display:none;margin-top:4px}
#nameLabel,#armorstandName,#tiltGroup{display:none}
#tiltGroup label{margin-left:8px}
#clearBtn{margin-left:auto}
#biliTab{margin-left:auto}
#dlLink{text-decoration:none}
.visit-badge{margin-top:10px;display:inline-block;font-size:12px;color:#b9b9b9;letter-spacing:1px}
.visit-badge b{color:#fff;font-size:15px;font-variant-numeric:tabular-nums;margin:0 2px}
.box-lg{height:380px}.box-sm{height:150px}
#infoText{font-size:11px;color:#9a9a9a;margin-left:8px}
#rmMsg{margin-left:12px;font-size:13px;color:#69db7c}
#pvStatus{font-size:12px;color:#aaa;min-height:18px}
/* ===== 加载层：真实进度条（像素风化，方块/像素感） ===== */
.lo-box{display:flex;flex-direction:column;align-items:center;gap:10px;background:#1b1b1b;border:3px solid #000;box-shadow:inset 0 2px 0 rgba(255,255,255,.12),0 8px 0 #000;padding:20px 32px;min-width:330px;image-rendering:pixelated}
.lo-num{font-size:44px;font-weight:900;color:#ffd93b;text-shadow:3px 3px 0 #000;line-height:1;font-variant-numeric:tabular-nums}
.lo-num b{font-size:20px;margin-left:2px;text-shadow:2px 2px 0 #000}
.lo-bar{position:relative;width:100%;height:6px;background:#0a0a0a;border:2px solid #000;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.7)}
.lo-bar-lg{height:18px;width:300px}
.lo-fill{height:100%;width:0%;background:#ffd93b;background-image:linear-gradient(180deg,rgba(255,255,255,.4),rgba(255,255,255,0) 55%);box-shadow:0 0 8px rgba(255,217,59,.5);transition:width .25s ease-out}
.lo-msg{font-size:13px;color:#cfcfcf;min-height:16px;text-align:center;text-shadow:1px 1px 0 #000}
.lo-list{width:300px;display:flex;flex-direction:column;gap:6px;margin-top:2px}
.lo-it{display:flex;flex-direction:column;gap:2px}
.lo-row{display:flex;align-items:center;gap:7px;font-size:12px;color:#bdbdbd}
.lo-dot{width:9px;height:9px;background:#444;flex-shrink:0;border:1px solid #000;box-shadow:inset 0 1px 0 rgba(255,255,255,.2)}
.lo-dot.act{background:#ffd93b}
.lo-dot.ok{background:#7bc043;box-shadow:0 0 6px #7bc043}
.lo-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lo-pct{color:#ffd93b;text-shadow:1px 1px 0 #000;font-variant-numeric:tabular-nums;min-width:36px;text-align:right}
