:root{--bg: #1e1e1e;--panel: #262626;--border: #3a3a3a;--text: #e0e0e0;--accent-yellow: #d7b938;--accent-green: #2ea862;--accent-blue: #2e72d8;--danger: #c94848;--radius: 6px;--transition: .15s ease;--font-stack: system-ui,-apple-system,Segoe UI,Roboto,sans-serif}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-stack)}.top-bar{display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;background:var(--panel);border-bottom:1px solid var(--border)}.logo{font-weight:600;letter-spacing:.5px}.controls{display:flex;align-items:center;gap:.75rem;font-size:.875rem}.controls input[type=file]{color:var(--text)}button,select{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:.4rem .75rem;border-radius:var(--radius);cursor:pointer;font-size:.8rem}button:hover,select:hover{border-color:var(--accent-blue)}.progress{margin-left:.5rem;font-weight:500}.slider-container{display:flex;align-items:center;gap:.5rem}.piece-count{min-width:3rem;text-align:right;font-weight:500;color:var(--accent-blue)}.zoom-controls{display:flex;align-items:center;gap:.3rem;border:1px solid var(--border);border-radius:var(--radius);padding:.2rem}.zoom-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);width:2rem;height:2rem;border-radius:3px;cursor:pointer;font-size:1.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.zoom-btn:hover{background:var(--bg);border-color:var(--accent-blue)}.zoom-level{min-width:3.5rem;text-align:center;font-weight:500;color:var(--text);font-size:.8rem}.zoom-reset-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);width:2rem;height:2rem;border-radius:3px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.zoom-reset-btn:hover{background:var(--bg);border-color:var(--accent-green)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:120px;height:6px;background:var(--border);border-radius:3px;outline:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background:var(--accent-blue);border-radius:50%;cursor:pointer;transition:var(--transition)}input[type=range]::-webkit-slider-thumb:hover{background:var(--accent-green);transform:scale(1.1)}input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--accent-blue);border-radius:50%;cursor:pointer;border:none;transition:var(--transition)}input[type=range]::-moz-range-thumb:hover{background:var(--accent-green);transform:scale(1.1)}.original-image-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:2rem;box-sizing:border-box}.check-btn{background:var(--accent-green);color:#fff;border:none;font-weight:600;font-size:.9rem;padding:.6rem 1rem;border-radius:var(--radius);cursor:pointer;transition:var(--transition);text-shadow:0 1px 2px rgba(0,0,0,.3)}.check-btn:hover{background:#248a50;transform:scale(1.05)}.orientation-tip-btn{background:var(--accent-blue);color:#fff;border:none;font-weight:600;font-size:.9rem;padding:.6rem 1rem;border-radius:var(--radius);cursor:pointer;transition:var(--transition);text-shadow:0 1px 2px rgba(0,0,0,.3)}.orientation-tip-btn:hover{background:#1f6bd8;transform:scale(1.05)}.help-btn{background:var(--accent-blue);color:#fff;border:none;font-weight:700;font-size:1rem;width:2.2rem;height:2.2rem;border-radius:50%;cursor:pointer;transition:var(--transition);text-shadow:0 1px 2px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center}.help-btn:hover{background:#1e5bb8;transform:scale(1.1)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;z-index:1000;display:flex;align-items:center;justify-content:center;animation:modal-fade-in .2s ease-out}.modal-content{background:var(--panel);border-radius:var(--radius);border:1px solid var(--border);max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:0 10px 25px #00000080;animation:modal-slide-in .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--border)}.modal-header h2{margin:0;color:var(--text);font-size:1.4rem}.close-btn{font-size:1.8rem;color:var(--text);cursor:pointer;transition:var(--transition);line-height:1;padding:0 .2rem}.close-btn:hover{color:var(--danger);transform:scale(1.2)}.modal-body{padding:1.5rem}.modal-body h3{color:var(--accent-blue);margin:1rem 0 .5rem;font-size:1.1rem}.modal-body ul{margin:.5rem 0 1.5rem 1rem;padding:0}.modal-body li{margin-bottom:.5rem;line-height:1.4}.modal-body strong{color:var(--accent-yellow)}.tip{background:var(--bg);border:1px solid var(--accent-blue);border-radius:var(--radius);padding:.8rem 1rem;margin-top:1rem;font-style:italic}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(-50px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.layout{display:flex;height:calc(100vh - 48px)}.placeholder{opacity:.6;padding:2rem;text-align:center}.pieces-container::-webkit-scrollbar{width:10px;height:10px}.pieces-container::-webkit-scrollbar-track{background:#1a1a1a}.pieces-container::-webkit-scrollbar-thumb{background:#333;border-radius:6px}.top-bar.deep-link-mode .slider-container,.top-bar.deep-link-mode .zoom-controls,.top-bar.deep-link-mode #orientationTipButton,.top-bar.deep-link-mode #progressDisplay{display:none}.pieces-container{flex:1;overflow:hidden;position:relative;cursor:grab;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,.15) 1px,transparent 0);background-size:20px 20px;touch-action:none;-ms-touch-action:none}.pieces-container:active{cursor:grabbing}.pieces-viewport{width:100%;height:100%;transform-origin:0 0;transition:transform .1s ease-out;position:relative}.piece{position:absolute;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.piece:active{cursor:grabbing}.piece img{display:block}.ready-connect{box-shadow:0 0 0 2px var(--accent-green),0 0 12px 4px #2ea86280}.near-connect{box-shadow:0 0 0 2px var(--accent-yellow),0 0 8px 3px #d7b93866}.connected-group-outline{outline:2px solid var(--accent-blue)}.piece.selected{outline:2px solid var(--accent-blue);box-shadow:0 0 6px 2px #2e72d899}.piece.candidate-highlight{outline:3px solid var(--accent-green);box-shadow:0 0 10px 4px #2ea862b3}.piece.detached-piece{outline:2px dashed var(--danger);box-shadow:0 0 8px 3px #c9484899;animation:detach-flash .3s ease-out}@keyframes pulse-ready{0%{filter:brightness(1)}50%{filter:brightness(1.3)}to{filter:brightness(1)}}.ready-connect{animation:pulse-ready 1.2s ease-in-out infinite}@keyframes detach-flash{0%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.05);filter:brightness(1.2)}to{transform:scale(1);filter:brightness(1)}}@keyframes long-press-pulse{0%{transform:scale(1);box-shadow:0 0 #ffa500b3}50%{transform:scale(1.03);box-shadow:0 0 10px 5px #ffa50066}to{transform:scale(1);box-shadow:0 0 #ffa50000}}.long-press-active{animation:long-press-pulse .3s ease-out}.picture-gallery-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000d9;z-index:9999;display:flex;align-items:center;justify-content:center;animation:fadeIn .3s ease-out}.picture-gallery{background:var(--panel);border-radius:var(--radius);border:1px solid var(--border);max-width:900px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:0 10px 40px #0009;padding:2rem}.picture-gallery h2{margin:0 0 1.5rem;color:var(--text);font-size:1.6rem;text-align:center;letter-spacing:.5px}.picture-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1.5rem;margin-bottom:1.5rem}.picture-gallery-item{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;cursor:pointer;border:2px solid var(--border);transition:all .2s ease;background:var(--bg);display:flex;flex-direction:column}.picture-gallery-item:hover{border-color:var(--accent-blue);transform:translateY(-4px);box-shadow:0 8px 20px #2d7ef74d}.picture-gallery-item img{flex:0 0 80%;width:100%;height:80%;object-fit:cover;display:block;overflow:hidden}.picture-gallery-item-container{display:flex;flex-direction:column;align-items:center;height:100%;width:100%;overflow:hidden}.picture-gallery-item-title{flex:0 0 20%;font-size:.9em;text-align:center;display:flex;align-items:center;justify-content:center;color:var(--text);background-color:var(--bg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;padding-left:.25em;padding-right:.25em}.picture-gallery-close{text-align:center;margin-top:1rem}.picture-gallery-close button{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:.7rem 2rem;border-radius:var(--radius);cursor:pointer;font-size:.9rem;font-weight:600;transition:all .15s ease}.picture-gallery-close button:hover{background:var(--panel);border-color:var(--accent-blue);transform:scale(1.05)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.picture-gallery::-webkit-scrollbar{width:10px}.picture-gallery::-webkit-scrollbar-track{background:var(--bg);border-radius:var(--radius)}.picture-gallery::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius)}.picture-gallery::-webkit-scrollbar-thumb:hover{background:var(--accent-blue)}#resume-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:10000}.resume-modal{background:#1f1f1f;color:#f5f5f5;padding:24px 28px 30px;width:min(420px,90%);border-radius:12px;box-shadow:0 10px 32px #0006;font-family:system-ui,sans-serif;animation:fadeIn .16s ease-out}.resume-modal h2{margin:0 0 12px;font-size:1.35rem;letter-spacing:.5px}.resume-modal p{margin:0 0 20px;line-height:1.45;font-size:.95rem;color:#d0d0d0}.resume-actions{display:flex;gap:12px;flex-wrap:wrap}.resume-actions button{flex:1 1 auto;cursor:pointer;border:none;border-radius:8px;padding:12px 14px;font-size:.9rem;font-weight:600;letter-spacing:.4px;transition:background .14s,transform .12s}.resume-primary{background:#2d7ef7;color:#fff}.resume-primary:hover{background:#1f6bd8}.resume-warn{background:#444;color:#eee}.resume-warn:hover{background:#555}.resume-danger{background:#c44545;color:#fff}.resume-danger:hover{background:#b23838}.resume-actions button:active{transform:translateY(1px)}.resume-meta{margin-top:16px;font-size:.7rem;text-transform:uppercase;opacity:.6;letter-spacing:1px;text-align:right}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:520px){.resume-actions{flex-direction:column}}
