/* Voxxaa STORE v91 : halaman Tools > Downloader Video */
.tl{max-width:680px;margin:0 auto;padding:44px 0 120px}
.tl-back{display:inline-block;margin-bottom:14px;color:var(--mute);text-decoration:none;font-weight:700;font-size:14px}
.tl-back:hover{color:var(--text)}
.tl-cat{display:inline-block;margin:0 0 8px 10px;padding:3px 10px;border-radius:999px;border:1px solid rgba(var(--hot-rgb),.55);color:var(--acc-hot);font-size:11.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.tl h1{font-family:var(--display);font-size:clamp(34px,8vw,52px);line-height:1;margin:0 0 8px;letter-spacing:.01em}
.tl-sub{margin:0 0 20px;color:var(--mute);line-height:1.55}
.tl-form{padding:16px;display:grid;gap:10px;margin-bottom:16px}
.tl-form label{font-size:13px;color:var(--mute);font-weight:700}
.tl-row{display:flex;gap:8px}
.tl-in{flex:1;min-width:0;min-height:48px;padding:10px 14px;border-radius:12px;border:1px solid var(--glass-b);background:rgba(0,0,0,.25);color:var(--text);font:inherit;font-size:16px;box-sizing:border-box}
.tl-in:focus{outline:2px solid var(--acc-hot);outline-offset:1px}
.tl-paste{flex:none;width:48px;min-height:48px;border-radius:12px;border:1px solid var(--glass-b);background:var(--glass);color:var(--text);display:grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.tl-paste:active{transform:scale(.95)}
.tl svg{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tl-err{color:var(--acc-hot);font-size:13px;font-weight:700;line-height:1.45}
.tl-err:empty{display:none}
.tl-go{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:50px;border:0;border-radius:14px;background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;font:inherit;font-weight:800;font-size:15px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .15s,filter .2s}
.tl-go:hover{filter:brightness(1.1)}
.tl-go:active{transform:scale(.98)}
.tl-go:disabled{opacity:.7;cursor:progress}
.tl-plat{display:flex;flex-wrap:wrap;gap:6px}
.tl-plat span{padding:4px 10px;border-radius:999px;border:1px solid var(--glass-b);background:var(--glass);color:var(--mute);font-size:12px;font-weight:700}
.tl-card{padding:16px;display:grid;gap:12px;margin-bottom:16px}
.tl-meta{display:flex;gap:12px;align-items:flex-start}
.tl-th{width:84px;height:112px;object-fit:cover;border-radius:12px;background:rgba(0,0,0,.3);flex:none}
.tl-mt{display:grid;gap:4px;min-width:0}
.tl-badge{justify-self:start;padding:2px 9px;border-radius:999px;background:rgba(var(--acc-rgb),.3);border:1px solid rgba(var(--hot-rgb),.6);font-size:11.5px;font-weight:800}
.tl-title{font-size:15px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.tl-mt small{color:var(--mute);font-size:12.5px}
.tl-sec{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-top:2px}
.tl-btns{display:grid;gap:8px}
.tl-dl{display:flex;align-items:center;gap:12px;min-height:54px;padding:10px 14px;border-radius:14px;border:1px solid var(--glass-b);background:var(--glass);color:var(--text);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:transform .15s,border-color .2s}
.tl-dl:hover{border-color:rgba(var(--hot-rgb),.6)}
.tl-dl:active{transform:scale(.98)}
.tl-dl span{display:grid;min-width:0}.tl-dl b{font-size:14.5px}.tl-dl small{color:var(--mute);font-size:12px}
.tl-dl.main{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;color:#fff}
.tl-dl.main small{color:rgba(255,255,255,.82)}
.tl-imgs{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.tl-hint{color:var(--mute);font-size:12.5px;line-height:1.5}
.tl-hint a{color:var(--text);font-weight:700}
.tl-note{margin:10px 0 0;color:var(--mute);font-size:12px;line-height:1.55}
.tl-load{grid-auto-flow:column;justify-content:start;align-items:center;gap:6px;color:var(--mute);font-size:14px}
.tl-load i{width:8px;height:8px;border-radius:50%;background:var(--acc-hot);animation:tlDot 1.1s infinite ease-in-out}
.tl-load i:nth-child(2){animation-delay:.15s}.tl-load i:nth-child(3){animation-delay:.3s}
.tl-load span{margin-left:6px}
@keyframes tlDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
@media(min-width:720px){.tl{padding-top:56px}.tl-btns:not(.tl-imgs){grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}
@media(prefers-reduced-motion:reduce){.tl-go,.tl-dl{transition:none}.tl-load i{animation:none;opacity:.8}}

/* v105 : Pembuat QR dan Pembaca QR */
.qr-tabs{display:flex;flex-wrap:wrap;gap:6px}
.qr-tab{padding:8px 14px;min-height:40px;border-radius:999px;border:1px solid var(--glass-b);background:var(--glass);color:var(--mute);font:inherit;font-size:13.5px;font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.qr-tab.on{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;color:#fff}
.qr-fields{display:grid;gap:10px}
.qr-f{display:grid;gap:6px}
.qr-ta{min-height:88px;resize:vertical;line-height:1.45}
select.tl-in{appearance:auto}
.qr-opt{border:1px solid var(--glass-b);border-radius:12px;padding:10px 12px}
.qr-opt summary{cursor:pointer;font-size:13px;font-weight:800;color:var(--mute)}
.qr-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:10px}
.qr-grid label{display:grid;gap:5px;font-size:12.5px}
.qr-grid input[type=color]{width:100%;height:42px;padding:2px;border-radius:10px;border:1px solid var(--glass-b);background:rgba(0,0,0,.25)}
.qr-grid select{min-height:42px;padding:6px 8px;border-radius:10px;border:1px solid var(--glass-b);background:rgba(0,0,0,.25);color:var(--text);font:inherit;font-size:14px}
.qr-warn{display:block;margin-top:8px;color:var(--acc-hot);font-size:12.5px;font-weight:700}
.qr-warn:empty{display:none}
.qr-out{justify-items:center;text-align:center}
.qr-prev{width:min(100%,320px);aspect-ratio:1;border-radius:14px;overflow:hidden;box-shadow:0 8px 30px rgba(0,0,0,.35)}
.qr-prev svg{display:block;width:100%;height:100%}
.qr-meta{color:var(--mute);font-size:12px;overflow-wrap:anywhere;max-width:100%}
.qr-btns{width:100%;text-align:left}
.qr-empty{display:grid;justify-items:center;gap:10px;padding:26px 8px;color:var(--mute);font-size:14px}
.qr-empty svg{width:52px;height:52px;opacity:.6}
.qs-view{position:relative;border-radius:16px;overflow:hidden;background:#000;aspect-ratio:1;max-height:420px;width:100%}
.qs-view[hidden]{display:none}
.qs-view video{width:100%;height:100%;object-fit:cover;display:block}
.qs-frame{position:absolute;inset:14%;border:3px solid rgba(255,255,255,.9);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.38);pointer-events:none}
.qs-line{position:absolute;left:16%;right:16%;height:2px;background:var(--acc-hot);box-shadow:0 0 12px var(--acc-hot);top:16%;animation:qsScan 2.2s infinite ease-in-out;pointer-events:none}
@keyframes qsScan{0%,100%{top:16%}50%{top:82%}}
.qs-idle{display:grid;justify-items:center;gap:10px;padding:26px 8px;color:var(--mute);font-size:14px;border:1px dashed var(--glass-b);border-radius:16px}
.qs-idle[hidden]{display:none}
.qs-idle svg{width:46px;height:46px;opacity:.65}
.qs-btns{display:grid;gap:10px}
.qs-file{cursor:pointer;background:var(--glass);border:1px solid var(--glass-b);color:var(--text)}
.tl-go.on{background:linear-gradient(135deg,#6b6b6b,#3a3a3a)}
.qs-res{text-align:left}
.qs-kv{display:grid;gap:2px}.qs-kv small{color:var(--mute);font-size:12px}.qs-kv b{overflow-wrap:anywhere}
.qs-text{padding:12px;border-radius:12px;border:1px solid var(--glass-b);background:rgba(0,0,0,.25);font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow:auto;user-select:text;-webkit-user-select:text}
button.tl-dl{font:inherit;text-align:left;cursor:pointer}
@media(min-width:720px){.qs-btns{grid-template-columns:1fr 1fr}.qr-grid{grid-template-columns:repeat(4,1fr)}}
@media(prefers-reduced-motion:reduce){.qs-line{animation:none;top:50%}}

/* v106 : Kompres Gambar */
.iz-drop{display:grid;justify-items:center;gap:6px;padding:26px 12px;border:2px dashed var(--glass-b);border-radius:16px;cursor:pointer;text-align:center;transition:border-color .2s,background .2s;-webkit-tap-highlight-color:transparent}
.iz-drop:hover,.iz-drop.on,.iz-drop:focus-visible{border-color:var(--acc-hot);background:rgba(var(--hot-rgb),.08);outline:none}
.iz-drop svg{width:42px;height:42px;opacity:.75}.iz-drop b{font-size:15px}.iz-drop small{color:var(--mute);font-size:12.5px}
.iz-set{display:grid;gap:12px}.iz-set[hidden]{display:none}
.iz-f{display:grid;gap:6px}
.iz-f input[type=range]{width:100%;accent-color:var(--acc-hot);height:32px}
.iz-pre{display:flex;flex-wrap:wrap;gap:6px}
.iz-pre button{padding:7px 13px;min-height:36px;border-radius:999px;border:1px solid var(--glass-b);background:var(--glass);color:var(--mute);font:inherit;font-size:13px;font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.iz-pre button.on{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;color:#fff}
.iz-hint{color:var(--mute);font-size:12.5px;line-height:1.45}
.iz-sum{grid-auto-flow:row;gap:10px}
.iz-sum>div:first-child{display:grid;gap:3px}.iz-sum small{color:var(--mute);font-size:12.5px}.iz-sum b{font-size:18px}
.iz-pct{justify-self:start;display:inline-block;padding:1px 8px;border-radius:999px;background:rgba(40,200,120,.18);border:1px solid rgba(40,200,120,.5);color:#5fe3a0;font-size:12px;font-weight:800}
.iz-pct.up{background:rgba(255,160,40,.15);border-color:rgba(255,160,40,.5);color:#ffbf66}
.iz-pend{color:var(--mute)}
.iz-list{display:grid;gap:10px}
.iz-it{grid-auto-flow:column;grid-template-columns:64px 1fr auto;align-items:center;gap:12px;margin-bottom:0;padding:12px}
.iz-th{width:64px;height:64px;object-fit:cover;border-radius:10px;background:rgba(0,0,0,.3)}
.iz-mt{display:grid;gap:3px;min-width:0}.iz-mt small{color:var(--mute);font-size:12.5px}.iz-mt small b{color:var(--text)}
.iz-nm{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iz-bad{color:var(--acc-hot)!important;font-weight:700}.iz-note{color:#ffbf66!important}
.iz-wait{display:flex;align-items:center;gap:5px}
.iz-wait i{width:6px;height:6px;border-radius:50%;background:var(--acc-hot);animation:tlDot 1.1s infinite ease-in-out}.iz-wait i:nth-child(2){animation-delay:.15s}.iz-wait i:nth-child(3){animation-delay:.3s}
.iz-ac{display:flex;gap:6px}
.iz-b{width:42px;height:42px;border-radius:12px;border:1px solid var(--glass-b);background:var(--glass);color:var(--text);display:grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.iz-b:first-child:not(:last-child){background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;color:#fff}
.iz-b svg{width:20px;height:20px}
@media(prefers-reduced-motion:reduce){.iz-wait i{animation:none;opacity:.8}}

/* ---------- v110 : Voxxa AI (#/voxxa-ai) ---------- */
.vai{max-width:760px}
.vai-box{padding:0;display:grid;grid-template-rows:auto 1fr auto auto auto;overflow:hidden;margin-bottom:16px}
.vai-head{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--glass-b)}
.vai-head>div{display:grid;min-width:0;flex:1}
.vai-head b{font-size:15px}
.vai-head small{color:var(--mute);font-size:12px}
.vai-av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff}
.vai-av svg{width:22px;height:22px}
.vai-busy .vai-av{animation:vaiPulse 1.2s infinite ease-in-out}
@keyframes vaiPulse{50%{transform:scale(1.08);box-shadow:0 0 0 6px rgba(var(--hot-rgb),.18)}}
.vai-new{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 12px;border-radius:999px;border:1px solid var(--glass-b);background:var(--glass);color:var(--mute);font:inherit;font-size:12.5px;font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vai-new svg{width:16px;height:16px}
.vai-new:hover{color:var(--text);border-color:rgba(var(--hot-rgb),.6)}
.vai-log{display:flex;flex-direction:column;gap:10px;padding:14px;min-height:240px;max-height:min(62vh,560px);overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth}
.vai-m{display:flex;flex-direction:column;gap:4px;max-width:88%}
.vai-m.u{align-self:flex-end;align-items:flex-end}
.vai-m.a{align-self:flex-start;align-items:flex-start}
.vai-b{padding:10px 14px;border-radius:16px;line-height:1.55;font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;max-width:100%;box-sizing:border-box}
.vai-m.u .vai-b{background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;border-bottom-right-radius:5px}
.vai-m.a .vai-b{background:rgba(255,255,255,.06);border:1px solid var(--glass-b);border-bottom-left-radius:5px}
.vai-b code{padding:1px 6px;border-radius:6px;background:rgba(0,0,0,.35);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.92em}
.vai-pre{position:relative;margin:8px 0;padding:12px 14px;border-radius:12px;background:rgba(0,0,0,.45);border:1px solid var(--glass-b);overflow-x:auto;white-space:pre;-webkit-overflow-scrolling:touch}
.vai-pre[data-lang]::before{content:attr(data-lang);display:block;margin-bottom:6px;color:var(--mute);font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.vai-pre code{padding:0;background:none;font-size:13px;line-height:1.55}
.vai-cp{display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:3px 10px;border-radius:999px;border:1px solid var(--glass-b);background:transparent;color:var(--mute);font:inherit;font-size:11.5px;font-weight:800;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vai-cp svg{width:14px;height:14px}
.vai-cp:hover{color:var(--text)}
.vai-typing .vai-b{display:flex;align-items:center}
.vai-sug{display:flex;flex-wrap:wrap;gap:8px;padding:0 14px 12px}
.vai-sug[hidden]{display:none}
.vai-sug button{padding:8px 12px;border-radius:999px;border:1px solid var(--glass-b);background:var(--glass);color:var(--text);font:inherit;font-size:13px;font-weight:700;text-align:left;line-height:1.35;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vai-sug button:hover{border-color:rgba(var(--hot-rgb),.6)}
.vai-sug button:active{transform:scale(.97)}
.vai-err{padding:0 14px;color:var(--acc-hot);font-size:13px;font-weight:700;line-height:1.45}
.vai-err:empty{display:none}
.vai-err:not(:empty){padding-bottom:8px}
.vai-form{display:flex;gap:8px;align-items:flex-end;padding:12px 14px;border-top:1px solid var(--glass-b)}
.vai-in{resize:none;max-height:160px;line-height:1.45;overflow-y:auto}
.vai-send{flex:none;width:48px;height:48px;border:0;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,var(--a1),var(--a2));color:#fff;cursor:pointer;-webkit-tap-highlight-color:transparent}
.vai-send svg{width:22px;height:22px}
.vai-send:hover{filter:brightness(1.1)}
.vai-send:active{transform:scale(.95)}
.vai-send:disabled{opacity:.6;cursor:progress}
@media (min-width:900px){.vai-log{max-height:min(64vh,620px)}.vai-m{max-width:80%}}
@media (prefers-reduced-motion:reduce){.vai-busy .vai-av{animation:none}.vai-log{scroll-behavior:auto}}

/* v129: PNG ke Link */
.pl-list{display:grid;gap:10px;margin-top:14px}
.pl-it{position:relative;grid-template-columns:64px 1fr 36px;align-items:center}
.pl-it .iz-mt{min-width:0}
.pl-x{width:36px;height:36px;display:grid;place-items:center;border:0;border-radius:10px;background:transparent;color:var(--mute);cursor:pointer}
.pl-x:hover{background:var(--glass-2);color:var(--text)}
.pl-x svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.pl-link{grid-column:1/-1;display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}
.pl-link .tl-in{flex:1 1 100%;min-height:44px;font-size:14px}
.pl-b{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--glass-b);border-radius:12px;background:rgba(255,255,255,.06);color:var(--text);font:inherit;font-weight:700;font-size:14px;text-decoration:none;cursor:pointer}
.pl-b:first-of-type{background:linear-gradient(135deg,var(--a1),var(--a2));border-color:transparent;color:#fff}
.pl-b svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pl-bad{color:#ff8a8a!important}
