:root{--accent: #2563eb;--accent-hover: #1d4ed8;--accent-soft: #e8efff;--ink: #1f2937;--ink-soft: #374151;--muted: #6b7280;--line: #e5e7eb;--surface: #ffffff;--stage: #eef0f3;--radius: 8px;--focus: 0 0 0 3px rgba(37, 99, 235, .35);--slider-size: #4b5563;--slider-strength: #0d9488;--slider-softness: #0d9488}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--surface);overflow:hidden}[hidden]{display:none!important}.app{height:100%;min-width:320px;display:flex;flex-direction:column}.spacer{flex:1}.head{flex:none;min-height:58px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 24px;border-bottom:1px solid var(--line);background:var(--surface)}.logo{width:28px;height:28px;border-radius:var(--radius);background:none;color:#fff;display:inline-flex;align-items:center;justify-content:center;flex:none}.logo img{display:block;width:28px;height:28px}.head h1{font-size:18px;font-weight:700}.btn.icon-only{width:36px;padding:0;justify-content:center}.confirm{flex:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 14px;padding:10px 24px;font-size:14px;font-weight:600;background:#fff7ed;border-bottom:1px solid #fdba74}.btn{height:36px;border-radius:var(--radius);padding:0 16px;font:inherit;font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;white-space:nowrap}.btn:hover{background:#f9fafb}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn.outline{background:var(--surface);border-color:var(--accent);color:var(--accent)}.btn.outline:hover{background:var(--accent-soft)}.btn svg{width:16px;height:16px;flex:none}.btn.toggle[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn:disabled:hover{background:var(--surface)}.btn.has-tip{position:relative;flex:none}.btn.has-tip:disabled{opacity:1;color:#1f293780;border-color:#e5e7eb80}.btn-tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);z-index:20;padding:4px 8px;border-radius:6px;background:var(--ink);color:#fff;font-size:12px;font-weight:600;line-height:16px;white-space:nowrap;pointer-events:none}.btn.has-tip:hover .btn-tip,.btn.has-tip:focus-visible .btn-tip{display:block}.btn.primary:disabled:hover{background:var(--accent)}button:focus-visible,input:focus-visible{outline:none;box-shadow:var(--focus)}.tools{flex:none;min-height:62px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--line)}.pair{display:flex;gap:8px}.section{display:contents}.seg{display:flex;border:1px solid var(--line);border-radius:var(--radius)}.seg button{height:34px;padding:0 14px;display:flex;align-items:center;gap:8px;font:inherit;font-size:14px;font-weight:600;color:var(--ink-soft);background:var(--surface);border:0;cursor:pointer;white-space:nowrap}.seg button:first-child{border-radius:7px 0 0 7px}.seg button:last-of-type{border-radius:0 7px 7px 0}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.seg svg{width:16px;height:16px;flex:none}.slider{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600}.slider input[type=range]{width:160px;height:18px;accent-color:var(--accent);cursor:pointer;border-radius:9px}#brush-size{accent-color:var(--slider-size)}#strength{accent-color:var(--slider-strength)}#softness{accent-color:var(--slider-softness)}#brush-size:focus-visible,#zoom-slider:focus-visible{box-shadow:0 0 0 3px #4b556359}#strength:focus-visible,#softness:focus-visible{box-shadow:0 0 0 3px #0d948859}.slider:has(input:disabled){color:var(--muted);cursor:default}.slider input[type=range]:disabled{cursor:default;opacity:.5}.brush-options{display:flex;align-items:center;gap:12px}.brush-options .slider input[type=range]{width:120px}.check{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer}.check input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.sec-strength>.check{gap:6px;font-size:12px;font-weight:400;color:var(--muted)}.sec-strength>.check input{width:13px;height:13px}.check.has-tip{position:relative}.check-tip{display:none;position:absolute;top:calc(100% + 12px);right:0;z-index:30;width:266px;padding:10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:0 8px 24px #0000002e;color:var(--ink-soft);font-size:13px;font-weight:500;line-height:1.4;white-space:normal;cursor:default;pointer-events:none}.check-tip svg{display:block;width:100%;height:auto;margin-bottom:8px;border-radius:6px}.check:hover>.check-tip,.check>input:focus-visible~.check-tip{display:block}.val{min-width:28px;color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums}.menu-anchor{position:relative;flex:none}.btn .chevron{width:14px;height:14px}.split{display:flex}.split #download-button{border-radius:var(--radius) 0 0 var(--radius)}.split #download-arrow{width:38px;padding:0;justify-content:center;border-radius:0 var(--radius) var(--radius) 0;border-left-color:#ffffff73}.split #download-arrow[aria-expanded=true] svg{transform:rotate(180deg)}.btn .format{padding:1px 6px;border-radius:5px;background:#fff3;font-size:12px;font-weight:700}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:10;min-width:100%;padding:4px;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px #0f172a2e}.menu.up{top:auto;bottom:calc(100% + 6px)}.menu button{height:34px;padding:0 12px;display:flex;align-items:center;justify-content:space-between;gap:16px;font:inherit;font-size:14px;font-weight:500;color:var(--ink);background:transparent;border:0;border-radius:6px;cursor:pointer;white-space:nowrap}.menu button:hover,.menu button:focus-visible{background:var(--accent-soft);color:var(--accent)}.menu button[data-default=true]{font-weight:700}.menu svg{width:14px;height:14px;flex:none;color:var(--accent)}.stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;background:var(--stage);padding:12px;overflow:hidden}.pic{position:relative;flex:none;box-shadow:0 4px 16px #0f172a26;background-color:#fff;background-image:linear-gradient(45deg,#e5e7eb 25%,transparent 25%,transparent 75%,#e5e7eb 75%),linear-gradient(45deg,#e5e7eb 25%,transparent 25%,transparent 75%,#e5e7eb 75%);background-size:16px 16px;background-position:0 0,8px 8px}.pic canvas{position:absolute;left:0;top:0;width:100%;height:100%;display:block}#overlay{touch-action:none;cursor:crosshair}.area-delete{position:absolute;z-index:2;width:20px;height:20px;padding:0;display:flex;align-items:center;justify-content:center;border:1px solid var(--accent);border-radius:50%;background:var(--surface);color:var(--accent);cursor:pointer}.area-delete:hover{background:var(--accent);color:#fff}.area-delete svg{width:10px;height:10px;flex:none}.panel{max-width:460px;display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;font-size:15px;line-height:1.5;color:var(--ink-soft)}.toast{position:absolute;left:50%;bottom:22px;transform:translate(-50%);background:#111827;color:#fff;border-radius:10px;padding:11px 18px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:10px;box-shadow:0 8px 24px #00000040;pointer-events:none}.toast .ok{width:20px;height:20px;border-radius:50%;background:#22c55e;display:flex;align-items:center;justify-content:center}.toast .ok svg{width:12px;height:12px}.toast.error .ok{display:none}.hint{flex:none;height:40px;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(max-content,1fr);align-items:center;column-gap:12px;padding:0 24px;font-size:14px;font-weight:500;color:var(--ink-soft);background:var(--accent-soft);border-bottom:1px solid var(--line);overflow:hidden}.hint-main{grid-column:2;min-width:0;display:flex;align-items:center;justify-content:center;gap:8px;overflow:hidden}#hint-text{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hint svg{width:16px;height:16px;flex:none;color:var(--accent)}.status{grid-column:3;justify-self:end;display:flex;align-items:center}#status-text{white-space:nowrap;font-size:13px;font-weight:500;line-height:18px;color:#4b5563}#status-text:not(:empty){padding:2px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface)}.stage.zoomable{overflow:clip}.zoom{position:absolute;right:12px;top:0;bottom:0;z-index:3;width:40px;height:fit-content;margin:auto 0;padding:4px;display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 8px #0f172a1f}#pic[hidden]~.zoom{display:none}.zoom button{width:30px;height:30px;padding:0;display:flex;align-items:center;justify-content:center;flex:none;border:0;border-radius:6px;background:transparent;color:var(--ink-soft);cursor:pointer}.zoom button:hover{background:var(--accent-soft);color:var(--accent)}.zoom button[aria-disabled=true]{opacity:.4;cursor:default}.zoom button[aria-disabled=true]:hover{background:transparent;color:var(--ink-soft)}.zoom svg{width:16px;height:16px;flex:none}.zoom-track{position:relative;width:30px;height:132px;flex:none}.zoom-track input[type=range]{position:absolute;left:50%;top:50%;width:132px;height:18px;margin:-9px 0 0 -66px;transform:rotate(-90deg);accent-color:var(--slider-size);cursor:pointer;border-radius:9px}.zoom output{min-width:30px;padding:2px 0;text-align:center;font-size:11px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.stage.pan-ready,.stage.pan-ready #overlay{cursor:grab!important}.stage.panning,.stage.panning #overlay{cursor:grabbing!important}.side-label,.side-message{display:none}html:has(body.part-picture),body.part-picture{background:transparent}body.part-picture .head,body.part-picture .tools,body.part-picture .hint,body.part-picture .status,body.part-picture .confirm,body.part-picture .toast,body.part-picture .zoom{display:none!important}body.part-picture .stage{padding:0;background:transparent}body.part-picture .pic{box-shadow:none;background:none}body.part-picture .panel{padding:12px 16px;border-radius:var(--radius);background:#fffffff0}body.part-sidebar{overflow-x:hidden;overflow-y:auto}body.part-sidebar .app{min-width:0;height:auto}body.part-sidebar .hint,body.part-sidebar .stage,body.part-sidebar .status,body.part-sidebar .logo,body.part-sidebar .head .check,body.part-sidebar #upload-button,body.overlay #error-upload-button,body.overlay #loading-upload-button,body.part-sidebar .tools>.spacer{display:none!important}body.part-sidebar .head{min-height:44px;padding:6px 12px;flex-wrap:nowrap;gap:6px}body.part-sidebar .head h1{font-size:15px;white-space:nowrap}body.part-sidebar .confirm{flex-direction:column;align-items:stretch;padding:10px 12px;text-align:left}body.part-sidebar .tools{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:8px;padding:10px 12px 12px;border-bottom:0}:is(body.part-sidebar,body:not(.overlay)) .side-label{display:block;margin-top:4px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}:is(body.part-sidebar,body:not(.overlay)) .side-tool{order:1}:is(body.part-sidebar,body:not(.overlay)) .seg{order:2}:is(body.part-sidebar,body:not(.overlay)) .brush-options{order:3}:is(body.part-sidebar,body:not(.overlay)) #whole-button{order:5}:is(body.part-sidebar,body:not(.overlay)) .side-strength{order:6}:is(body.part-sidebar,body:not(.overlay)) .sec-strength>.slider{order:7}:is(body.part-sidebar,body:not(.overlay)) .sec-strength>.check{order:8}:is(body.part-sidebar,body:not(.overlay)) .side-edit{order:9}:is(body.part-sidebar,body:not(.overlay)) .pair{order:10}body:not(.overlay) .sec-edit>#whole-button{order:10}body.part-sidebar .side-message{order:0}:is(body.part-sidebar,body:not(.overlay)) .split{order:11}:is(body.part-sidebar,body:not(.overlay)) .seg button{flex:1;min-width:0;padding:0 6px;gap:6px;font-size:13px;justify-content:center}:is(body.part-sidebar,body:not(.overlay)) .brush-options{flex-wrap:nowrap;align-items:center;gap:8px}:is(body.part-sidebar,body:not(.overlay)) .brush-options .btn{height:28px;border-radius:6px}:is(body.part-sidebar,body:not(.overlay)) .brush-options #tool-eraser{width:28px;padding:0}:is(body.part-sidebar,body:not(.overlay)) .brush-options .slider{display:contents}:is(body.part-sidebar,body:not(.overlay)) .brush-options #brush-size-label{flex:none;order:0;font-size:13px;font-weight:600}:is(body.part-sidebar,body:not(.overlay)) .brush-options .val{flex:none;order:0;font-size:13px}:is(body.part-sidebar,body:not(.overlay)) .brush-options .slider input[type=range]{flex:1 1 auto;order:0;width:auto;min-width:40px}:is(body.part-sidebar,body:not(.overlay)) .btn{justify-content:center}:is(body.part-sidebar,body:not(.overlay)) .slider{flex-wrap:wrap;gap:6px 8px;font-size:13px}:is(body.part-sidebar,body:not(.overlay)) .slider #strength-label{flex:1}:is(body.part-sidebar,body:not(.overlay)) .softness-options>span{flex:1}:is(body.part-sidebar,body:not(.overlay)) .slider input[type=range]{order:3;width:100%}:is(body.part-sidebar,body:not(.overlay)) .pair{flex-direction:row;gap:6px}:is(body.part-sidebar,body:not(.overlay)) .pair #clear-button{flex:1;min-width:0}:is(body.part-sidebar,body:not(.overlay)) .split #download-button{flex:1;min-width:0}:is(body.part-sidebar,body:not(.overlay)) .split #download-arrow{flex:none}body.part-sidebar .side-message:not([hidden]){display:block;padding:8px 10px;border-radius:6px;font-size:13px;font-weight:600;line-height:1.4;color:var(--ink);background:var(--accent-soft)}body.part-sidebar .side-message.warn{background:#fff7ed;border:1px solid #fdba74}body.part-sidebar .head{cursor:grab;user-select:none;touch-action:none}body.part-sidebar .head.dragging{cursor:grabbing}body.part-sidebar .head .btn{cursor:pointer}body.part-sidebar .head .spacer{min-width:0}body.part-sidebar #collapse-button svg{transition:none}body.part-sidebar.collapsed #collapse-button svg{transform:rotate(180deg)}body.part-sidebar.collapsed .tools,body.part-sidebar.collapsed .confirm{display:none!important}body.part-sidebar.collapsed{overflow:hidden}body.part-sidebar .head .btn.icon-only{flex:none;width:28px;height:28px;padding:0}body.part-sidebar .head .spacer{display:none}body.part-sidebar #layout-button{margin-left:auto}body.part-sidebar.bar #layout-button svg{transform:rotate(-90deg)}:is(body.part-sidebar.bar,body:not(.overlay)) .tools{display:grid;grid-template-columns:repeat(4,var(--block));align-items:stretch;gap:8px 0;padding:8px 12px 12px;--block: 206px;--block-gap: 12px}body:not(.overlay):not(.bar) .tools{padding:12px 24px}:is(body.part-sidebar.bar,body:not(.overlay)) .tools>.spacer{display:none}:is(body.part-sidebar.bar,body:not(.overlay)) .section{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:0;padding:0 var(--block-gap);border-left:1px solid var(--line)}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-tool{padding-left:0;border-left:0}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-strength:has(>.softness-options:not([hidden])){gap:4px}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-tool .seg button{height:28px}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{align-self:start;padding-right:0;border-left:0}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download>#upload-button{order:12}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-edit{border-right:1px solid var(--line)}:is(body.part-sidebar.bar,body:not(.overlay)) .side-label{margin-top:0;line-height:16px}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{padding-top:24px}body.part-sidebar.bar .side-message{order:-1}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-tool{order:0}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-strength{order:1}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-edit{order:2}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{order:3}:is(body.part-sidebar.bar,body:not(.overlay)) .tools{grid-template-columns:var(--block) repeat(3,calc(var(--block) + var(--block-gap) * 2 + 1px))}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{width:calc(var(--block) + var(--block-gap) + 1px)}body.part-sidebar.bar .sec-download:has(>#whole-button){padding-top:0}body.part-sidebar.bar .sec-download>#whole-button{order:13}body.part-sidebar.bar .menu{flex-direction:row;min-width:0}body.part-sidebar.bar .side-message:not([hidden]){grid-column:1 / -1}body.part-sidebar.bar .confirm{flex-direction:row;align-items:center;justify-content:flex-start}@media (max-width: 950px){:is(body.part-sidebar.bar,body:not(.overlay)) .tools{--block: 186px;--block-gap: 10px}}@media (max-width: 840px){:is(body.part-sidebar.bar,body:not(.overlay)) .tools{grid-template-columns:var(--block) calc(var(--block) + var(--block-gap) * 2 + 1px);gap:0}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-edit{padding-left:0;border-left:0}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-edit,:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-tool,:is(body.part-sidebar.bar,body:not(.overlay)) .sec-strength{padding-bottom:12px}:is(body.part-sidebar.bar,body:not(.overlay)) .sec-download{margin-top:12px;padding-top:36px}}
