:root{--font:-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", "Malgun Gothic", sans-serif;--sans:var(--font);--radius:16px;--radius-sm:12px;--text:#0a1230;--muted:#566085;--bg:#f6f9ff;--bg2:#fff;--panel:#fff;--border:#dbe3f5;--accent:#1d4ed8;--accent-hover:#1e40af;--accent-ink:#fff;--accent-text:#1d4ed8;--accent2:#06b6d4;--accent-bg:#eef3ff;--glow:#2563eb29;--shadow:0 1px 2px #1428780f, 0 10px 28px -10px #1428782e;--ok:#3d7a5a;--warn:#a8641a;--danger:#b42318;font:15px/1.65 var(--font);color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--heading:#0a1230;--header-bg:#ffffffdb;--surface:#fff;--surface-sunken:#eef3ff;--stage:#e6ecfa;--chip-bg:#eef3ff;--border-strong:#c3cfec;--foot:#fff;--foot-ink:#566085;--wait-bg:#fef3c7;--wait-line:#fcd34d;--done-bg:#dcfce7;--done-line:#86efac;--reject-bg:#fde8e6;--reject-line:#fca5a5}html.dark-mode{--text:#e8ecf8;--muted:#98a2c3;--bg:#0b0d14;--bg2:#0f1220;--panel:#141826;--border:#262c40;--accent:#6b9bff;--accent-hover:#8db0ff;--accent-ink:#06122e;--accent-text:#8db0ff;--accent2:#4fd1c5;--accent-bg:#14213f;--glow:#6b9bff33;--shadow:0 0 0 1px #ffffff0d;--ok:#6fcf97;--warn:#e0a85a;--danger:#f87171;--heading:#e8ecf8;--header-bg:#0b0d14db;--surface:#141826;--surface-sunken:#0f1220;--stage:#080a10;--chip-bg:#141826;--border-strong:#262c40;--foot:#080a10;--foot-ink:#98a2c3;--wait-bg:#3d2f00;--wait-line:#b88a00;--done-bg:#17301f;--done-line:#2d5a3b;--reject-bg:#3a1c19;--reject-line:#6b2f29;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{margin:0}a{color:var(--accent-text);text-underline-offset:2px}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.03em;font-weight:800;line-height:1.25}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.topbar,.public-header{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}html:not(.dark-mode) .brand-logo{mix-blend-mode:multiply}html.dark-mode .brand-logo{background:#fff;border-radius:8px;padding:2px 4px}.manual-delivery>summary{cursor:pointer;font-weight:600;list-style:none}.manual-delivery>summary::-webkit-details-marker{display:none}.manual-delivery>summary:before{content:"▸";width:1.2em;color:var(--accent);display:inline-block}.manual-delivery[open]>summary:before{content:"▾"}.screen{flex-direction:column;gap:14px;display:flex}.screen h3{font-size:18px}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--muted);font-size:13px}.field input,.field select,.field textarea{font:inherit;border:1px solid var(--border);background:var(--panel);min-height:44px;color:var(--text);border-radius:10px;padding:10px 12px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--glow);border-color:var(--accent)}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.btn{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--panel);min-height:44px;color:var(--text);cursor:pointer;padding:10px 20px;font-weight:700;transition:border-color .18s,background .18s,color .18s}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent-text)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-ink)}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.block{width:100%}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);padding:9px 8px;font-size:14px}th{color:var(--muted);font-weight:500}.badge{background:var(--bg);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.badge.wait{background:var(--wait-bg);color:var(--warn)}.badge.done{background:var(--done-bg);color:var(--ok)}.badge.work{background:var(--accent-bg);color:var(--accent-text)}.badge.off{background:var(--stage);color:var(--muted)}.badge.reject{background:var(--reject-bg);color:var(--danger)}.check{align-items:flex-start;gap:8px;font-size:14px;display:flex}.box{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-sunken);padding:10px 12px;font-size:13px}.box.warn{background:var(--wait-bg);border-color:var(--wait-line)}.box.err{background:var(--reject-bg);border-color:var(--reject-line);color:var(--danger)}.box.ok{background:var(--done-bg);border-color:var(--done-line);color:var(--ok)}.check input[type=checkbox]{flex:none;width:auto;margin-top:4px}.lang-switch{color:var(--muted,#666);align-items:center;gap:6px;font-size:14px;display:inline-flex}.lang-btn{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:4px 2px}.lang-btn[aria-pressed=true]{color:var(--text,inherit);text-underline-offset:4px;font-weight:700;text-decoration:underline}.theme-toggle{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:5px;display:inline-flex}.theme-toggle span{border-radius:999px;justify-content:center;align-items:center;width:32px;height:28px;line-height:1;display:flex}.theme-toggle span.on{background:var(--accent-bg);color:var(--text)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.shell{grid-template-columns:250px 1fr;min-height:100vh;display:grid}.nav{background:var(--panel);border-right:1px solid var(--border);height:100vh;padding:16px 12px;position:sticky;top:0;overflow-y:auto}.nav h1{margin-bottom:4px;font-size:16px}.nav .draft{color:var(--warn);margin-bottom:12px;font-size:12px}.nav h2{color:var(--muted);margin:14px 4px 4px;font-size:12px}.nav button{text-align:left;width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 8px;display:block}.nav button:hover{background:var(--bg)}.nav button.on{background:var(--accent-bg);color:var(--accent);font-weight:600}.stage{flex-direction:column;gap:12px;min-width:0;padding:24px;display:flex}.stage .note{color:var(--muted);max-width:720px;font-size:13px}.frame-desktop{background:var(--panel);border:1px solid var(--border);border-radius:10px;max-width:900px;padding:24px}.frame-phone{background:var(--panel);border:8px solid #20242d;border-radius:28px;width:375px;max-width:100%;min-height:640px;padding:20px 16px}.pdf{border:1px dashed var(--border);height:200px;color:var(--muted);text-align:center;background:#fafafa;border-radius:6px;place-items:center;font-size:13px;display:grid}.sig{border:1px solid var(--border);touch-action:none;background:#fff;border-radius:6px;width:100%;height:150px;display:block}.log{font-family:ui-monospace,Consolas,monospace;font-size:13px}.log div{border-bottom:1px solid var(--border);padding:3px 0}.steps{color:var(--muted);gap:6px;font-size:12px;display:flex}.steps span.on{color:var(--accent);font-weight:700}@media (width<=800px){.shell{grid-template-columns:1fr}.nav{height:auto;position:static}}input,select,textarea,button{font-size:16px}.topbar{background:var(--header-bg);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-height:72px;padding:10px max(5%,50% - 560px);display:flex}.topbar a{color:inherit;font-weight:700;text-decoration:none}.page{width:100%;max-width:960px;margin:0 auto;padding:16px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:16px}.stack{flex-direction:column;gap:14px;display:flex}.muted{color:var(--muted);font-size:13px}.page-title{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.page-title h2{font-size:20px}.center-screen{place-items:center;min-height:100dvh;padding:16px;display:grid}.center-screen .card{width:100%;max-width:380px}.field input,.field select,.field textarea{width:100%;min-width:0}.kv{grid-template-columns:120px 1fr;gap:8px 12px;display:grid}.kv dt{color:var(--muted);font-size:14px}.kv dd{overflow-wrap:anywhere;margin:0}.hash{overflow-wrap:anywhere;font-family:ui-monospace,Consolas,monospace;font-size:12px}.list-table td a{color:var(--accent-text);font-weight:600;text-decoration:none}@media (width<=640px){.kv{grid-template-columns:1fr;gap:2px}.kv dd{margin-bottom:8px}.responsive-table thead{display:none}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{width:100%;display:block}.responsive-table tr{border:1px solid var(--border);background:var(--panel);border-radius:8px;margin-bottom:10px;padding:8px 10px}.responsive-table td{border:0;padding:3px 0}.responsive-table td:before{content:attr(data-label) " ";color:var(--muted);margin-right:6px;font-size:12px}.card{padding:14px}.page{padding:12px}}.sig-pad{border:1px solid var(--border);touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#fff;border-radius:6px;width:100%;display:block}.log-row{border-top:1px solid var(--border);flex-direction:column;gap:2px;padding:8px 0;font-size:14px;display:flex}.pdf-frame{border:1px solid var(--border);background:var(--surface-sunken);border-radius:6px;width:100%;height:420px}@media (width<=640px){.pdf-frame{height:300px}}.proof-img{border:1px solid var(--border);background:var(--surface-sunken);border-radius:6px;max-width:100%;max-height:360px;display:block}.public-page{min-height:100dvh}.public-header{background:var(--header-bg);border-bottom:1px solid var(--border);align-items:center;min-height:72px;padding:10px max(5%,50% - 560px);display:flex}.public-card{width:calc(100% - 24px);max-width:520px;margin:16px auto}.sign-steps{color:var(--muted);flex-wrap:wrap;gap:6px;font-size:12px;display:flex}.sign-steps .on{color:var(--accent-text);font-weight:700}.doc-page{border:1px solid var(--border);aspect-ratio:auto 210/297;background:#fff;border-radius:4px;width:100%;height:auto;display:block}.site-shell{flex-direction:column;min-height:100dvh;display:flex}.site-main{flex:1}.site-shell>.center-screen{min-height:0}.brand{color:var(--heading);align-items:center;gap:12px;font-weight:800;text-decoration:none;display:flex}.brand-logo{width:auto;height:48px;display:block}.brand-text{letter-spacing:-1px;white-space:nowrap;font-size:18px}@media (width>=801px){.brand-logo{height:56px}.brand-text{font-size:21px}}.service-title{letter-spacing:-1px;color:var(--heading);margin:8px 0 18px;font-size:clamp(26px,5vw,34px);font-weight:800;line-height:1.2}.login-box{width:100%;max-width:380px}.login-box .service-title{text-align:center}.public-body{width:calc(100% - 24px);max-width:520px;margin:24px auto 16px}.public-body .public-card{width:100%;margin:0}@media (width<=440px){.topbar .muted{display:none}}@media (width<=360px){.brand-logo{height:42px}.brand-text{font-size:16px}}.site-footer{color:var(--foot-ink);background:var(--foot);border-top:1px solid var(--border);padding:28px 0;font-size:13px}.footer-inner{text-align:left;width:90%;max-width:1120px;margin:0 auto}.site-footer strong{color:var(--text)}.footer-copy{opacity:.8;margin-top:8px;font-size:12px}.footer-item{opacity:.8;white-space:nowrap;margin-left:8px}.footer-item:before{content:"| "}@media (width<=600px){.footer-inner strong,.footer-item{margin-left:0;display:block}.footer-item{margin-top:2px}.footer-item:before{content:none}}.page:has(.create-layout){max-width:1600px}.create-layout{grid-template-columns:minmax(340px,480px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.create-form{display:contents}.create-form>*{order:3;grid-column:1;min-width:0}.create-form>:first-child{order:1}.create-preview{flex-direction:column;order:2;grid-area:1/2/span 8;gap:6px;min-width:0;display:flex;position:sticky;top:12px}.create-preview-frame,.create-preview-empty{border:1px solid var(--border);background:var(--surface-sunken);border-radius:6px;width:100%;height:calc(100vh - 150px);min-height:480px}.create-preview-empty{text-align:center;place-items:center;padding:16px;display:grid}@media (width<=1000px){.create-layout{grid-template-columns:minmax(0,1fr)}.create-preview{grid-area:auto/1;position:static}.create-preview-frame,.create-preview-empty{height:60vh;min-height:320px}}.doc-page.zoomable{cursor:zoom-in}.zoom-overlay{z-index:50;background:#111827;flex-direction:column;display:flex;position:fixed;inset:0}.zoom-bar{background:#1f2937;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;display:flex}.zoom-page{color:#fff;margin-right:auto;font-size:14px}.zoom-levels{gap:6px;display:flex}.zoom-scroll{touch-action:pan-x pan-y pinch-zoom;-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.zoom-image{background:#fff;max-width:none;height:auto;display:block}.create-preview-frame{background:var(--stage);padding:8px;overflow:auto}.pdf-preview-pages{flex-direction:column;gap:8px;display:flex}.pdf-preview-page{background:#fff;height:auto;display:block;box-shadow:0 1px 3px #00000040}.pdf-preview-note{text-align:center;padding:6px 0;font-size:13px}.pdf-viewer{background:var(--stage);height:60vh;min-height:320px;padding:8px;overflow:auto}.pdf-native-frame{background:var(--surface-sunken);border:0;width:100%;height:100%;display:block}.sign-native{border:1px solid var(--border);border-radius:4px;height:75vh;min-height:480px}.placed-pages{flex-direction:column;gap:10px;display:flex}.placed-page-no{text-align:center;color:var(--muted,#6b7280);margin-top:2px;font-size:12px}.page-overlay{position:absolute;inset:0}.page-overlay.pickable{cursor:crosshair}.sign-box{box-sizing:border-box;background:#9ca3af1f;border:2px dashed #9ca3af;border-radius:4px;place-items:center;font-size:12px;display:grid;position:absolute;overflow:hidden}.sign-box.mine{border:2px solid var(--accent);color:var(--accent-text);background:#1d4ed81a}.sign-box.counter{border:2px dashed var(--accent);color:var(--accent-text);background:#1d4ed80a}.sign-box.clickable{cursor:pointer;animation:1.6s ease-in-out infinite sign-box-pulse}.sign-box.movable{cursor:move;touch-action:none}.sign-box-label{text-align:center;font-weight:700;line-height:1.2}.sign-box-image{object-fit:contain;max-width:100%;max-height:100%}@keyframes sign-box-pulse{0%,to{box-shadow:0 0 #1d4ed866}50%{box-shadow:0 0 0 6px #1d4ed800}}.placement-bar{flex-wrap:wrap;gap:6px;display:flex}.popup-backdrop{z-index:60;background:#11182799;place-items:center;padding:12px;display:grid;position:fixed;inset:0}.popup-box{background:var(--surface);border-radius:10px;flex-direction:column;gap:10px;width:100%;max-width:520px;padding:16px;display:flex}.hash-line{flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;display:flex}.hash-chip{border:1px solid var(--border);background:var(--chip-bg);color:var(--text);border-radius:6px;padding:2px 8px}.hash-arrow,.hash-same{color:var(--muted)}.hash-line-stack{flex-direction:column;align-items:flex-start;gap:4px}.hash-row{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:flex}.hash-chip{overflow-wrap:anywhere;max-width:100%}.contract-cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.contract-card{border:1px solid var(--border);border-radius:var(--radius);height:100%;box-shadow:var(--shadow);background:var(--panel);color:inherit;flex-direction:column;gap:10px;padding:14px 16px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.contract-card:hover,.contract-card:focus-visible{border-color:var(--accent);outline:none;transform:translateY(-2px)}.contract-card-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.contract-card-title{overflow-wrap:anywhere;font-size:16px}.contract-card-info{flex-wrap:wrap;gap:4px 20px;margin:0;font-size:14px;display:flex}.contract-card-info div{gap:8px;display:flex}.contract-card-info dt{color:var(--muted)}.contract-card-info dd{margin:0}.contract-card-head .badge{white-space:nowrap;flex-shrink:0}.timeline{margin:4px 0 0;padding:0;list-style:none;position:relative}.timeline-item{gap:14px;padding-bottom:20px;display:flex;position:relative}.timeline-item:not(:last-child):before{content:"";background:var(--border);width:2px;position:absolute;top:28px;bottom:0;left:13px}.timeline-dot{background:var(--accent);width:28px;height:28px;color:var(--accent-ink);border-radius:50%;flex:0 0 28px;place-items:center;font-size:14px;font-weight:700;display:grid}.timeline-body{flex-direction:column;gap:3px;min-width:0;padding-top:3px;display:flex}.timeline-body .hash{color:var(--text)}.timeline-item.minor .timeline-dot{background:0 0;flex-basis:28px}.timeline-item.minor .timeline-dot:after{content:"";background:var(--border);border:2px solid var(--border-strong);border-radius:50%;width:10px;height:10px}.timeline-item.minor .timeline-body strong{color:var(--muted);font-weight:600}.timeline-item.old{opacity:.6}.timeline-item.pending .timeline-dot{border:2px dashed var(--border-strong);color:var(--muted);background:0 0}.timeline-item.pending .timeline-body strong{color:var(--muted);font-weight:600}.placement-editor{border:1px solid var(--border);background:var(--stage);border-radius:6px;flex-direction:column;height:calc(100vh - 150px);min-height:480px;display:flex}.placement-toolbar{border-bottom:1px solid var(--border);background:var(--panel);border-radius:6px 6px 0 0;flex-direction:column;gap:4px;padding:8px;display:flex}.placement-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.zoom-controls{align-items:center;gap:6px;margin-left:auto;display:inline-flex}.zoom-value{text-align:center;min-width:44px;font-size:13px}.placement-scroll{flex:1;padding:8px;overflow:auto}.placement-scroll.picking{cursor:crosshair}@media (width<=1000px){.placement-editor{height:70vh;min-height:320px}}.placed-pages,.sign-box{-webkit-user-select:none;user-select:none}.placement-scroll{overflow-anchor:none}.sign-doc-scroll{border:1px solid var(--border);background:var(--stage);overflow-anchor:none;border-radius:6px;height:70vh;min-height:360px;padding:8px;overflow:auto}.sign-box.dim{opacity:.4;cursor:not-allowed}.contract-card.static,.contract-card.static:hover{cursor:default;box-shadow:none;border-color:var(--border);transform:none}html.dark-mode .zoom-overlay{background:var(--bg)}html.dark-mode .zoom-bar{background:var(--panel)}html.dark-mode .sign-box.mine{background:#6b9bff24}html.dark-mode .sign-box.counter{background:#6b9bff12}html.dark-mode .sign-box.clickable{animation-name:sign-box-pulse-dark}@keyframes sign-box-pulse-dark{0%,to{box-shadow:0 0 #6b9bff73}50%{box-shadow:0 0 0 6px #6b9bff00}}
