.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}:root{--bg:#eee;--bg-elevated:#fff;--bg-hover:#f5f5f5;--border:#ddd;--text:#333;--text-dim:#777;--primary:#4a90e2;--primary-soft:#4a90e21a;--danger:#d9534f;--radius:.06rem;--shadow:0 .01rem .03rem #00000014}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#c1c1c1 transparent}::-webkit-scrollbar{width:.08rem;height:.08rem}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#c1c1c1 padding-box content-box;border:.02rem solid #0000;border-radius:.04rem}::-webkit-scrollbar-thumb:hover{background:#a1a1a1 padding-box content-box}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-button{width:0;height:0;display:none}html,body,#root{background:var(--bg);min-height:100%;color:var(--text);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:.14rem;line-height:1.5}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}.app{flex-direction:column;min-height:100vh;display:flex}.app__header{background:var(--bg-elevated);border-bottom:.01rem solid var(--border);z-index:100;align-items:center;gap:.24rem;height:.56rem;padding:0 .24rem;font-size:.18rem;display:flex;position:sticky;top:0}.app__logo{color:var(--primary);align-items:center;gap:.08rem;font-weight:600;display:flex}.app__nav{gap:.04rem;display:flex}.app__nav a{color:var(--text-dim);border-radius:.06rem;padding:.06rem .12rem;transition:all .15s}.app__nav a:hover{color:var(--text);background:var(--bg-hover)}.app__nav a.active{color:var(--primary);background:var(--primary-soft)}.app__main{flex:1;width:100%;margin:0 auto}.app__actions{align-items:center;gap:.08rem;margin-left:auto;display:flex}.dashboard{position:relative}.btn{border:.01rem solid var(--border);background:var(--bg-elevated);color:var(--text);cursor:pointer;border-radius:.08rem;align-items:center;gap:.06rem;padding:.07rem .14rem;font-size:.14rem;transition:transform 80ms,filter .15s,background .15s,box-shadow .15s;display:inline-flex}.btn:hover{background:var(--bg-hover)}.btn:active{filter:brightness(.95);transform:scale(.96)}.btn--primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn--primary:hover{filter:brightness(1.1)}.btn--primary:active{filter:brightness(.9)}.btn--ghost{background:0 0}.rgl-card{width:100%;height:100%;position:relative}.rgl-card__remove{border:.01rem solid var(--border);width:.2rem;height:.2rem;color:var(--text-dim);z-index:5;background:#fff;border-radius:.04rem;justify-content:center;align-items:center;display:none;position:absolute;top:.06rem;right:.06rem}.rgl-card__remove:hover{background:var(--danger);border-color:var(--danger);color:#fff}.rgl-card:hover .rgl-card__remove{display:flex}.dashboard .mini-tool__header{cursor:move}.mini-tool{background:var(--bg-elevated);border:.01rem solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.08rem;height:100%;padding:.1rem .12rem;display:flex;overflow:hidden}.mini-tool__header{flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.mini-tool__title{color:var(--text);align-items:center;gap:.06rem;font-size:.14rem;font-weight:600;display:flex}.mini-tool__expand{color:var(--text-dim);border-radius:.04rem;padding:.02rem;display:flex}.mini-tool__expand:hover{color:var(--primary);background:var(--primary-soft)}.mini-tool__input{border:.01rem solid var(--border);min-height:.4rem;color:var(--text);resize:none;background:#fafafa;border-radius:.04rem;flex:1;padding:.08rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.14rem}.mini-tool__input:focus{border-color:var(--primary);outline:none}.mini-tool__bar{align-items:center;gap:.08rem;display:flex}.mini-tool__bar button{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:.04rem;padding:.04rem .12rem;font-size:.14rem;transition:transform 80ms,filter .15s}.mini-tool__bar button:hover{filter:brightness(1.1)}.mini-tool__bar button:active{filter:brightness(.9);transform:scale(.95)}.mini-tool__error{color:var(--danger);font-size:.11rem}.mini-tool__output{border:.01rem solid var(--border);min-height:.4rem;color:var(--text);resize:none;background:#fafafa;border-radius:.04rem;flex:1;margin:0;padding:.08rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.14rem;overflow:auto}.mini-tool__output:focus{border-color:var(--primary);outline:none}.mini-tool__placeholder{color:var(--text-dim);flex-direction:column;flex:1;justify-content:center;gap:.04rem;font-size:.14rem;display:flex}.mini-tool__placeholder p{margin:0}.mini-tool__soon{opacity:.6;font-size:.11rem}.tool-card{background:var(--bg-elevated);border:.01rem solid var(--border);border-radius:var(--radius);align-items:center;gap:.14rem;height:100%;padding:.18rem;transition:all .15s;display:flex}.tool-card:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-.02rem)}.tool-card__icon{background:var(--primary-soft);width:.42rem;height:.42rem;color:var(--primary);border-radius:.1rem;flex-shrink:0;justify-content:center;align-items:center;display:flex}.tool-card__body{flex:1;min-width:0}.tool-card__body h3{margin:0 0 .04rem;font-size:.14rem;font-weight:600}.tool-card__body p{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.14rem;overflow:hidden}.diff-inputs{grid-template-columns:1fr 1fr;gap:.06rem;display:grid}.diff-inputs .mini-tool__input{min-height:.3rem;font-size:.12rem}.diff-result{border:.01rem solid var(--border);background:#fafafa;border-radius:.04rem;flex:1;min-height:.4rem;max-height:1.2rem;padding:.06rem .08rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.12rem;line-height:1.5;overflow:auto}.diff-empty{color:var(--text-dim)}.diff-line{white-space:pre-wrap;word-break:break-all;border-radius:.02rem;margin:0 -.04rem;padding:.01rem .04rem}.diff-line--add{color:#1a7f37;background:#e6ffec}.diff-line--add:before{content:"+ "}.diff-line--del{color:#cf222e;background:#ffebe9;text-decoration:line-through}.diff-line--del:before{content:"- "}.diff-full{border:.01rem solid var(--border);background:#fafafa;border-radius:.04rem;max-height:60vh;margin-top:.2rem;padding:.12rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.13rem;line-height:1.6;overflow:auto}.qr-preview{border:.01rem solid var(--border);background:#fafafa;border-radius:.04rem;flex:1;justify-content:center;align-items:center;min-height:.6rem;padding:.08rem;display:flex;overflow:hidden}.qr-preview img{max-width:100%;max-height:100%;image-rendering:pixelated}.qr-tabs{background:var(--bg-elevated);border:.01rem solid var(--border);border-radius:.06rem;margin-bottom:.2rem;padding:.03rem;display:inline-flex}.qr-tabs button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:.04rem;padding:.06rem .16rem;font-size:.13rem}.qr-tabs button.active{background:var(--primary);color:#fff}.qr-gen{grid-template-columns:1fr 1fr;gap:.24rem;display:grid}.qr-gen__form{flex-direction:column;gap:.12rem;display:flex}.qr-gen__form textarea{background:var(--bg-elevated);border:.01rem solid var(--border);color:var(--text);resize:vertical;border-radius:.04rem;padding:.1rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.13rem}.qr-gen__row{align-items:center;gap:.16rem;display:flex}.qr-gen__row label{color:var(--text-dim);align-items:center;gap:.08rem;font-size:.13rem;display:flex}.qr-gen__row input[type=color]{border:.01rem solid var(--border);cursor:pointer;border-radius:.04rem;width:.36rem;height:.28rem;padding:.02rem}.qr-gen__row input[type=range]{flex:1}.qr-gen__preview{background:var(--bg-elevated);border:.01rem solid var(--border);border-radius:.04rem;justify-content:center;align-items:center;min-height:2.8rem;padding:.2rem;display:flex}.qr-gen__preview img{max-width:100%;max-height:4rem}.qr-decode{flex-direction:column;gap:.16rem;display:flex}.qr-decode__result{flex-direction:column;gap:.08rem;display:flex}.qr-decode__result textarea{background:var(--bg-elevated);border:.01rem solid var(--border);color:var(--text);border-radius:.04rem;padding:.1rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.13rem}.add-panel{background:var(--bg-elevated);border-left:.01rem solid var(--border);z-index:90;width:2.8rem;padding:.2rem;position:fixed;top:.56rem;bottom:0;right:0;overflow-y:auto}.add-panel h3{margin:0 0 .04rem}.add-panel__hint{color:var(--text-dim);margin:0 0 .16rem;font-size:.14rem}.add-panel__list{flex-direction:column;gap:.08rem;margin:0;padding:0;list-style:none;display:flex}.add-panel__item{background:var(--bg);border:.01rem solid var(--border);cursor:grab;border-radius:.08rem;align-items:center;gap:.1rem;padding:.1rem;display:flex}.add-panel__item:active{cursor:grabbing}.add-panel__item.is-added{opacity:.5;cursor:default}.add-panel__icon{color:var(--primary);flex-shrink:0}.add-panel__meta{flex-direction:column;flex:1;min-width:0;display:flex}.add-panel__meta strong{font-size:.14rem}.add-panel__meta span{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:.11rem;overflow:hidden}.add-panel__item button{border:.01rem solid var(--border);background:var(--bg-elevated);width:.24rem;height:.24rem;color:var(--text);border-radius:.06rem;justify-content:center;align-items:center;display:flex}.add-panel__item button:disabled{opacity:.4;cursor:not-allowed}.tool-page{max-width:11rem;margin:0 auto}.tool-page__header{margin-bottom:.24rem}.tool-page__header h1{margin:0 0 .06rem;font-size:.22rem}.tool-page__desc{color:var(--text-dim);margin:0}.tool-page__grid{grid-template-columns:1fr 1fr;gap:.16rem;display:grid}.tool-page__col{flex-direction:column;gap:.08rem;display:flex}.tool-page__col textarea{background:var(--bg-elevated);border:.01rem solid var(--border);min-height:3.2rem;color:var(--text);resize:vertical;border-radius:.08rem;padding:.14rem;font-family:SF Mono,Menlo,Consolas,monospace;font-size:.14rem}.tool-page__col textarea:focus{border-color:var(--primary);outline:none}.tool-page__actions{gap:.08rem;margin-top:.16rem;display:flex}.tool-page__actions button{background:var(--primary);color:#fff;border:none;border-radius:.08rem;padding:.08rem .18rem}.tool-page__actions button:hover{filter:brightness(1.1)}.tool-page__error{border:.01rem solid var(--danger);color:var(--danger);background:#d9534f14;border-radius:.08rem;margin-top:.16rem;padding:.1rem .14rem;font-size:.14rem}.gallery{padding:.1rem}.gallery__header{margin-bottom:.24rem}.gallery__header h1{margin:0 0 .04rem}.gallery__header p{color:var(--text-dim);margin:0}.gallery__group{margin-bottom:.24rem}.gallery__group h2{color:var(--text-dim);margin:0 0 .12rem;font-size:.14rem;font-weight:500}.gallery__grid{grid-template-columns:repeat(auto-fill,minmax(2.8rem,1fr));gap:.12rem;display:grid}
