:root{--bg: #f4f5f7;--panel: #ffffff;--line: #e2e5ea;--text: #1f2430;--muted: #6b7280;--accent: #ea580c;--accent-ink: #ffffff;--ok: #15803d;--ok-bg: #dcfce7;--warn: #a16207;--warn-bg: #fef3c7;--fail: #b91c1c;--fail-bg: #fee2e2;--radius: 10px;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #15171c;--panel: #1d2027;--line: #2d313a;--text: #e8eaee;--muted: #9aa1ad;--ok: #4ade80;--ok-bg: #163222;--warn: #fbbf24;--warn-bg: #3a2e12;--fail: #f87171;--fail-bg: #3b1818;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;display:flex;flex-direction:column}body.busy .card,body.busy .info button{cursor:progress}button{font:inherit;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.07);border-color:var(--accent)}.muted{color:var(--muted)}.top{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{font-weight:700;font-size:16px;display:flex;align-items:center;gap:8px}.logo{width:20px;height:20px;background:var(--accent);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.actions{display:flex;gap:8px;flex-wrap:wrap}.progress{flex:1;min-width:220px;display:flex;align-items:center;gap:10px}.progress[hidden]{display:none}.progress .bar{flex:0 0 160px;height:6px;background:var(--line);border-radius:3px;overflow:hidden}.progress .bar span{display:block;height:100%;width:0;background:var(--accent);transition:width .2s}.progress .label{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}main{flex:1;display:grid;grid-template-columns:minmax(300px,1fr) minmax(380px,1.25fr);min-height:0}.gallery{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}.filters{display:flex;gap:6px;padding:10px 16px;flex-wrap:wrap}.filters:empty{display:none}.filters button{border-radius:999px;padding:4px 12px;display:flex;gap:6px;align-items:center}.filters button span{font-size:12px;color:var(--muted)}.filters button.on{background:var(--text);color:var(--panel);border-color:var(--text)}.filters button.on span{color:inherit;opacity:.75}.grid{flex:1;overflow:auto;padding:4px 16px 16px;display:grid;gap:12px;align-content:start;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.empty{grid-column:1 / -1;max-width:460px;margin:48px auto;text-align:center;color:var(--muted)}.empty h2{color:var(--text);font-size:18px;margin:0 0 8px}.empty.small{margin:24px auto}.card{position:relative;display:flex;flex-direction:column;gap:2px;padding:0 0 10px;text-align:left;background:var(--panel);border-radius:var(--radius);overflow:hidden}.card.sel{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}.grid{grid-auto-rows:max-content}.card img,.card .noimg{flex:none;width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#eef0f3}.card .noimg{display:grid;place-items:center;font-size:36px;color:#b6bcc6}.card .name{padding:6px 10px 0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card .name small{color:var(--muted);font-weight:500}.card .dims{padding:0 10px;font-size:12px;color:var(--muted)}.card .badge{position:absolute;top:8px;left:8px}.card .tick{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:#ffffffe6;border:1.5px solid #9aa1ad;color:transparent;font-size:14px;font-weight:700;line-height:1;opacity:0;transition:opacity .1s}.card:hover .tick,.card:focus-visible .tick,.grid.picking .tick,.card.checked .tick{opacity:1}.card.checked .tick{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.card.checked{box-shadow:inset 0 0 0 2px var(--accent)}.selbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:0 16px 10px;font-size:13px}.selbar[hidden]{display:none}.selbar .check{display:flex;gap:6px;align-items:center;cursor:pointer}.selbar .count{color:var(--muted)}.selbar .sep{flex:1}.selbar button{padding:3px 10px;font-size:13px}.badge{font-size:12px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap}.badge.ok{color:var(--ok);background:var(--ok-bg)}.badge.warn{color:var(--warn);background:var(--warn-bg)}.badge.fail{color:var(--fail);background:var(--fail-bg)}.detail{display:flex;flex-direction:column;min-height:0}.viewer{position:relative;flex:1;min-height:300px}.viewer canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.viewer-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);background:var(--bg);z-index:1;padding:16px;text-align:center}.viewer-empty[hidden]{display:none}.view-bar{position:absolute;top:10px;left:10px;right:10px;z-index:1;display:flex;gap:10px;align-items:center;flex-wrap:wrap;pointer-events:none}.view-bar[hidden]{display:none}.view-bar>*{pointer-events:auto}.views{display:flex;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.views button{border:0;border-radius:0;padding:5px 10px;font-size:13px;background:transparent}.views button+button{border-left:1px solid var(--line)}.views button.on{background:var(--text);color:var(--panel)}.view-bar .step,.view-bar .angles{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px 10px;font-size:13px}.view-bar .step{display:flex;gap:6px;align-items:center;cursor:pointer}.view-bar .angles{color:var(--muted);font-variant-numeric:tabular-nums;display:flex;gap:8px;align-items:center}.view-bar .angles label{display:flex;gap:4px;align-items:center}.view-bar .angles select{font:inherit;color:var(--text);background:transparent;border:0;padding:0;cursor:pointer}.menu{position:relative}.menu summary{list-style:none;user-select:none}.menu summary::-webkit-details-marker{display:none}.menu summary:after{content:"▾";font-size:10px;color:var(--muted)}.menu[open] summary{border-color:var(--muted)}.menu .pop{position:absolute;top:calc(100% + 6px);left:0;z-index:2;display:grid;gap:8px;min-width:240px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:13px;box-shadow:0 6px 24px #0000001f}.menu .pop label{display:grid;grid-template-columns:64px 1fr auto;gap:8px;align-items:center}.menu .pop output{min-width:3.5em;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.menu .pop button{justify-self:start;padding:3px 10px;font-size:13px}.info{padding:14px 18px 16px;background:var(--panel);border-top:1px solid var(--line)}.info:empty{display:none}.info-head{display:flex;align-items:center;gap:10px;justify-content:space-between}.info h2{margin:0;font-size:16px;overflow-wrap:anywhere}.info h2 small{color:var(--muted);font-weight:500;font-size:13px}.info .dims{margin-top:4px;font-size:15px}.reasons{margin:8px 0 12px;padding-left:18px}.buttons{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.buttons .sep{flex:1}.buttons button.on{background:var(--text);color:var(--panel);border-color:var(--text)}.buttons .check{display:flex;gap:6px;align-items:center;font-size:13px;cursor:pointer}.path{margin-top:10px;font-size:12px;overflow-wrap:anywhere}.modal{position:fixed;inset:0;background:#0a0c108c;z-index:10;display:flex;padding:16px}.modal[hidden]{display:none}.ed-box{flex:1;display:flex;flex-direction:column;background:var(--panel);border-radius:12px;overflow:hidden;min-width:0}.ed-head{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.ed-title{display:flex;align-items:center;gap:10px;flex:1;min-width:200px}.ed-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ed-page{font:inherit;padding:4px 6px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.ed-actions{display:flex;gap:8px;flex-wrap:wrap}.ed-sub{display:flex;gap:16px;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.ed-dims{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.ed-td{color:var(--muted)}.ed-warn{color:var(--fail)}.ed-cands{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-left:auto}.ed-cands button{padding:3px 10px;font-size:13px}.ed-stage{position:relative;flex:1;min-height:0}.ed-stage canvas{position:absolute;inset:0;touch-action:none}.ed-help{position:absolute;left:12px;bottom:12px;max-width:min(640px,calc(100% - 24px));background:#111827db;color:#fff;padding:8px 12px;border-radius:8px;font-size:13px;pointer-events:none}.ed-loading{position:absolute;top:12px;left:50%;transform:translate(-50%);background:var(--panel);padding:6px 12px;border-radius:8px}.ed-loading[hidden]{display:none}.drop{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:24px;background:#ea580c1f;pointer-events:none}.drop[hidden]{display:none}.drop>div{display:flex;flex-direction:column;gap:4px;align-items:center;text-align:center;padding:36px 48px;border:3px dashed var(--accent);border-radius:16px;background:var(--panel);font-size:18px;font-weight:600;box-shadow:0 10px 40px #00000026}.drop small{font-size:13px;font-weight:400;color:var(--muted)}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:20;max-width:calc(100% - 32px);background:#1f2430;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:0 6px 24px #0003}.toast.error{background:#991b1b}.toast[hidden]{display:none}@media(max-width:860px){main{grid-template-columns:1fr;grid-template-rows:minmax(260px,45vh) auto;overflow:auto}.gallery{border-right:0;border-bottom:1px solid var(--line)}.viewer{min-height:360px}}
