.visual-dialog{width:min(650px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid #e0e5e5;border-radius:12px;color:#203332;background:white;box-shadow:0 18px 70px #0003}
.visual-dialog::backdrop{background:#172b2b88}
.visual-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-bottom:1px solid #e5e9e8}
.visual-dialog>header h2{font-size:20px;margin:0}.visual-dialog-body{padding:20px}.visual-dialog-body>p{margin-top:0;color:#667472;line-height:1.5}
.visual-drop{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 18px;border:1px dashed #9daead;border-radius:8px;background:#eef3f2;text-align:center}
.visual-drop.is-dragging{border:2px solid #087e80;background:#dff4f1}.visual-drop p{margin:0}.visual-camera .icon{width:56px;height:56px;stroke:#087e80}
.visual-upload{position:relative;overflow:hidden;cursor:pointer}.visual-upload:focus-within{outline:2px solid #087e80;outline-offset:4px}
.visual-upload input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.visual-preview{display:block;max-width:100%;width:auto;max-height:250px;object-fit:contain;border-radius:5px}.visual-preview[hidden],.visual-drop [hidden]{display:none!important}
.visual-limit{font-size:13px;line-height:1.5;color:#647572}
.visual-status:not(:empty){padding:10px 0;color:#8e3434;font-size:14px}
.visual-submit{width:100%;min-height:44px}.visual-search-form[aria-busy=true] .visual-submit{opacity:.65;cursor:wait}
.visual-page{padding-top:28px;padding-bottom:50px}.visual-page h1{font-size:30px;margin:18px 0 10px}.visual-page h2{font-size:23px;margin:25px 0 12px}
.visual-intro{color:#657672;max-width:700px;line-height:1.6}.visual-page-upload{max-width:650px;margin:28px auto}.visual-again{max-width:650px;margin:32px auto;border:1px solid #dce4e2;border-radius:8px;padding:18px}
.visual-again summary{cursor:pointer;color:#087e80;font-weight:600}.visual-again[open] summary{margin-bottom:20px}.visual-error{border-left:3px solid #b44949}
.visual-page .product-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
@media(max-width:800px){.visual-page .product-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}}
@media(max-width:540px){.visual-dialog{width:calc(100vw - 20px);max-height:calc(100dvh - 20px)}.visual-dialog>header,.visual-dialog-body{padding:15px}.visual-dialog>header h2{font-size:18px}.visual-drop{padding:20px 12px}.visual-page .product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.visual-page h1{font-size:25px}}
