:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.6;font-weight:400;color-scheme:light dark;color:#222;background-color:#f4f7fb}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(120deg,#f0f4ff,#e0e7ef);color:#222;overflow-x:hidden!important}h1{font-size:2.5em;line-height:1.1;text-align:center;color:#2a3a6c;margin-bottom:1.2rem;letter-spacing:.01em;font-weight:700}#app{max-width:900px;margin:2rem auto;padding:2rem 1.2rem;background:#fff;border-radius:1.2rem;box-shadow:0 4px 32px #0002;text-align:center}.main-grid{display:flex;gap:2rem;align-items:flex-start;justify-content:center}.contact-list{min-width:260px;max-width:340px;width:320px;background:#f7f9fc;border-radius:1.1rem;padding:1.2rem;box-shadow:0 2px 12px #0001;flex-shrink:0;margin-bottom:1.5rem;transition:box-shadow .2s}.contact-list:hover{box-shadow:0 4px 24px #0002}.contact-list h2{margin-top:0;font-size:1.2rem;color:#2a3a6c;letter-spacing:.01em}.contact-list ul{list-style:none;padding:0;margin:.5rem 0 0;max-height:60vh;overflow-y:auto}.contact-list li{display:flex;flex-direction:column;align-items:stretch;gap:.2rem;margin-bottom:.7rem;background:#fafdff;border-radius:.7rem;padding:.7rem .9rem;box-shadow:0 1px 3px #0001;position:relative;border:1px solid #e0e7ef;transition:box-shadow .2s,border .2s}.contact-list li:hover{box-shadow:0 2px 8px #3a4a7c22;border:1.5px solid #3a4a7c33}.contact-list li.pinned{border:2px solid #06b6d4;background:#e0f7fa;box-shadow:0 2px 8px #06b6d422}.contact-list li.recently-edited{border:2px solid #28a745;background:#f0f9f0;box-shadow:0 2px 8px #28a74522}.time-ago{font-size:.8em;color:#28a745;margin-left:.5em;font-weight:400}.contact-main{display:flex;align-items:center;gap:.5rem}.contact-main,.contact-info,.contact-actions{width:100%;display:block}.contact-info{display:flex;gap:.7rem;margin-top:.2rem;margin-bottom:.2rem;font-size:.98em}.contact-link{color:#2a3a6c;text-decoration:none;font-weight:500;display:flex;align-items:center;gap:.2em;transition:color .2s}.contact-link:hover{color:#06b6d4;text-decoration:underline}.contact-actions{display:flex;gap:.5rem;margin-top:.4rem}.add-note-contact,.edit-contact,.delete-contact{position:static;background:#3a4a7c;color:#fff;border:none;border-radius:.4rem;cursor:pointer;font-size:.95rem;padding:.35rem .6rem;transition:filter .2s,transform .05s ease-in-out}.add-note-contact:hover,.edit-contact:hover,.delete-contact:hover{filter:brightness(1.05)}.add-note-contact:active,.edit-contact:active,.delete-contact:active{transform:translateY(1px)}.pin-contact{background:none;border:none;font-size:1.2em;margin-left:.5em;cursor:pointer;color:#06b6d4;transition:color .2s}.pin-contact:hover{color:#3a4a7c}#contact-form,.notes-area{display:flex;flex-direction:column;gap:.7rem;background:#f7f9fc;border-radius:1.1rem;padding:1.2rem 1.5rem;box-shadow:0 2px 12px #0001;margin-bottom:1.5rem;align-items:stretch;transition:box-shadow .2s}#contact-form:hover,.notes-area:hover{box-shadow:0 4px 24px #3a4a7c22}#contact-form label{display:flex;flex-direction:column;font-size:.98rem;color:#2a3a6c}#contact-form input{margin-top:.2rem;padding:.5rem .8rem;border-radius:.5rem;border:1px solid #bcd;font-size:1rem;background:#fff;color:#333;transition:border .2s}#contact-form input:focus{border:1.5px solid #3a4a7c;outline:none}.form-actions{display:flex;gap:1rem;margin-top:.5rem;justify-content:flex-end}#contact-form button,.add-btn,.modal-content button,.modal-content input[type=submit]{background:linear-gradient(90deg,#3a4a7c 60%,#06b6d4);color:#fff!important;border:none;border-radius:.7rem;font-size:1.1rem;font-weight:600;padding:.6rem 1.4rem;cursor:pointer;text-align:center;box-shadow:0 1px 4px #0001;margin-bottom:.2rem;transition:background .2s,box-shadow .2s}#contact-form button:hover,.add-btn:hover,.modal-content button:hover,.modal-content input[type=submit]:hover{background:linear-gradient(90deg,#5060a0 60%,#06b6d4);box-shadow:0 2px 8px #3a4a7c22}#contact-form button#cancel-edit{background:#bbb;color:#222!important}.tag-filter{width:90%;margin-bottom:.7rem;padding:.5rem .8rem;border-radius:.5rem;border:1px solid #bcd;font-size:1rem;background:#fff;color:#222;transition:border .2s;touch-action:manipulation;-webkit-user-select:text;user-select:text}.tag-filter:focus{border:1.5px solid #3a4a7c;outline:none}.tags{margin-left:.5rem;display:inline-block}.tag{background:#e0e7ef;color:#3a4a7c;border-radius:.4rem;padding:.1rem .5rem;font-size:.85em;margin-right:.2rem;display:inline-block}.note-history{margin-top:1.2rem;padding:0;list-style:none;overflow-wrap:anywhere}.note-history li{background:#e0e7ef;border-radius:.5rem;margin-bottom:.5rem;padding:.6rem 1rem;font-size:1em;box-shadow:0 1px 3px #0001}.note-history button.edit-note,.note-history button.delete-note{background:#3a4a7c;color:#fff;border:none;border-radius:.4rem;padding:.2rem .7rem;font-size:1em;margin-left:.3em;cursor:pointer;transition:filter .2s}.note-history button.edit-note:hover,.note-history button.delete-note:hover{filter:brightness(1.1)}#note-form{display:flex;gap:.5rem;margin-bottom:.5rem;align-items:flex-start}#note-form input[type=date]{font-size:1em;padding:.3rem .5rem;border-radius:.4rem;border:1px solid #bcd}#note-form textarea,#edit-note-text,#notes{flex:1 1 100%;min-width:0;width:100%;max-width:100vw;min-height:90px;font-size:1.1em;border-radius:.7rem;border:1.5px solid #3a4a7c;padding:.7rem 1rem;box-sizing:border-box;background:#23263a;color:#f7f9fc;margin-right:0;transition:border .2s,background .2s,color .2s;resize:vertical}#note-form textarea:focus,#edit-note-text:focus{border:2px solid #06b6d4;outline:none;background:#181a28;color:#fff}#all-notes-modal.modal,#add-note-modal.modal{position:fixed!important;inset:0;background:#1e283c73!important;display:flex;align-items:center;justify-content:center;z-index:3000;animation:fadeInModal .18s ease}@keyframes fadeInModal{0%{opacity:0}to{opacity:1}}#all-notes-modal .modal-content,#add-note-modal .modal-content{background:#fff;border-radius:1.1rem;padding:2rem 1.5rem;min-width:300px;max-width:98vw;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;box-shadow:0 4px 32px #0003;display:flex;flex-direction:column;gap:1rem;animation:slideDownModal .22s cubic-bezier(.4,1.4,.6,1)}#add-note-modal .modal-content label{display:flex;flex-direction:column;gap:.5rem;font-weight:600;color:#2a3a6c}#add-note-modal .modal-content input,#add-note-modal .modal-content textarea{padding:.7rem;border:1px solid #bcd;border-radius:.5rem;font-size:1rem;color:#333;background:#fff;transition:border .2s}#add-note-modal .modal-content input:focus,#add-note-modal .modal-content textarea:focus{border:1.5px solid #3a4a7c;outline:none}@keyframes slideDownModal{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 700px){#app{padding:.7rem .1rem .5rem;border-radius:0;box-shadow:none;margin:0;min-height:100vh;max-width:100vw;text-align:center;background:#fff}h1{font-size:1.5em;margin-bottom:.7rem;margin-top:.5rem}#backup-info{margin-top:.5rem}.main-grid{flex-direction:column;gap:.5rem;width:100vw;max-width:100vw;margin:0;padding:0;box-sizing:border-box}.contact-list{width:98vw;max-width:98vw;min-width:0;margin:0 auto 1.2rem;box-sizing:border-box;border-radius:1rem;padding:1rem .8rem;box-shadow:0 2px 8px #0000001a;background:#f7f9fc}.contact-list ul{max-height:40vh}.contact-list li{padding:.6rem .8rem;width:100%;font-size:1em;margin-bottom:.5rem;background:#fafdff;border-radius:.8rem;box-shadow:0 1px 3px #0000001a;border:1px solid #e0e7ef;display:flex;flex-direction:column;gap:0}.contact-list .contact-info{display:none}.contact-list .contact-main{display:flex;align-items:center;justify-content:flex-start;width:100%;flex-wrap:nowrap;gap:.3rem;margin-bottom:.3rem}.contact-list .select-contact{flex:1;text-align:left;padding:.4rem .6rem;font-size:.95em;background:transparent;border:none;color:#2a3a6c;font-weight:600;cursor:pointer;border-radius:.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:120px;max-width:calc(100% - 3rem);line-height:1.2}.contact-list .tags{display:none}.contact-list .pin-contact{font-size:1.1em;padding:.2rem .4rem;background:transparent;border:none;cursor:pointer;border-radius:.3rem;flex-shrink:0;width:2.5rem;text-align:center}.contact-list .contact-actions{display:flex!important;gap:.4rem!important;margin-top:.3rem!important;justify-content:flex-start!important;width:100%!important;flex-wrap:nowrap!important;align-items:center!important}.contact-list .add-note-contact,.contact-list .edit-contact,.contact-list .delete-contact{position:static!important;inset:auto!important;margin:0!important;padding:.5rem .7rem!important;font-size:1em!important;background:#3a4a7c!important;color:#fff!important;border:none!important;border-radius:.4rem!important;cursor:pointer!important;flex:1!important;min-width:3.5rem!important;min-height:2.5rem!important;max-width:none!important;height:auto!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;touch-action:manipulation!important;-webkit-tap-highlight-color:rgba(0,0,0,.1)!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important}.contact-list .add-note-contact{background:#28a745!important;color:#fff!important}.contact-list .edit-contact{background:#ffc107!important;color:#212529!important}.contact-list .delete-contact{background:#dc3545!important;color:#fff!important}.contact-list .add-note-contact:active,.contact-list .edit-contact:active,.contact-list .delete-contact:active{transform:scale(.95)!important;transition:transform .1s ease!important}.contact-list li{padding:.6rem .7rem;width:100%;font-size:1em;margin-bottom:.5rem;background:#fafdff;border-radius:.8rem;box-shadow:0 1px 3px #0000001a;border:1px solid #e0e7ef;display:flex;flex-direction:column;gap:0;min-height:auto}#contact-form,.notes-area{border-radius:1rem;padding:1.2rem 1rem;box-shadow:0 2px 8px #0000001a;width:98vw;max-width:98vw;margin:0 auto 1.2rem;background:#f7f9fc;box-sizing:border-box}#contact-form input,#notes,#edit-note-text,#note-form textarea{font-size:1.1em;padding:.6rem .7rem}#note-form textarea{margin-right:.5rem}.form-actions,#note-form{flex-direction:column;gap:.5rem;width:100%;align-items:center}button,#contact-form button,#note-form button,#export-modal button{font-size:1.1em;padding:.8rem 1rem;width:100%;border-radius:.7rem;background:#3a4a7c;color:#fff;border:none;cursor:pointer;transition:background .2s;margin:.25rem auto;display:block}button:hover,#contact-form button:hover,#note-form button:hover{background:#2a3a5c}.add-btn,button[type=submit],button[type=button],#manage-duplicates-btn,#validate-contacts-btn,#import-btn,#export-btn,#unlock-notes-btn,#logout-btn,#cancel-edit,#export-modal button{width:100%!important;max-width:320px!important;margin:.25rem auto!important;display:block!important;text-align:center!important}#manage-duplicates-btn[style],#validate-contacts-btn[style],#import-btn[style],#export-btn[style]{margin:.25rem auto!important;display:block!important;width:100%!important;max-width:320px!important}.import-export{flex-direction:column;gap:.5rem;width:100%}.modal-content{min-width:90vw;max-width:98vw;padding:1.2rem .5rem;border-radius:1rem}.note-history li{font-size:1em;padding:.7rem .5rem}.tag-filter{font-size:1.1em;padding:.5rem .7rem;color:#222;touch-action:manipulation;-webkit-tap-highlight-color:rgba(0,0,0,.03)}.tags,.tag{font-size:1em}h1{font-size:2em;margin-bottom:1rem}.webdav-form{padding:.7rem .3rem;border-radius:.7rem;min-width:0;max-width:100vw}.webdav-form label{flex-direction:column;align-items:stretch;gap:.2rem}.webdav-form label input{width:100%;font-size:1.1em;padding:.6rem .7rem}#auth-modal .modal-content{min-width:90vw;max-width:95vw;padding:1.5rem 1rem;margin:1rem}#auth-modal input[type=password]{font-size:16px;padding:14px 12px;margin:10px 0}#auth-modal .form-actions{flex-direction:column;gap:10px;width:100%}#auth-modal .form-actions button{width:100%;min-width:auto;margin:0;padding:12px;font-size:16px;min-height:48px;touch-action:manipulation}button,input[type=submit]{touch-action:manipulation;min-height:48px;font-size:16px;-webkit-tap-highlight-color:rgba(0,0,0,.1)}input,textarea,select{font-size:16px!important;padding:12px!important;border-radius:8px;border:2px solid #ddd;width:100%;box-sizing:border-box}input:focus,textarea:focus,select:focus{border-color:#3a4a7c;outline:none}.form-actions{display:flex;flex-direction:column;gap:12px;width:100%}.tag{padding:6px 12px;font-size:14px;margin:4px 2px;border-radius:16px;background:#e0e7ef;color:#2a3a6c;display:inline-block}}@media (max-width: 700px){.contact-list h2{font-size:1.3rem;color:#2a3a6c;margin-bottom:1rem;text-align:center;padding-bottom:.5rem;border-bottom:2px solid #e0e7ef}.notes-area h3{font-size:1.2rem;color:#2a3a6c;margin-bottom:1rem;text-align:center}.note-history .add-note-contact,.note-history .edit-contact,.note-history .delete-contact{position:static;margin:.25rem auto;padding:.6rem 1rem;font-size:.9rem;border-radius:.5rem;min-height:40px;display:block;width:100%;max-width:320px}.note-history li{font-size:1rem;padding:1rem .8rem;margin-bottom:.8rem;background:#f0f4ff;border-radius:.8rem;border:1px solid #e0e7ef;box-shadow:0 1px 3px #0000001a}input[type=date]{font-size:16px!important;padding:12px!important;border-radius:8px;border:2px solid #ddd;background:#fff}#notes,#note-form textarea,#edit-note-text{min-height:120px!important;font-size:16px!important;padding:12px!important;background:#23263a!important;color:#f7f9fc!important;border:2px solid #3a4a7c!important;border-radius:8px}.main-grid{display:flex;flex-direction:column;gap:1rem;width:100%;padding:0 .5rem;box-sizing:border-box}}@media (max-width: 480px){body{font-size:16px;line-height:1.5}#app{padding:.5rem .2rem}h1{font-size:1.8rem;margin-bottom:1rem}.contact-list,#contact-form,.notes-area{width:99vw;margin:0 auto 1rem;padding:1rem .8rem}}@media (max-width: 700px){#manage-duplicates-btn,#validate-contacts-btn,#import-btn,#export-btn{font-size:14px!important;padding:8px 12px!important;margin:.25rem auto!important;border-radius:6px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block!important;width:100%!important;max-width:320px!important;text-align:center!important}#manage-duplicates-btn[style],#validate-contacts-btn[style],#import-btn[style],#export-btn[style]{margin:.25rem auto!important;display:block!important;width:100%!important;max-width:320px!important}button,.add-btn,.tag-filter{min-height:44px;-webkit-tap-highlight-color:rgba(0,0,0,.1);touch-action:manipulation}input[type=file]{font-size:16px}.notification{left:10px!important;right:10px!important;width:auto!important;max-width:calc(100vw - 20px)!important;font-size:14px}.contact-list ul{-webkit-overflow-scrolling:touch;scroll-behavior:smooth}.tag{padding:4px 8px;font-size:12px;margin:2px}}#auth-modal.modal{position:fixed!important;inset:0;background:#1e283c8c!important;display:flex;align-items:center;justify-content:center;z-index:6000;animation:fadeInModal .18s ease}#auth-modal .modal-content{background:#fff;border-radius:1.1rem;padding:2rem 1.5rem;min-width:320px;max-width:400px;box-shadow:0 8px 40px #00000026;text-align:center;animation:slideDownModal .22s cubic-bezier(.4,1.4,.6,1)}@keyframes slideDownModal{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}#auth-modal input[type=password]{width:100%;padding:12px;margin:8px 0;border:2px solid #ddd;border-radius:8px;font-size:16px;background:#fff;color:#333;transition:border-color .3s;box-sizing:border-box}#auth-modal input[type=password]:focus{border-color:#3a4a7c;outline:none}#auth-modal .form-actions button{min-width:120px;margin:0 5px}.notes-locked{opacity:.6;pointer-events:none;filter:blur(1px)}@keyframes slideInNotification{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOutNotification{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.notification-content{display:flex;align-items:center;gap:8px;width:100%}.notification-message{flex:1;font-size:14px;line-height:1.4}.notification-close{background:none;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.notification-close:hover{background-color:#fff3}.input-error{border:2px solid #ef4444!important;background-color:#fef2f2!important}.input-warning{border:2px solid #f59e0b!important;background-color:#fffbeb!important}.error-message{color:#ef4444;font-size:.875rem;margin-top:.25rem;display:block}.warning-message{color:#f59e0b;font-size:.875rem;margin-top:.25rem;display:block}.input-valid{border:2px solid #10b981!important}.validation-icon{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-size:14px}.form-field{position:relative;display:flex;flex-direction:column}.duplicate-group{border:1px solid #e0e7ef;border-radius:.7rem;padding:1rem;margin-bottom:1.5rem;background:#fafbfc}.duplicate-contact{background:#f7f9fc;padding:1rem;border-radius:.5rem;border:1px solid #e0e7ef;margin-bottom:.5rem;transition:box-shadow .2s}.duplicate-contact:hover{box-shadow:0 2px 8px #3a4a7c1a}.contact-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.contact-actions{display:flex;align-items:center;gap:.5rem}.contact-details{font-size:.9rem;color:#666;line-height:1.4}.contact-details>div{margin-bottom:.2rem}.duplicate-group h4{color:#3a4a7c;margin-top:0;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid #e0e7ef}input,textarea,select{color:#333!important;background-color:#fff!important}input::placeholder,textarea::placeholder{color:#666!important}.pwa-mode{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (hover: none) and (pointer: coarse){button,.add-btn,.tag-filter,input,textarea{min-height:44px;font-size:16px}.edit-contact,.delete-contact,.add-note-contact{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}}body,html{overflow-x:hidden}@media (max-width: 480px){body{font-size:14px}h1{font-size:1.8rem}h3{font-size:1.2rem}button,.add-btn{padding:12px 16px;font-size:16px}}.version-info{position:fixed;bottom:0;left:0;right:0;background:#000c;color:#fff;text-align:center;padding:.3rem;font-size:.7rem;z-index:1000;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-top:1px solid rgba(255,255,255,.1)}.version-text{margin:0;font-family:Courier New,monospace;opacity:.8}.action-buttons{display:flex;gap:.5rem;justify-content:center;align-items:center;margin:1rem 0;flex-wrap:wrap}.add-btn{display:block;margin:auto;background:#3a4a7c;color:#fff;border:none;border-radius:.5rem;padding:.7rem 1.2rem;font-size:1rem;cursor:pointer;transition:background .2s}.add-btn:hover{background:#2a3a5c}#mobile-logs-panel{position:fixed;inset:10px;background:#000000f2;color:#fff;z-index:10000;border-radius:8px;display:none;flex-direction:column;font-family:Courier New,monospace;font-size:12px}.mobile-logs-header{display:flex;justify-content:space-between;align-items:center;padding:10px;background:#ffffff1a;border-bottom:1px solid rgba(255,255,255,.2);border-radius:8px 8px 0 0}.mobile-logs-header span{font-weight:700;font-size:14px}.mobile-logs-header button{background:#fff3;border:none;color:#fff;padding:5px 10px;border-radius:4px;margin-left:5px;cursor:pointer;font-size:16px}.mobile-logs-header button:active{background:#ffffff4d}#mobile-logs-content{flex:1;overflow-y:auto;padding:10px}.mobile-log-entry{margin-bottom:8px;padding:5px;border-left:3px solid #ccc;background:#ffffff0d;border-radius:0 4px 4px 0}.mobile-log-info{border-left-color:#4caf50}.mobile-log-error{border-left-color:#f44336;background:#f443361a}.mobile-log-warn{border-left-color:#ff9800;background:#ff98001a}.mobile-log-time{color:#aaa;font-size:10px;display:block;margin-bottom:2px}.mobile-log-message{margin:0;white-space:pre-wrap;word-wrap:break-word;font-size:11px;line-height:1.3}#debug-trigger{position:fixed;top:10px;right:10px;width:40px;height:40px;background:#000000b3;color:#fff;border:none;border-radius:50%;z-index:9999;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center}#debug-trigger:active{background:#000000e6}
