*{box-sizing:border-box;margin:0;padding:0}
:root{--ink:#111;--muted:#6b7280;--line:#e5e7eb;--soft:#f6f7f9;--accent:#2f6bff;--ok:#16a34a;--warn:#dc2626}
html,body{max-width:100%;overflow-x:hidden}
body{background:var(--soft);color:var(--ink);font-family:Pretendard,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
header{background:#fff;border-bottom:1px solid var(--line);padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.logo{font-weight:900;letter-spacing:-.02em}.logo span{color:var(--accent)}
main{max-width:860px;margin:0 auto;padding:22px 16px 60px}
.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:16px}
h1{font-size:24px;letter-spacing:-.03em;margin-bottom:6px}
h2{font-size:17px;margin-bottom:12px}
p.sub{color:var(--muted);font-size:14px}
label{display:block;font-size:13px;font-weight:700;margin:12px 0 6px}
input,textarea,select{width:100%;border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;font-size:15px;font-family:inherit;background:#fff;outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--accent)}
textarea{min-height:200px;resize:vertical}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:600px){.row{grid-template-columns:1fr}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:10px;padding:12px 18px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;background:var(--ink);color:#fff;text-decoration:none}
.btn.blue{background:var(--accent)}.btn.green{background:var(--ok)}.btn.red{background:var(--warn)}
.btn.ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn.sm{padding:7px 11px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btns{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.full{width:100%}
.hint{font-size:12.5px;color:var(--muted);margin-top:6px}
.link-box{display:flex;gap:8px;align-items:center;background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-top:6px}
.link-box code{flex:1;font-size:13.5px;overflow-wrap:anywhere;font-family:ui-monospace,Menlo,monospace}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{border-bottom:1px solid var(--line);padding:9px 6px;text-align:left;vertical-align:middle}
th{font-size:12px;color:var(--muted);font-weight:700}
td.sig img{height:40px;max-width:120px;object-fit:contain}
.tag{display:inline-block;font-size:12px;font-weight:700;padding:3px 9px;border-radius:99px;background:var(--soft);color:var(--muted)}
.tag.ok{background:#dcfce7;color:#166534}.tag.closed{background:#fee2e2;color:#991b1b}
.prog{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:10px 0 4px}
.prog i{display:block;height:100%;background:var(--ok);transition:width .4s}
.canvas-wrap{position:relative;border:1.5px dashed #cbd5e1;border-radius:12px;background:#fafafa;overflow:hidden}
canvas{display:block;width:100%;height:200px;touch-action:none;cursor:crosshair}
.canvas-hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#cbd5e1;pointer-events:none;font-size:14px}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#111;color:#fff;padding:10px 18px;border-radius:99px;font-size:14px;opacity:0;transition:.25s;z-index:99;pointer-events:none;max-width:90vw;text-align:center}
.toast.show{opacity:1}
.center{text-align:center;padding:50px 20px}
.big{font-size:46px;margin-bottom:10px}
.names{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.names span{font-size:13px;padding:4px 10px;border-radius:99px;background:var(--soft);border:1px solid var(--line)}
.names span.ok{background:#dcfce7;border-color:#bbf7d0;color:#166534}
.warn-box{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:10px;padding:10px 12px;font-size:13.5px;margin-top:10px}
.hidden{display:none!important}
@media print{header,.no-print,.btns{display:none!important}body{background:#fff}.card{border:0;padding:0}main{padding:0}}
