@font-face{font-family:Dancing Script Local;src:url(/fonts/DancingScript.ttf) format("truetype");font-display:swap}:root{color-scheme:light dark;--bg: #f4f5f7;--panel: #ffffff;--text: #1c1e21;--muted: #6b7280;--accent: #2563eb;--border: #d8dbe0;--warn: #ea580c;--warn-hover: #c2410c;--stamp-accent: #dc2626;--success: #16a34a;--success-hover: #15803d}@media (prefers-color-scheme: dark){:root{--bg: #14161a;--panel: #1e2126;--text: #e7e9ec;--muted: #9aa1ac;--accent: #5b9dff;--border: #33373f;--warn: #fb923c;--warn-hover: #f97316;--stamp-accent: #f87171;--success: #4ade80;--success-hover: #22c55e}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;padding:24px 16px calc(96px + env(safe-area-inset-bottom,0px));background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif}@media (max-width: 640px){body{padding:16px 12px calc(112px + env(safe-area-inset-bottom,0px))}}.iosInstallBanner{max-width:1100px;margin:0 auto 16px;display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:12px;background:var(--panel);border:1px solid var(--border);box-shadow:0 4px 16px #0000001a}.iosInstallBanner[hidden]{display:none}.iosInstallBannerIcon{flex:0 0 auto;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.iosInstallBannerText{flex:1 1 auto;min-width:0}.iosInstallBannerTitle{margin:0 0 2px;font-weight:600;font-size:.92rem}.iosInstallBannerBody{margin:0;color:var(--muted);font-size:.85rem;line-height:1.5}.iosInstallBannerBody svg{display:inline-block;vertical-align:-3px;margin:0 2px}.iosInstallBannerClose{flex:0 0 auto;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;color:var(--muted)}.iosInstallBannerClose:hover{background:color-mix(in srgb,var(--border) 60%,transparent);color:var(--text)}header{max-width:1100px;margin:0 auto 24px}header h1{margin:0 0 4px;font-size:1.6rem}.subtitle{color:var(--muted);margin:0;max-width:70ch}.headerTop{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.langSelect{flex:0 0 auto;padding:6px 10px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--text);font-size:.85rem;cursor:pointer}main{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:340px 1fr;gap:20px}@media (max-width: 800px){main{grid-template-columns:1fr}.preview-panel{grid-row:auto}}@media (min-width: 801px){body{height:100vh;display:flex;flex-direction:column;overflow:hidden}header,main{width:100%}header{flex:0 0 auto}main{flex:1 1 auto;min-height:0}.preview-panel{grid-row:auto}.panel{min-height:0;max-height:100%;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.panel::-webkit-scrollbar{display:none}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px;min-width:0}.panel h2{margin-top:0;font-size:1.05rem}.panel h2:not(:first-child){margin-top:22px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:.9rem}.field input[type=text],.field input[type=password],.field input[type=number]{padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text);font-size:max(.9rem,16px)}.checkboxField{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:.9rem;cursor:pointer}.checkboxField input{flex-shrink:0}.fileInputRow{display:flex;align-items:center;gap:10px;margin-bottom:8px}.fileTriggerBtn{width:auto;flex:0 0 auto;padding:8px 14px;border-radius:8px;background:var(--border);color:var(--text);font-size:.85rem}.fileTriggerBtn:hover{background:color-mix(in srgb,var(--border) 70%,var(--text) 10%)}.fileNameText{color:var(--muted);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fileProgress{margin-bottom:14px}.fileProgress[hidden]{display:none}.fileProgressBar{width:100%;height:4px;border-radius:2px;background:var(--border);overflow:hidden}.fileProgressFill{height:100%;width:0%;background:var(--accent);border-radius:2px;transition:width .15s ease}.fileProgress--indeterminate .fileProgressFill{width:40%!important;transition:none;animation:fileProgressIndeterminate 1.1s ease-in-out infinite}@keyframes fileProgressIndeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}.visuallyHiddenFileInput{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sigPreviewWrap{display:flex;flex-direction:column;align-items:center;padding:10px;margin-bottom:8px;border:1px dashed var(--border);border-radius:8px;background:#fff}.sigPreviewWrap[hidden]{display:none}.sigPreviewWrap img{max-width:100%;max-height:120px;cursor:grab}.sigPreviewWrap img:active{cursor:grabbing}#sigPreviewDateText{width:80%;text-align:center;font-family:Dancing Script Local,cursive;color:#222;white-space:nowrap;overflow:hidden}#sigPreviewDateText[hidden]{display:none}.field[data-disabled=true]{opacity:.5}.datePickerWrap{position:relative}.datePickerTrigger{width:100%;display:flex;align-items:center;gap:8px;text-align:left;padding:8px 10px;border-radius:8px;border:1px solid var(--border);background:color-mix(in srgb,var(--border) 18%,transparent);color:var(--text);font-size:max(.9rem,16px);cursor:pointer}.datePickerTrigger:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.datePickerTrigger:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.datePickerTrigger.open{border-color:var(--accent)}.datePickerTrigger:disabled{cursor:not-allowed;background:transparent}.datePickerTrigger:disabled:hover{border-color:var(--border)}.datePickerTriggerIcon{flex:0 0 auto;width:18px;height:18px;color:var(--muted)}.datePickerTriggerText{flex:1 1 auto;min-width:0}.datePickerTriggerChevron{flex:0 0 auto;width:16px;height:16px;color:var(--muted);transition:transform .15s ease}.datePickerTrigger.open .datePickerTriggerChevron{transform:rotate(180deg)}.datePickerPopup{position:absolute;z-index:30;top:calc(100% + 6px);left:0;width:260px;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--panel);box-shadow:0 8px 24px #0000002e}.datePickerPopup[hidden]{display:none}.datePickerHeader{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.datePickerMonthLabel{font-weight:600;font-size:.9rem}.datePickerNavBtn{width:28px;height:28px;padding:0;flex:0 0 auto;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text);font-size:1rem;line-height:1}.datePickerNavBtn:hover{border-color:var(--accent);color:var(--accent)}.datePickerWeekdays,.datePickerDays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.datePickerWeekday{text-align:center;font-size:.75rem;color:var(--muted);padding:4px 0}.datePickerDay{width:100%;aspect-ratio:1;padding:0;border-radius:6px;background:transparent;color:var(--text);font-size:.85rem}.datePickerDay:hover{background:color-mix(in srgb,var(--accent) 15%,transparent)}.datePickerDay.today{box-shadow:inset 0 0 0 1px var(--accent)}.datePickerDay.selected{background:var(--accent);color:#fff}.datePickerTodayBtn{margin-top:10px}.hint{color:var(--muted);font-size:.85rem}button{width:100%;padding:10px 14px;border:none;border-radius:8px;background:var(--accent);color:#fff;font-size:.95rem;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}.secondaryBtn{width:auto;flex:0 0 auto;background:transparent;border:1px solid var(--border);color:var(--text);padding:8px 14px;font-size:.85rem}.secondaryBtn:hover{border-color:var(--accent);color:var(--accent)}.dangerBtn{width:100%;background:var(--warn);color:#fff;font-weight:600;margin-bottom:18px;box-shadow:0 2px 10px color-mix(in srgb,var(--warn) 45%,transparent)}.dangerBtn:hover{background:var(--warn-hover)}.stickyActionBar{position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--panel);border-top:1px solid var(--border);box-shadow:0 -4px 16px #0000001f;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}#signReasonHint{max-width:1100px;margin:0 auto 6px;color:var(--muted);font-size:.8rem;min-height:1.1em}#signReasonHint:empty{display:none}.stickyActionInner{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:16px}.stickyActionInner #resetBtn{width:auto;flex:0 0 auto;padding:10px 16px;margin-bottom:0;font-size:.85rem}.stickyActionInner #status{flex:1 1 auto;min-width:0;margin:0}.stickyActionInner #signBtn{width:auto;flex:0 0 auto;min-width:220px;padding:12px 24px;transition:background-color .15s}.stickyActionInner #signBtn.signBtn--ready{background:var(--success)}.stickyActionInner #signBtn.signBtn--ready:hover{background:var(--success-hover)}.stickyActionInner #signBtn.signBtn--loading{position:relative;color:transparent;pointer-events:none}.stickyActionInner #signBtn.signBtn--loading:after{content:"";position:absolute;top:50%;left:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:signBtnSpin .7s linear infinite}@keyframes signBtnSpin{to{transform:rotate(360deg)}}@media (max-width: 640px){.stickyActionInner{flex-direction:column-reverse;align-items:stretch;gap:6px}.stickyActionInner #signBtn{order:1;width:100%;min-width:0}.stickyActionInner #status{order:2;text-align:center;font-size:.8rem}.stickyActionInner #resetBtn{order:3;width:100%}}#status{min-height:1.2em;color:var(--muted);font-size:.85rem;white-space:pre-wrap}.preview-panel{grid-row:span 2}.zoomToolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.zoomToolbar button{width:auto;padding:4px 10px;font-size:.85rem}#zoomLabel{font-size:.85rem;color:var(--muted);min-width:3.5em;text-align:center}#zoomResetBtn{margin-left:auto}.toolbarDivider{width:1px;align-self:stretch;background:var(--border)}#pageInput{width:3.5em;padding:4px 6px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text);text-align:center;font-size:max(.85rem,16px)}#pageCountLabel{font-size:.85rem;color:var(--muted);white-space:nowrap}#canvasWrap{position:relative;overflow:auto;border:1px dashed var(--border);border-radius:8px;max-height:75vh;min-height:200px;background:repeating-conic-gradient(#00000008 0% 25%,transparent 0% 50%) 50% / 20px 20px;transition:outline-color .15s;outline:2px solid transparent;outline-offset:-2px}#canvasWrap.drag-active{outline-color:var(--accent);background-color:color-mix(in srgb,var(--accent) 8%,transparent)}#canvasWrap.pannable{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjQiIHdpZHRoPSIzIiBoZWlnaHQ9IjEzIiByeD0iMS41Ii8+PHJlY3QgeD0iMTMiIHk9IjIiIHdpZHRoPSIzIiBoZWlnaHQ9IjE1IiByeD0iMS41Ii8+PHJlY3QgeD0iMTciIHk9IjIiIHdpZHRoPSIzIiBoZWlnaHQ9IjE1IiByeD0iMS41Ii8+PHJlY3QgeD0iMjEiIHk9IjUiIHdpZHRoPSIzIiBoZWlnaHQ9IjEyIiByeD0iMS41Ii8+PHJlY3QgeD0iNC41IiB5PSIxNiIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjMiLz48cmVjdCB4PSI5IiB5PSIxNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEzIiByeD0iNiIvPjwvZz48L3N2Zz4=) 16 16,grab}#canvasWrap.pannable.panning{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMwMDAwMDAiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSIzIiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48cmVjdCB4PSIxMyIgeT0iOSIgd2lkdGg9IjMiIGhlaWdodD0iNiIgcng9IjEuNSIvPjxyZWN0IHg9IjE3IiB5PSI5IiB3aWR0aD0iMyIgaGVpZ2h0PSI2IiByeD0iMS41Ii8+PHJlY3QgeD0iMjEiIHk9IjkiIHdpZHRoPSIzIiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48cmVjdCB4PSI1IiB5PSIxOCIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjMiLz48cmVjdCB4PSI5IiB5PSIxMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE1IiByeD0iNiIvPjwvZz48L3N2Zz4=) 16 16,grabbing}#canvasWrap.panning{user-select:none}#stage{position:relative;display:table;margin:0 auto;line-height:0}#pdfCanvas{display:block}#dropHint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:16px;font-size:.95rem;font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--panel) 85%,transparent);pointer-events:none}#dropHint[hidden]{display:none}.stampOverlay{position:absolute;display:flex;flex-direction:column;cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNkYzI2MjYiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjQiIHdpZHRoPSIzIiBoZWlnaHQ9IjEzIiByeD0iMS41Ii8+PHJlY3QgeD0iMTMiIHk9IjIiIHdpZHRoPSIzIiBoZWlnaHQ9IjE1IiByeD0iMS41Ii8+PHJlY3QgeD0iMTciIHk9IjIiIHdpZHRoPSIzIiBoZWlnaHQ9IjE1IiByeD0iMS41Ii8+PHJlY3QgeD0iMjEiIHk9IjUiIHdpZHRoPSIzIiBoZWlnaHQ9IjEyIiByeD0iMS41Ii8+PHJlY3QgeD0iNC41IiB5PSIxNiIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjMiLz48cmVjdCB4PSI5IiB5PSIxNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEzIiByeD0iNiIvPjwvZz48L3N2Zz4=) 16 16,grab;touch-action:none;outline:2px solid var(--stamp-accent)}.stampOverlay.selected{outline-style:dashed;z-index:1}.stampOverlay.dragging{cursor:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNkYzI2MjYiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxyZWN0IHg9IjkiIHk9IjkiIHdpZHRoPSIzIiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48cmVjdCB4PSIxMyIgeT0iOSIgd2lkdGg9IjMiIGhlaWdodD0iNiIgcng9IjEuNSIvPjxyZWN0IHg9IjE3IiB5PSI5IiB3aWR0aD0iMyIgaGVpZ2h0PSI2IiByeD0iMS41Ii8+PHJlY3QgeD0iMjEiIHk9IjkiIHdpZHRoPSIzIiBoZWlnaHQ9IjYiIHJ4PSIxLjUiLz48cmVjdCB4PSI1IiB5PSIxOCIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjMiLz48cmVjdCB4PSI5IiB5PSIxMyIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE1IiByeD0iNiIvPjwvZz48L3N2Zz4=) 16 16,grabbing}.stampOverlay[hidden]{display:none}.stampOverlay img{width:100%;height:auto;display:block;pointer-events:none;flex-shrink:0}.stampDateText{width:80%;margin:0 auto;text-align:center;font-family:Dancing Script Local,cursive;color:#222;pointer-events:none;white-space:nowrap;overflow:hidden}.resizeHandle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:50%;background:var(--stamp-accent);border:2px solid var(--panel);cursor:nwse-resize;touch-action:none;display:none}.stampOverlay.selected .resizeHandle{display:block}.resizeHandle:before{content:"";position:absolute;inset:-14px}.deleteStampBtn{position:absolute;top:-10px;right:-10px;width:20px;height:20px;padding:0;border-radius:50%;background:var(--stamp-accent);color:#fff;border:2px solid var(--panel);font-size:13px;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center}.stampOverlay.selected .deleteStampBtn{display:flex}.toggleDateBtn{position:absolute;top:-10px;left:-10px;width:20px;height:20px;padding:0;border-radius:50%;background:var(--panel);color:var(--muted);border:2px solid var(--border);cursor:pointer;display:none;align-items:center;justify-content:center}.toggleDateBtn svg{width:12px;height:12px}.stampOverlay.selected .toggleDateBtn{display:flex}.toggleDateBtn.active{background:var(--stamp-accent);color:#fff;border-color:var(--panel)}
