@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans+Thai:wght@400;500;600;700&display=swap");:root{--line-green:#06c755;--line-green-dark:#05a648;--bg:#f5f7f6;--surface:#fff;--text:#1a1a1a;--text-muted:#6b7280;--border:#e5e7eb;--shadow:0 1px 3px rgba(0,0,0,.08);--radius:12px}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:IBM Plex Sans Thai,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{cursor:pointer;border:none;background:none}button,input,select{font-family:inherit}.app{max-width:480px;margin:0 auto;min-height:100dvh;background:var(--bg)}.header{background:var(--line-green);color:#fff;padding:16px 20px 20px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.header h1{font-size:1.25rem;font-weight:700}.header p{font-size:.85rem;opacity:.9;margin-top:2px}.search-bar{display:flex;gap:8px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:72px;z-index:9}.search-bar input{flex:1 1;padding:10px 14px;border:1px solid var(--border);border-radius:24px;font-size:.95rem;outline:none;background:var(--bg)}.search-bar input:focus{border-color:var(--line-green)}.search-bar select{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:.85rem;background:var(--surface);max-width:120px}.contact-list{padding:8px 12px 80px}.contact-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface);border-radius:var(--radius);margin-bottom:8px;box-shadow:var(--shadow);transition:transform .15s}.contact-card:active{transform:scale(.98)}.avatar{width:48px;height:48px;border-radius:50%;background:var(--line-green);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.95rem;flex-shrink:0;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.contact-info{flex:1 1;min-width:0}.contact-info h3{font-size:1rem;font-weight:600}.contact-info .position,.contact-info h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-info .position{font-size:.82rem;color:var(--text-muted)}.contact-info .phone{font-size:.85rem;color:var(--line-green-dark);font-weight:500;margin-top:2px}.call-btn{width:40px;height:40px;border-radius:50%;background:var(--line-green);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.1rem}.detail-page{padding-bottom:32px}.detail-hero{background:var(--line-green);color:#fff;padding:24px 20px 32px;text-align:center}.detail-hero .avatar{width:80px;height:80px;margin:0 auto 12px;font-size:1.5rem;border:3px solid hsla(0,0%,100%,.3)}.detail-hero h2{font-size:1.3rem;font-weight:700}.detail-hero .nickname{opacity:.85;font-size:.9rem;margin-top:4px}.detail-actions{display:flex;justify-content:center;gap:24px;margin-top:20px}.action-btn{flex-direction:column;gap:6px;color:#fff;font-size:.75rem}.action-btn,.action-btn .icon{display:flex;align-items:center}.action-btn .icon{width:48px;height:48px;border-radius:50%;background:hsla(0,0%,100%,.2);justify-content:center;font-size:1.2rem}.detail-section{background:var(--surface);margin:12px 16px;border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.detail-section h4{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:12px}.detail-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border);font-size:.9rem}.detail-row:last-child{border-bottom:none}.detail-row .label{color:var(--text-muted)}.back-btn{position:absolute;top:16px;left:16px;color:#fff;font-size:1.2rem;z-index:11}.empty,.error,.loading{text-align:center;padding:48px 24px;color:var(--text-muted)}.error{color:#dc2626}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--line-green);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(1turn)}}.pagination{display:flex;justify-content:center;gap:8px;padding:16px}.pagination button{padding:8px 16px;border-radius:8px;background:var(--surface);border:1px solid var(--border);font-size:.85rem}.pagination button:disabled{opacity:.4}.pagination button.active{background:var(--line-green);color:#fff;border-color:var(--line-green)}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:.7rem;background:rgba(6,199,85,.12);color:var(--line-green-dark);margin-left:6px}.link-body{padding:16px}.link-hint{font-size:.9rem;color:var(--text-muted);margin-bottom:20px;line-height:1.6}.link-form{display:flex;flex-direction:column;gap:10px}.form-label{font-size:.85rem;font-weight:600;margin-top:4px}.form-input{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);font-size:1rem;background:var(--surface)}.form-input:focus{outline:none;border-color:var(--line-green)}.form-help{font-size:.8rem;color:var(--text-muted);margin-top:-4px}.form-error{color:#dc2626;font-size:.85rem}.btn-primary,.btn-secondary{padding:12px 16px;border-radius:var(--radius);font-size:.95rem;font-weight:600;margin-top:8px}.btn-primary{background:var(--line-green);color:#fff}.btn-primary:disabled{opacity:.6}.btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text)}.preview-card{background:var(--surface);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:var(--shadow)}.preview-label{font-size:.8rem;color:var(--line-green-dark);font-weight:600}.preview-name{font-size:1.1rem;font-weight:700;margin-top:6px}.preview-position{font-size:.85rem;color:var(--text-muted);margin-top:4px}.coord-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.form-actions{display:flex;gap:8px;margin-top:8px}.form-actions .btn-primary,.form-actions .btn-secondary{flex:1 1}.profile-picker{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow)}.profile-preview{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid var(--line-green)}.profile-preview-empty{display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-muted);font-size:.8rem}.profile-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.btn-chip{padding:8px 14px;border-radius:20px;font-size:.85rem;background:var(--bg);border:1px solid var(--border);cursor:pointer}.btn-chip.active{background:var(--line-green);color:#fff;border-color:var(--line-green)}.file-input-hidden{display:none}.map-picker{width:100%;margin-top:8px}.map-container{height:280px;background:var(--bg)}.map-container,.map-preview{width:100%;border-radius:var(--radius);border:1px solid var(--border)}.map-preview{margin-top:8px}