:root{--bg: #f7faf8;--ink: #1e2a2b;--sub: #5c6b6d;--mint: #2e8b6a;--line: #d9e4df}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;background:var(--bg);color:var(--ink)}.app{max-width:1400px;margin:0 auto;padding:24px}header h1{font-size:22px;margin:0 0 20px;color:var(--mint)}.muted{color:var(--sub)}kbd{background:#fff;border:1px solid var(--line);border-bottom-width:3px;border-radius:6px;padding:2px 8px;font-family:inherit}button{font:inherit;padding:10px 18px;border-radius:10px;border:1px solid var(--line);background:#fff;cursor:pointer}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--mint);color:#fff;border-color:var(--mint);font-weight:700}input,select{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.paste-zone{border:3px dashed var(--line);border-radius:24px;padding:70px 40px;text-align:center;background:#fff;transition:.15s}.paste-zone.drag{border-color:var(--mint);background:#eef8f3}.paste-icon{display:inline-block;font-size:28px;font-weight:900;color:var(--mint);border:3px solid var(--mint);border-radius:16px;padding:14px 28px;margin-bottom:22px}.paste-zone h2{font-size:26px;margin:0 0 12px}.paste-zone p{font-size:18px}.ocr-wait{text-align:center}.ocr-wait img{max-width:100%;max-height:50vh;border-radius:12px;box-shadow:0 8px 30px #0000001a;opacity:.6}.spinner{width:44px;height:44px;border:5px solid var(--line);border-top-color:var(--mint);border-radius:50%;margin:24px auto 12px;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.warn{background:#fff4e0;border:1px solid #f0c070;border-radius:10px;padding:10px 14px;margin:10px 0}.warn.soft{background:#fffbe6;border-color:#e6d98a}.review{display:grid;grid-template-columns:1fr 1.3fr;gap:28px}.review-left img{width:100%;border-radius:12px;box-shadow:0 8px 30px #0000001a;position:sticky;top:16px}.patient-row{display:flex;gap:16px;margin-top:16px}.patient-row label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--sub);flex:1}.review-right h2{margin:0 0 6px}.review table{width:100%;border-collapse:collapse;margin-top:14px;font-size:15px}.review th,.review td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.review tr.unmatched td{background:#fbeaea}.review tr.lowconf td{background:#fffbe6}.review td select{max-width:260px}.fam{margin-left:8px;color:var(--sub);font-size:13px}button.x{padding:4px 8px;color:#a00}.add-row{position:relative;display:flex;gap:10px;margin-top:14px}.add-row input{flex:1}.candidates{position:absolute;top:44px;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;display:flex;flex-wrap:wrap;gap:6px;z-index:5;box-shadow:0 8px 24px #0000001a}.candidates small{color:var(--sub)}.summary-head{display:flex;justify-content:space-between;align-items:center}.summary-head button{padding:6px 14px;font-weight:700;color:var(--mint);border-color:var(--mint)}.summary{margin-top:20px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chips span{border:2px solid;border-radius:999px;padding:3px 12px;font-weight:700;font-size:14px}.actions{display:flex;justify-content:space-between;margin:22px 0 40px}.show{position:fixed;inset:0;background:#0f1a1c;cursor:pointer;-webkit-user-select:none;user-select:none}.show-top{position:absolute;top:12px;right:16px;z-index:10;display:flex;gap:8px;align-items:center;cursor:default}.show-top .counter,.show-top .save{color:#cfe3da;font-size:14px;margin-right:8px}.show-top button{padding:8px 14px;background:#ffffffeb}.show-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.show-stage>div{max-width:100vw;max-height:100vh;aspect-ratio:16 / 9}.print-root{background:#fff}.print-page{width:1920px;height:1080px;overflow:hidden;page-break-after:always;break-after:page}.print-scale{width:1920px;height:1080px}@media print{@page{size:1920px 1080px;margin:0}body{background:#fff}.show-top{display:none}}
