:root{--ink:#17252b;--muted:#657574;--green:#0d675c;--mint:#e8f4f0;--cream:#f7f5ef;--line:#d9e1df;--danger:#a53b36;--shadow:0 18px 45px rgba(22,53,49,.08)}
*{box-sizing:border-box}html{background:var(--cream);color:var(--ink);font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif}body{margin:0}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1120px)/2));position:sticky;top:0;z-index:10}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:var(--ink)}.brand span:last-child{display:grid}.brand small{font-size:11px;color:var(--muted);letter-spacing:.12em}.mark{width:40px;height:40px;border-radius:50% 50% 46% 54%;background:var(--green);color:#fff;display:grid;place-items:center;font-family:serif;font-size:22px}.shell{max-width:1120px;margin:auto;padding:48px 24px 80px}footer{text-align:center;padding:30px;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}h1{font-family:"Noto Serif TC","Songti TC",serif;font-size:clamp(32px,5vw,48px);margin:.15em 0}h2{font-size:20px;margin:0 0 22px}.eyebrow{color:var(--green);font-size:12px;font-weight:800;letter-spacing:.2em}.muted,.hint{color:var(--muted)}.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.narrow{max-width:520px;margin:8vh auto}.centered{text-align:center}.stack{display:grid;gap:18px}.sections{max-width:860px;margin:auto}.sections>.card{position:relative;padding-top:38px}.step{position:absolute;right:24px;top:20px;color:#a8bbb7;font-size:12px;letter-spacing:.1em}.page-head,.guest-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:28px}.guest-head{display:block;text-align:center;max-width:750px;margin:0 auto 32px}.progress{height:4px;background:#dfe8e5;border-radius:9px;margin-top:20px}.progress i{display:block;width:100%;height:100%;background:var(--green)}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.span2{grid-column:span 2}label{display:grid;gap:8px;font-size:14px;font-weight:700}input,select,textarea,button,.button{font:inherit;border:1px solid #bdcac7;border-radius:10px;padding:12px 14px;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:3px solid #bce0d7;border-color:var(--green)}textarea{min-height:90px;resize:vertical}button,.button{cursor:pointer;text-decoration:none;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.primary{background:var(--green);border-color:var(--green);color:#fff}.danger{color:#fff;background:var(--danger);border-color:var(--danger)}.link-btn{border:0}.large{width:100%;padding:17px;font-size:17px}.full{width:100%}.actions,.inline,.filters{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.filters{margin-bottom:18px}.filters input{flex:1}.alert{padding:14px 18px;margin-bottom:18px;border-radius:10px;background:#fff1cf}.alert.error{background:#fce4e2;color:#8b2824}.alert.success{background:#dff4ea;color:#075c4f}dl{display:grid;grid-template-columns:155px 1fr;gap:12px;margin:0}dt{color:var(--muted)}dd{margin:0}.amount{font-size:22px;font-weight:800;color:var(--green)}.summary{max-width:860px;margin:0 auto 20px}.lock{background:var(--mint);padding:12px;border-radius:9px;color:var(--green);font-size:13px}.check{display:flex;grid-template:none;align-items:flex-start;gap:10px;margin-top:18px}.check input{width:20px;height:20px;margin:0}.signature-wrap{height:180px;border:2px dashed #9db2ad;border-radius:12px;position:relative;background:#fbfcfb;margin:12px 0;touch-action:none}.signature-wrap canvas{width:100%;height:100%;display:block}.signature-wrap span{position:absolute;inset:0;display:grid;place-items:center;color:#9aa7a5;pointer-events:none}.statement{padding:16px;border-left:4px solid var(--green);background:var(--mint);line-height:1.7}.final{text-align:center}.table-wrap{padding:0;overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:17px;border-bottom:1px solid var(--line);white-space:nowrap}td small{display:block;color:var(--muted)}.badge{padding:5px 9px;border-radius:20px;background:var(--mint);color:var(--green);font-size:12px}.empty{text-align:center;color:var(--muted);padding:40px}.timeline{list-style:none;padding:0}.timeline li{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.timeline span{color:var(--muted);font-size:12px}.copybox{display:flex}.copybox input{flex:1;border-radius:10px 0 0 10px}.copybox button{border-radius:0 10px 10px 0}.status-icon{width:64px;height:64px;margin:0 auto 20px;border-radius:50%;display:grid;place-items:center;background:#f3d9d6;color:var(--danger);font-size:30px}.status-icon.success{background:var(--mint);color:var(--green)}.success-list{margin-top:28px;text-align:left}.card-number{font:700 24px ui-monospace,monospace;letter-spacing:.12em}.danger-text{color:var(--danger)}details{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}details form{margin-top:15px}.quantities{grid-template-columns:repeat(3,1fr)}
@media(max-width:720px){.topbar{height:66px;padding:0 16px}.shell{padding:28px 14px 60px}.page-head{display:grid;align-items:start}.form-grid,.two-col{grid-template-columns:1fr}.span2{grid-column:auto}.card{padding:22px;border-radius:14px}.sections>.card{padding-top:34px}dl{grid-template-columns:1fr;gap:5px}dd{margin-bottom:10px}.quantities{grid-template-columns:repeat(3,1fr)}.filters{display:grid}.actions>*{flex:1}.table-wrap{margin-left:-14px;margin-right:-14px;border-radius:0}.signature-wrap{height:160px}h1{font-size:34px}.guest-head p{font-size:14px}.brand small{display:none}}
.signature-wrap canvas{touch-action:none!important;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html.signing{overflow:hidden;overscroll-behavior:none}body.signing{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}

.signature-wrap{touch-action:none!important;overscroll-behavior:none!important;-webkit-overflow-scrolling:auto}.signature-wrap *{touch-action:none!important}
