:root{--ink:#17221d;--muted:#657069;--green:#176b4b;--green2:#0f5138;--line:#dce3de;--paper:#f7f4ec;--bg:#edf1ed;--white:#fff;--danger:#a43a3a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif}header{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;padding:42px max(24px,calc((100vw - 1280px)/2));background:#14231c;color:white}h1{margin:6px 0;font:700 clamp(30px,4vw,48px)/1.1 Georgia,"Songti SC",serif}header p{margin:0;color:#c8d4ce}.eyebrow{font-size:11px;letter-spacing:.2em;color:#8fc4aa}.privacy{border:1px solid #52685d;border-radius:999px;padding:10px 14px;font-size:13px;white-space:nowrap}main{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr);gap:20px;max-width:1280px;margin:24px auto;padding:0 24px}.panel{background:white;border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:0 12px 35px rgba(25,45,35,.06)}.step-title{display:flex;gap:12px;align-items:flex-start}.step-title>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--green);color:#fff;font-weight:700}.step-title h2{font-size:18px;margin:2px 0 3px}.step-title p{font-size:13px;color:var(--muted);margin:0}.second{margin-top:28px}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}.upload{position:relative;padding:20px;border:1.5px dashed #aab8b0;border-radius:12px;cursor:pointer;background:#fbfcfb}.upload:hover{border-color:var(--green);background:#f5faf7}.upload strong,.upload small{display:block}.upload small{margin-top:4px;color:var(--muted)}.upload input{position:absolute;inset:0;opacity:0;cursor:pointer}.hint{font-size:11px;color:#7d857f}.tabs{display:flex;gap:8px;margin:16px 0 10px}.tab,.secondary,.primary{border:0;border-radius:9px;padding:10px 15px;font-weight:650;cursor:pointer}.tab{background:#eef2ef;color:#536058}.tab.active{background:#dceee4;color:var(--green2)}.editor-wrap{height:430px;position:relative;display:grid;place-items:center;background:#17201c;border-radius:12px;overflow:hidden}.editor-wrap canvas{max-width:100%;max-height:100%;touch-action:none}.empty{position:absolute;color:#abb6b0}.button-row{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.secondary{background:#edf1ee;color:#34443b}.primary{background:var(--green);color:white}.primary:hover{background:var(--green2)}.danger{margin-right:auto;color:var(--danger)}.settings{margin:18px 0;display:grid;gap:12px}.settings label{display:flex;align-items:center;justify-content:space-between;font-size:13px}.settings input[type=number]{width:72px;padding:7px;border:1px solid var(--line);border-radius:7px}.settings .check{justify-content:flex-start;gap:8px}.paper-shell{padding:16px;background:#dfe5e1;border-radius:12px;overflow:auto}.paper{position:relative;margin:auto;width:min(100%,420px);aspect-ratio:210/297;background:white;box-shadow:0 5px 18px #aab3ad}.card-slot{position:absolute;left:50%;transform:translateX(-50%);display:grid;place-items:center;overflow:hidden;border:1px dashed #c8ceca;color:#9da59f;font-size:11px;background:#fafafa}.card-slot img{width:100%;height:100%;object-fit:fill}.card-slot.enhance img{filter:brightness(1.045) contrast(1.055) saturate(.92)}footer{text-align:center;color:#748078;font-size:12px;padding:0 20px 26px}@media(max-width:900px){header{align-items:flex-start;flex-direction:column}main{grid-template-columns:1fr}.editor-wrap{height:360px}.privacy{white-space:normal}}@media(max-width:560px){.upload-grid{grid-template-columns:1fr}.panel{padding:17px}main{padding:0 12px}.editor-wrap{height:300px}}
@page{size:A4;margin:0}@media print{body{background:white}header,.controls,.preview-panel>.step-title,.settings,.button-row,footer{display:none!important}main{display:block;margin:0;padding:0}.preview-panel{display:block;padding:0;border:0;box-shadow:none}.paper-shell{display:block;padding:0;background:white;overflow:visible}.paper{display:block;position:fixed;inset:0;width:210mm;height:297mm;box-shadow:none}.card-slot{width:var(--card-mm)!important;height:calc(var(--card-mm) / 1.585)!important;border:0}.card-slot#printFront{top:var(--top-mm)!important}.card-slot#printBack{top:calc(var(--top-mm) + var(--card-mm) / 1.585 + 12mm)!important}}
