:root{font-family:Arial,"Noto Sans TC",sans-serif;color:#222;background:#f4f5f5;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{margin:0}header{display:flex;align-items:center;gap:24px;padding:18px 28px;background:white;border-bottom:1px solid #ddd}header a{font-weight:700;color:#222;text-decoration:none}header span{margin-left:auto;color:#666;font-size:.875rem}main{display:grid;grid-template-columns:310px minmax(0,1fr);gap:24px;padding:24px;max-width:1600px;margin:auto}aside,.preview{background:white;border:1px solid #ddd;border-radius:12px;padding:24px}aside label{display:block;font-weight:600;margin-top:18px}aside label:first-child{margin-top:0}button,select,input{font:inherit}button,select{min-height:44px;border:1px solid #ccc;border-radius:7px;padding:8px 12px;background:white;color:#222}select{width:100%}button{cursor:pointer}button:disabled,input:disabled{opacity:.45;cursor:default}.sides{display:flex;gap:8px;margin:20px 0}.sides button{flex:1}.sides [aria-pressed=true],.primary{background:#333;color:white;border-color:#333}.secondary,.primary{display:block;width:100%;margin-top:12px}input[type=file]{width:100%;font-size:.875rem}input[type=range]{width:100%;accent-color:#333}.hint{font-size:.875rem;color:#666;margin:10px 0}.check{font-size:.875rem}.check input{accent-color:#333}.previewTop{display:flex;align-items:center;justify-content:space-between;gap:16px}.previewTop h1{font-size:1.15rem}.previewTop span{font-size:.875rem;color:#666}canvas{display:block;max-width:100%;width:100%;height:auto;touch-action:none;background:#eee;border:1px solid #ddd;cursor:grab}#error{background:#fff0f0;color:#a32020;border:1px solid #e5aaaa;padding:10px;margin-top:12px;font-size:.875rem}#status{font-size:.875rem;margin-top:16px}.import{font-size:.875rem;color:#555}.import input{display:block;margin-top:6px}@media(max-width:800px){header{gap:12px;padding:12px;font-size:.875rem}main{grid-template-columns:1fr;padding:12px;gap:12px}.preview{grid-row:1}aside,.preview{padding:16px}.previewTop{flex-wrap:wrap;gap:0}canvas{min-height:180px}}

.previewNotice{max-width:1552px;margin:18px auto 0;padding:12px 20px;border:1px solid #ccc;border-radius:8px;background:#fff;color:#444;font-size:.875rem}@media(max-width:800px){.previewNotice{margin:12px 12px 0}}

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.upload-button{position:relative;display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:132px;padding:20px 12px;text-align:center;border:1px dashed #aeb7b2;border-radius:10px;background:#f8faf9;cursor:pointer}.upload-button:focus-within{outline:2px solid #316647;outline-offset:3px}.upload-button span:last-of-type{font-size:12px;font-weight:400;color:#69736c}.upload-icon{font-size:28px;color:#66766b;line-height:1}.sample-button{display:block;margin:10px auto 0;border:1px solid #ccd8cd;border-radius:24px;min-height:38px;color:#356743;background:#f8fcf8;font-size:14px}.upload-button:has(input:disabled){opacity:.45;cursor:default}

.overlay-controls{display:flex;gap:8px;margin:0 0 12px}.overlay-controls .check{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;flex:1;padding:8px;border:1px solid #ccc;border-radius:8px;cursor:pointer;background:#f8f9f9;font-weight:600}.overlay-controls input{width:18px;height:18px;margin:0;accent-color:#333}.overlay-controls .check:has(input:checked){background:#333;color:white;border-color:#333}.help{margin-top:14px;font-size:14px}.help summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.edit-actions{display:flex;gap:8px}.edit-actions button{flex:1}.scale-row label{margin-top:16px}#filename{overflow-wrap:anywhere}
@media(max-width:800px){main{padding:8px;gap:8px}aside,.preview{padding:12px;border-radius:10px}.previewTop h1{margin:0 0 8px;font-size:16px}.previewTop span{font-size:12px;margin-bottom:8px}.preview .hint{margin:6px 0 0;font-size:12px}.overlay-controls{position:sticky;top:0;z-index:2;background:white;padding:6px 0;margin:0 0 8px}.overlay-controls .check{font-size:14px}.sides{margin:8px 0}.upload-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.upload-row .upload-button{margin:0;min-height:48px;padding:8px;flex-direction:row;gap:5px}.upload-row .upload-icon{font-size:20px}.upload-row .upload-button strong{font-size:14px}.upload-row .upload-button span:last-of-type{display:none}.upload-row .sample-button{margin:0;min-height:48px;border-radius:8px;padding:8px;font-size:13px}#filename{margin:5px 0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scale-row{display:grid;grid-template-columns:auto minmax(0,1fr) 44px;gap:8px;align-items:center}.scale-row label{margin:0;font-size:14px}.scale-row input{min-height:44px;margin:0}.scale-row output{text-align:right;font-size:13px}.edit-actions button{margin-top:0;min-height:44px;font-size:14px}#status{margin-top:8px;font-size:12px}.primary{margin-top:8px}.help{margin-top:6px}.previewNotice{margin:8px 8px 0;padding:8px 12px;font-size:12px}header{padding:10px 12px}.help .hint{font-size:13px}}

.order-panel{border-top:1px solid #ddd;margin-top:18px;padding-top:14px}.order-panel h2{font-size:18px;margin:0 0 10px}.order-panel fieldset{border:0;padding:0;margin:0;display:grid;gap:6px}.order-panel select,.order-panel input{box-sizing:border-box;width:100%;min-height:42px;border:1px solid #bbb;border-radius:7px;padding:8px;background:#fff;color:#222}.order-panel button{width:100%;margin-top:8px;min-height:44px}.order-errors,#liveStatus.error{background:#fff0f0;color:#a21616;border:1px solid #d59595;padding:10px 10px 10px 26px;border-radius:7px}.order-errors[hidden],#liveProgress[hidden]{display:none}#liveStatus{font-size:14px;overflow-wrap:anywhere}#liveDownload{display:block;margin-top:8px;font-size:14px}#liveDownload[hidden]{display:none}

/* Hidden controls must stay hidden after artwork selection. */
[hidden]{display:none!important}
