:root{--color-primary:#0c447c;--color-primary-bg:#e6f1fb;--color-success:#27500a;--color-success-bg:#eaf3de;--color-text:#1a1a1a;--color-text-muted:#3a3a3a;--color-border:#a0a0a0;--color-bg:#fff;--color-bg-secondary:#f4f4f2;--radius:10px}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--color-bg-secondary);color:var(--color-text);font-family:Pretendard,Malgun Gothic,맑은 고딕,-apple-system,BlinkMacSystemFont,sans-serif;font-size:20px;line-height:1.7;-webkit-text-size-adjust:100%}a{color:inherit}.app-container{max-width:480px;margin:0 auto;padding:3.5rem 1rem 4rem;min-height:100vh;background:var(--color-bg)}h1{font-size:28px;margin:0 0 1rem}h1,h2{font-weight:800}h2{font-size:24px;margin:1.5rem 0 .75rem}p{margin:0 0 1rem}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.1rem;margin-bottom:1rem}.card-muted{background:var(--color-bg-secondary)}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:64px;font-size:20px;font-weight:800;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);cursor:pointer;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-primary-bg);color:var(--color-primary);border-color:var(--color-primary-bg)}.btn-success{background:var(--color-success-bg);color:var(--color-success);border-color:var(--color-success-bg)}.btn-disabled{opacity:.45;pointer-events:none}.btn-ghost{background:transparent;border:none;color:var(--color-text-muted);font-size:17px;font-weight:500;min-height:48px}.person-btn{display:block;width:100%;text-align:left;min-height:64px;padding:10px 14px;margin-bottom:10px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-bg);font-size:19px;cursor:pointer}.person-btn.selected{border:2px solid var(--color-primary);background:var(--color-primary-bg)}.person-btn .name{font-weight:700}.person-btn .addr{display:block;font-size:15px;color:var(--color-text-muted);margin-top:2px}input[type=text],select,textarea{width:100%;font-size:20px;font-family:inherit;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text)}select{height:60px}textarea{line-height:1.6;resize:vertical}label.field-label{display:block;font-size:16px;color:var(--color-text-muted);margin-bottom:6px}.dots{display:flex;justify-content:center;gap:8px;margin:1.25rem 0}.dot{width:9px;height:9px;border-radius:50%;background:var(--color-border)}.dot.active{background:var(--color-primary)}.badge{display:inline-flex;align-items:center;gap:6px;font-size:15px}.badge,.original-text{color:var(--color-text-muted)}.original-text{background:var(--color-bg-secondary);border-radius:var(--radius);padding:.75rem;font-size:16px;line-height:1.6;margin-top:.5rem}.visit-card{display:block;width:100%;text-align:left;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem 1.15rem;margin-bottom:.85rem;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s;font-family:inherit;font-size:inherit;color:inherit}.visit-card:hover{border-color:var(--color-primary);box-shadow:0 2px 8px rgba(12,68,124,.1)}.visit-card:active{transform:scale(.98)}.visit-card.reserved{border-left:4px solid #e67e22}.visit-card-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.visit-order{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:16px;font-weight:700;flex-shrink:0}.visit-name{font-weight:800;font-size:22px}.visit-badges{display:flex;gap:6px;margin-left:auto;flex-shrink:0}.badge-reserved{gap:4px;background:#fef0db;color:#b85c00;font-weight:700}.badge-reserved,.badge-visit-count{display:inline-flex;align-items:center;font-size:14px;padding:4px 10px;border-radius:6px}.badge-visit-count{background:var(--color-bg-secondary);color:var(--color-text-muted);font-weight:600}.visit-addr{font-size:16px;color:var(--color-text-muted);margin-top:6px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .2s ease-out}.modal-content{background:var(--color-bg);border-radius:14px;padding:1.5rem 1.25rem;max-width:440px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.18);animation:slideUp .25s cubic-bezier(.16,1,.3,1)}.modal-content h2{font-size:18px;margin:0 0 .5rem}.modal-content p{font-size:14px;color:var(--color-text-muted);margin:0 0 1rem}.modal-actions{display:flex;gap:8px;margin-top:1rem}.modal-actions .btn{flex:1 1;min-height:48px;font-size:16px}.test-section{background:var(--color-primary-bg);border-radius:var(--radius);padding:1rem 1.1rem;margin-bottom:1rem;border:1px dashed var(--color-primary)}.test-section h3{font-size:16px;font-weight:700;color:var(--color-primary);margin:0 0 .5rem}.test-section p{font-size:14px;color:var(--color-text-muted);margin:0 0 .75rem}.navbar{position:fixed;top:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 .75rem;background:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:900}.navbar-left,.navbar-right{width:80px;display:flex;align-items:center}.navbar-right{justify-content:flex-end}.navbar-center{flex:1 1;text-align:center;font-size:18px;font-weight:700;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-back{background:none;border:none;font-family:inherit;font-size:16px;font-weight:600;color:var(--color-primary);cursor:pointer;padding:6px 4px;white-space:nowrap}.nav-back:active{opacity:.6}.nav-logo{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9px;background:#1a1a1a;color:#fff;font-size:16px;font-weight:800}.nav-home{font-size:24px;text-decoration:none;padding:4px;line-height:1}.nav-home:active{opacity:.6}.btn-primary,button.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:12px 20px;min-height:64px;font-size:20px;font-weight:700;font-family:inherit;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;width:100%}.btn-primary:active{opacity:.85;transform:scale(.98)}.btn-primary:disabled{opacity:.4;pointer-events:none}.btn-cancel,button.btn-cancel{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;min-height:64px;font-size:20px;font-weight:600;font-family:inherit;background:var(--color-bg-secondary);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer}.btn-cancel:active{opacity:.7}.btn-sm{padding:8px 16px;min-height:44px;font-size:16px;font-weight:600;border-radius:8px;border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);font-family:inherit;cursor:pointer}.btn-sm:active{opacity:.7}.excel-uploader{margin-bottom:1.25rem}.excel-upload-trigger{text-align:center}.excel-upload-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:64px;font-size:20px;font-weight:800;font-family:inherit;background:var(--color-bg);color:var(--color-primary);border:2px dashed var(--color-primary);border-radius:var(--radius);cursor:pointer;transition:background .15s}.excel-upload-btn:active{background:var(--color-primary-bg)}.excel-preview{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem}.excel-preview-header{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:600;margin-bottom:.75rem}.excel-count{background:var(--color-primary-bg);color:var(--color-primary);font-size:13px;font-weight:700;padding:2px 10px;border-radius:6px}.excel-date-row{display:flex;align-items:center;gap:8px;margin-bottom:.75rem;font-size:14px}.excel-date-row label{font-weight:600;white-space:nowrap}.excel-date-row input[type=date]{flex:1 1;font-size:15px;font-family:inherit;padding:6px 10px;border:1px solid var(--color-border);border-radius:8px}.excel-table-wrap{overflow-x:auto;margin-bottom:.75rem;-webkit-overflow-scrolling:touch}.excel-table{width:100%;border-collapse:collapse;font-size:13px}.excel-table th{background:var(--color-bg-secondary);text-align:left;font-weight:700;border-bottom:1px solid var(--color-border)}.excel-table td,.excel-table th{padding:6px 8px;white-space:nowrap}.excel-table td{border-bottom:1px solid #eee}.excel-table .td-address{max-width:150px;overflow:hidden;text-overflow:ellipsis}.excel-actions{display:flex;gap:8px}.excel-actions .btn-cancel{flex:0 0 auto}.excel-actions .btn-primary{flex:1 1}.excel-loading{text-align:center;padding:2rem}.excel-loading p{font-size:15px;color:var(--color-text-muted)}.excel-result{text-align:center;padding:1.5rem}.excel-result-icon{font-size:40px;margin-bottom:.5rem}.excel-result p{font-size:15px;margin-bottom:1rem}.sms-modal h3{font-size:17px;margin:0 0 1rem}.sms-field{margin-bottom:.75rem}.sms-field label{display:block;font-size:13px;font-weight:600;color:var(--color-text-muted);margin-bottom:4px}.sms-field span{font-size:16px}.sms-field select,.sms-field textarea{width:100%;font-size:15px;font-family:inherit;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px}.sms-field textarea{resize:vertical;line-height:1.6}.sms-actions{display:flex;gap:8px;margin-top:1rem}.sms-actions .btn-cancel{flex:0 0 auto}.sms-actions .btn-primary{flex:1 1}.sms-sent-check{font-size:48px;text-align:center;margin-bottom:.5rem}.sms-sent-msg{font-size:16px!important;font-weight:600;color:var(--color-text)!important;text-align:center}.sms-sent-sub{font-size:14px!important;text-align:center}.ledger-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:1rem}.ledger-header h1{margin:0;flex:1 1}.ledger-search{position:relative;margin-bottom:1rem}.ledger-search input{width:100%;font-size:15px;font-family:inherit;padding:10px 12px 10px 36px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-bg)}.ledger-search:before{content:"🔍";position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:15px}.ledger-stats{display:flex;gap:8px;margin-bottom:1rem}.ledger-stat{flex:1 1;text-align:center;background:var(--color-bg-secondary);border-radius:8px;padding:8px 4px}.ledger-stat-num{font-size:22px;font-weight:800;color:var(--color-primary)}.ledger-stat-label{font-size:12px;color:var(--color-text-muted)}.ledger-card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.85rem 1rem;margin-bottom:.65rem}.ledger-card-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ledger-card-name{font-weight:700;font-size:17px}.ledger-card-debt{font-size:13px;color:#c0392b;font-weight:600;margin-left:auto}.ledger-card-info{font-size:13px;color:var(--color-text-muted);margin-top:4px;line-height:1.5}.ledger-card-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.audit-timeline{padding:0;margin:0;list-style:none}.audit-item{position:relative;padding:.75rem 0 .75rem 1.25rem;border-left:2px solid var(--color-border)}.audit-item:last-child{border-left-color:transparent}.audit-item:before{content:"";position:absolute;left:-5px;top:1rem;width:8px;height:8px;border-radius:50%;background:var(--color-primary)}.audit-item[data-action=SMS_SENT]:before{background:#27ae60}.audit-item[data-action=RECORD_MODIFIED]:before{background:#e67e22}.audit-time{font-size:12px;color:var(--color-text-muted);font-weight:600}.audit-action{font-size:14px;font-weight:700;margin:2px 0}.audit-detail{font-size:13px;line-height:1.5}.audit-change,.audit-detail{color:var(--color-text-muted)}.audit-change{font-size:12px;background:var(--color-bg-secondary);border-radius:6px;padding:4px 8px;margin-top:4px}.edit-modal h3{font-size:17px;margin:0 0 1rem}.edit-field{margin-bottom:.75rem}.edit-field label{display:block;font-size:13px;font-weight:600;color:var(--color-text-muted);margin-bottom:4px}.edit-field label .required{color:#e74c3c}.edit-field input,.edit-field select,.edit-field textarea{width:100%;font-size:15px;font-family:inherit;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px}.edit-actions{display:flex;gap:8px;margin-top:1rem}.edit-actions .btn-cancel{flex:0 0 auto}.edit-actions .btn-primary{flex:1 1}.revisit-box{background:#fff8f0;border:1px solid #f0d9b5;border-radius:var(--radius);padding:.85rem 1rem;margin-top:.75rem}.revisit-box h4{font-size:15px;font-weight:700;margin:0 0 .5rem}.revisit-row{display:flex;gap:8px;margin-bottom:.5rem}.revisit-row label{font-size:13px;font-weight:600;min-width:70px;display:flex;align-items:center}.revisit-row input[type=date],.revisit-row select{flex:1 1;font-size:15px;font-family:inherit;padding:6px 10px;border:1px solid var(--color-border);border-radius:8px}.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--color-text-muted)}.empty-state-icon{font-size:48px;margin-bottom:.5rem}.empty-state-text{font-size:15px;line-height:1.6}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto .5rem}@keyframes spin{to{transform:rotate(1turn)}}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.section-title h2{margin:0}.section-title .section-count{font-size:14px;font-weight:700;color:var(--color-primary);background:var(--color-primary-bg);padding:2px 10px;border-radius:6px}.visit-card-row{display:flex;align-items:center;gap:6px}.visit-card-main{flex:1 1;min-width:0}.visit-sms-btn{flex-shrink:0;width:40px;height:40px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-bg);font-size:18px;display:flex;align-items:center;justify-content:center;cursor:pointer}.visit-sms-btn:active{background:var(--color-bg-secondary)}.home-links{display:flex;align-items:flex-end;gap:8px;margin-bottom:1rem}.home-link-btn{flex:1 1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px;font-size:13px;font-weight:700;font-family:inherit;border-radius:var(--radius);cursor:pointer;text-decoration:none;border:4px solid var(--color-border);transition:all .2s}.home-link-btn:active{transform:scale(.98)}.home-link-btn.btn-visit{flex:2 1;min-height:80px;background:#e0f2fe;color:#0369a1;border-color:#7dd3fc;font-size:15px}.home-link-btn.btn-guide{min-height:60px;background:#fef3c7;color:#b45309;border-color:#fde68a}.home-link-btn.btn-pricing{min-height:40px;background:#dcfce7;color:#15803d;border-color:#86efac}.home-link-btn.btn-ios{min-height:26px;height:26px;padding:0 4px;font-size:11px;background:#f1f5f9;color:#475569;border-color:#cbd5e1}.photo-capture{margin-bottom:1rem}.photo-grid{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:8px}.photo-thumb-wrap{position:relative;width:96px;height:96px;border-radius:8px;overflow:hidden;border:1px solid var(--color-border)}.photo-thumb{width:100%;height:100%;object-fit:cover;cursor:pointer}.photo-remove-btn{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:none;font-size:16px}.photo-add-btn,.photo-remove-btn{display:flex;align-items:center;justify-content:center;cursor:pointer}.photo-add-btn{width:96px;height:96px;border-radius:8px;border:2px dashed var(--color-border);flex-direction:column;color:var(--color-text-muted);background:var(--color-bg-secondary)}.photo-add-icon{font-size:32px;line-height:1}.photo-add-text{font-size:14px;margin-top:4px}.photo-hint{font-size:14px;color:var(--color-text-muted);margin:0}.photo-preview-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.9);z-index:2000}.photo-preview-container,.photo-preview-overlay{display:flex;align-items:center;justify-content:center;flex-direction:column}.photo-preview-container{max-width:100%;max-height:100%;padding:1rem}.photo-preview-img{max-width:100%;max-height:70vh;object-fit:contain;margin-bottom:1rem}.photo-preview-nav{display:flex;align-items:center;gap:1rem;color:#fff;margin-bottom:1rem}.photo-preview-nav button{background:hsla(0,0%,100%,.2);border:none;color:#fff;padding:8px 16px;border-radius:20px;font-size:14px;cursor:pointer}.photo-preview-nav button:disabled{opacity:.3;cursor:not-allowed}.photo-preview-close{background:none;border:1px solid #fff;color:#fff;padding:10px 24px;border-radius:24px;font-size:15px;cursor:pointer}.ledger-photo-grid{max-height:60vh;overflow-y:auto}.ledger-controls{display:flex;flex-direction:column;gap:10px;margin-bottom:1rem}.ledger-view-toggle{display:flex;gap:6px}.ledger-view-toggle .btn-sm{flex:1 1;background:var(--color-bg-secondary);color:var(--color-text-muted);border:1px solid var(--color-border)}.ledger-groups{display:flex;flex-direction:column;gap:1.5rem}.ledger-group-title{font-size:1.1rem;font-weight:700;margin-bottom:.5rem;color:var(--color-primary);display:flex;align-items:center;gap:8px}.ledger-group-count{background:var(--color-primary-light,#e0e7ff);color:var(--color-primary);font-size:.85rem;padding:2px 8px;border-radius:12px;font-weight:600}.ledger-group-row td{background:var(--color-bg-secondary);font-weight:700;color:var(--color-primary);padding:10px 16px;text-align:left}.ledger-group-row .ledger-group-count{margin-left:8px}.ledger-view-toggle .btn-sm.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.ledger-sheet-wrap{width:100%;overflow-x:auto;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);-webkit-overflow-scrolling:touch}.ledger-sheet{width:100%;border-collapse:collapse;font-size:14px;min-width:800px}.ledger-sheet th{background:var(--color-bg-secondary);padding:10px 12px;text-align:left;font-weight:700;border-bottom:1px solid var(--color-border);white-space:nowrap}.ledger-sheet td{padding:10px 12px;border-bottom:1px solid #eee;vertical-align:middle}.ledger-sheet tr:last-child td{border-bottom:none}.ledger-sheet tr:hover td{background-color:var(--color-primary-bg)}.ledger-sheet .fw-bold{font-weight:700}.ledger-sheet .text-danger{color:#c0392b}.ledger-sheet .truncate-text{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-sheet-actions{display:flex;gap:4px}.ledger-sheet-actions .btn-icon{background:transparent;border:none;font-size:18px;cursor:pointer;padding:4px;border-radius:4px}.ledger-sheet-actions .btn-icon:hover{background:var(--color-bg-secondary)}