@font-face{font-family:DirectorySans;src:local("Inter"),local("Arial");font-display:swap}
:root{--paper:#f7f7f2;--white:#fff;--ink:#203c37;--body:#43534e;--muted:#75817b;--line:#e1e5dd;--soft:#eef1e8;--green:#285a4e;--lime:#dce9b9;--amber:#8a5a15;--amber-bg:#faf1dd;--radius:17px;font-family:DirectorySans,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--paper);font-size:15px;line-height:1.5}button,input,select{font:inherit}button,select{cursor:pointer}button{color:inherit}button:disabled{cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #86ad72;outline-offset:3px}button{touch-action:manipulation}a{color:inherit}svg{display:block}button[hidden],[hidden]{display:none!important}.shell{width:min(1120px,calc(100% - 72px));margin:auto}.topbar{background:#fbfcf7;border-bottom:1px solid var(--line)}.topbar-inner{min-height:91px;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:730;text-decoration:none;letter-spacing:-.5px;line-height:1.15}.brand-icon{height:43px;width:43px;display:grid;place-items:center;background:var(--ink);color:#e3edc9;border-radius:12px}.brand-icon svg{height:27px;width:27px}.brand-sub{display:block;font-size:11px;letter-spacing:.25px;font-weight:500;color:var(--muted);margin-top:5px}.private-badge{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:550;border:1px solid #d9dfcf;padding:7px 11px;border-radius:30px;background:#f2f5eb;color:#53634c}.private-badge svg{width:14px;height:14px}.intro{padding:47px 0 29px;display:flex;align-items:center;justify-content:space-between;gap:32px}.eyebrow{font-size:11px;font-weight:720;letter-spacing:2.1px;color:#73816c;margin:0 0 12px}h1{font-size:clamp(27px,3.5vw,39px);font-weight:650;line-height:1.14;letter-spacing:-1.5px;margin:0 0 13px}.intro-copy{font-size:14px;line-height:1.65;max-width:565px;color:var(--body);margin:0}.count-summary{border-left:1px solid #d9dfd4;display:flex;align-items:center;gap:13px;padding-left:30px;min-width:185px;font-size:12px;line-height:1.8;color:var(--muted)}.summary-number{font-size:48px;line-height:1;letter-spacing:-2px;font-weight:500;color:var(--ink)}.review-dot{display:inline-block;width:6px;height:6px;background:#af7c2b;border-radius:50%;margin-right:4px;vertical-align:middle}.search-panel{background:var(--ink);border-radius:var(--radius);padding:25px 29px 0;color:#edf3e4;box-shadow:0 5px 20px #213c3710}.search-label{display:block;font-size:13px;font-weight:550;margin-bottom:10px}.search-wrap{position:relative;display:flex;align-items:center;gap:12px;background:#fff;border-radius:10px;border:1px solid #fff;padding:0 16px;color:#687870}.search-wrap>svg{width:22px;height:22px;flex-shrink:0}.search-wrap:focus-within{outline:3px solid #b8d18d;outline-offset:2px}.search-wrap input{width:100%;background:none;border:0;font-size:17px;height:55px;outline:none!important;color:var(--ink);padding:0 26px 0 0;border-radius:0}.search-wrap input::placeholder{color:#8b948f}.search-wrap input::-webkit-search-cancel-button{display:none}.clear-search{position:absolute;right:10px;font-size:24px;background:none;border:0;width:40px;height:40px;line-height:1;border-radius:7px;color:#738078}.clear-search:hover{background:var(--soft)}.search-shortcut{border:1px solid #dfe3dc;border-radius:4px;font-size:13px;color:#909b94;padding:0 6px}.search-hint{margin:10px 0 16px;color:#b7c6b7;font-size:12px}.filters{display:flex;gap:20px;overflow:auto;scrollbar-width:thin;scrollbar-color:#6b8579 transparent}.filter{display:flex;align-items:center;white-space:nowrap;gap:7px;background:none;color:#bac9be;border:0;border-bottom:3px solid transparent;padding:10px 0 14px;font-size:12px;font-weight:550;min-height:46px}.filter.active{color:#e5f0c9;border-bottom-color:#c9dc9c}.filter:hover{color:#fff}.filter>span:not(.review-dot){font-size:10px;font-weight:650;border-radius:5px;padding:1px 5px;background:#ffffff14}.filter.active>span:not(.review-dot){background:#d2e6a325;color:#dcebb8}.filter .review-dot{background:#dbaf63;margin:0}.review-filter{margin-left:auto}.list-toolbar{display:flex;justify-content:flex-end;align-items:center;gap:20px;margin:27px 0 13px;font-size:12px}.list-toolbar p{margin:0;font-weight:650;color:#55634f}.sort-label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted)}.sort-label select{border:0;background:transparent;color:#52634e;padding:7px 0 7px 4px;max-width:180px;font-size:12px;outline-offset:0}.list-heading,.contact-row{display:grid;grid-template-columns:minmax(270px,1fr) 190px 285px;gap:20px;align-items:center}.list-heading{padding:0 23px 12px;font-size:10px;font-weight:650;letter-spacing:1.3px;color:#7f8a7b}.contact-list{border:1px solid var(--line);background:var(--white);border-radius:13px;overflow:hidden}.contact-row{padding:18px 23px;border-bottom:1px solid #e9ece5;min-height:90px;position:relative;transition:background .15s}.contact-row:last-child{border-bottom:none}.contact-row:hover{background:#fcfdf9}.contact-identity{display:flex;align-items:center;gap:14px;min-width:0}.avatar{width:36px;height:36px;flex:0 0 36px;border:1px solid #e1e8d8;border-radius:10px;background:#f0f4e8;color:#6e805f;display:grid;place-items:center;font-size:11px;font-weight:600;letter-spacing:.5px}.avatar.business{background:#edf2ef;border-color:#dae4df;color:#507569}.avatar svg{width:19px;height:19px}.contact-name{font-size:14px;font-weight:620;line-height:1.45;margin:0}.contact-subtitle{font-size:11px;color:#8a9285;margin:3px 0 0}.number-cell{display:flex;gap:12px;justify-content:space-between;align-items:center}.cell-label{display:none}.number{font-variant-numeric:tabular-nums;letter-spacing:.3px;font-size:14px;white-space:nowrap;font-weight:500;color:#4c5c50;user-select:all}.not-provided{font-size:12px;color:#68766c}.copy-button{display:flex;align-items:center;justify-content:center;gap:5px;padding:7px 9px;font-size:11px;font-weight:600;color:#647858;border:1px solid #dfe6d8;background:#f9fbf5;border-radius:7px;min-width:65px;min-height:34px;transition:.15s}.copy-button:hover{border-color:#a6bd91;background:#eff4e6;color:#305242}.copy-button svg{width:13px;height:13px}.copy-button.copied{color:#226343;background:#eaf5e5;border-color:#b8d2aa}.review-row{background:#fffdf8}.review-row:hover{background:#fffdf8}.review-row .avatar{background:var(--amber-bg);border-color:#efdfb9;color:var(--amber)}.review-badge{display:inline-block;font-size:9px;line-height:1.6;background:var(--amber-bg);color:var(--amber);padding:1px 5px;border-radius:4px;margin-left:4px;white-space:nowrap;vertical-align:1px}.review-number{align-items:stretch;flex-direction:column;gap:3px}.review-number>span{font-size:12px;color:var(--amber);font-weight:600}.review-details{grid-column:1/-1;padding:0 0 0 50px;font-size:12px;color:#79623e}.review-details summary{cursor:pointer;width:fit-content;color:#8e6a29;font-size:11px}.review-details p{margin:9px 0 2px;line-height:1.7;max-width:700px}.candidate{font-variant-numeric:tabular-nums;color:#77551f;white-space:nowrap;font-weight:600}.source-note{display:flex;align-items:flex-start;gap:10px;padding:20px 0 0;color:#7c8978;font-size:11px;line-height:1.7}.source-note svg{width:17px;height:17px;flex-shrink:0;margin-top:2px}.source-note p{margin:0;max-width:840px}.source-note strong{font-weight:600;color:#5e6f56}footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #e1e6da;margin-top:25px;padding:20px 0 32px;font-size:10px;color:#8a9484}footer p{margin:0}.empty-state{text-align:center;border:1px dashed #d5ddcd;border-radius:13px;padding:50px 20px;background:#fcfdf8}.empty-icon{font-size:42px;color:#a9b59d;line-height:1}.empty-state h2{font-size:20px;font-weight:600;letter-spacing:-.5px;margin:10px 0}.empty-state p{font-size:13px;color:var(--muted)}.primary-button{background:var(--ink);border:0;border-radius:8px;color:#f2f7e9;padding:11px 17px;font-size:12px;margin-top:12px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#1d3c34;color:#fff;border:1px solid #496454;box-shadow:0 5px 30px #16372730;border-radius:10px;padding:12px 20px;font-size:13px;z-index:10;text-align:center;max-width:calc(100% - 36px);width:max-content}.skip-link{position:fixed;top:-100px;left:20px;z-index:100;background:var(--white);color:var(--ink);padding:12px 18px;border-radius:8px}.skip-link:focus{top:10px}.noscript{padding:20px;color:var(--body)}
@media(min-width:1400px){.shell{width:1120px}.intro{padding-top:54px}}
@media(max-width:1000px){.list-heading,.contact-row{grid-template-columns:minmax(230px,1fr) 120px 260px;gap:12px}.contact-row{padding:17px 18px}.list-heading{padding-left:18px;padding-right:18px}.count-summary{min-width:155px;padding-left:20px}.contact-identity{gap:10px}.number{font-size:13px}.review-details{padding-left:46px}}
@media(max-width:800px){.shell{width:calc(100% - 40px)}.topbar-inner{min-height:78px}.intro{padding-top:32px;gap:15px}.intro-copy{max-width:430px}.count-summary{display:none}.list-heading,.contact-row{grid-template-columns:minmax(205px,1fr) 105px 230px;gap:12px}.contact-name{font-size:13px}.avatar{width:31px;height:31px;flex-basis:31px;font-size:10px}.contact-row{padding:15px}.list-heading{padding-left:15px;padding-right:15px}.copy-button{min-width:58px;padding:6px}.number-cell{gap:7px}.review-details{padding-left:41px}.search-panel{padding:22px 23px 0}}
@media(max-width:680px){.shell{width:calc(100% - 32px)}.topbar-inner{min-height:72px}.brand{font-size:18px;gap:10px}.brand-icon{width:37px;height:37px;border-radius:10px}.brand-icon svg{width:24px;height:24px}.brand-sub{font-size:10px}.private-badge{font-size:10px;padding:6px 8px;gap:5px}.intro{padding:30px 2px 24px}.eyebrow{font-size:10px;letter-spacing:1.8px;margin-bottom:11px}h1{max-width:330px;font-size:31px;line-height:1.15;letter-spacing:-1.2px;margin-bottom:11px}.intro-copy{font-size:13px;line-height:1.7;max-width:370px}.search-panel{padding:20px 17px 0;border-radius:13px}.search-label{font-size:12px}.search-wrap{padding:0 12px;gap:9px;border-radius:8px}.search-wrap>svg{width:18px;height:18px}.search-wrap input{font-size:16px;height:50px;min-width:0;padding-right:26px}.search-wrap input::placeholder{font-size:14px}.search-shortcut{display:none}.search-hint{font-size:10px;line-height:1.7;margin-bottom:10px}.filters{gap:17px;margin-right:-17px;padding-right:17px}.filter{font-size:11px;gap:5px;padding-bottom:12px;min-height:44px}.review-filter{margin-left:0}.filter>span:not(.review-dot){font-size:9px}.list-toolbar{margin:23px 1px 12px;gap:10px}.list-toolbar p{font-size:11px}.sort-label{font-size:10px;gap:3px}.sort-label select{font-size:11px;max-width:156px}.list-heading{display:none}.contact-list{background:transparent;overflow:visible;border:0;border-radius:0;display:grid;gap:10px}.contact-row{background:var(--white);border:1px solid var(--line);border-radius:11px;padding:17px 16px 15px;display:grid;grid-template-columns:1fr;gap:0;min-height:0}.contact-row:last-child{border-bottom:1px solid var(--line)}.contact-identity{gap:11px;margin-bottom:13px}.avatar{width:35px;height:35px;flex-basis:35px;font-size:11px}.contact-name{font-size:14px}.contact-subtitle{font-size:10px;margin-top:2px}.number-cell{display:grid;grid-template-columns:40px 1fr 66px;gap:8px;border-top:1px solid #f0f1eb;padding-top:9px;margin-top:8px;min-height:37px}.cell-label{display:block;font-size:10px;font-weight:500;color:#89917f}.phone-cell{grid-template-columns:40px 1fr;order:2;padding-top:8px;margin-top:9px;min-height:23px}.fax-cell{order:1;margin-top:0}.number{font-size:14px;letter-spacing:.3px}.not-provided{font-size:11px}.copy-button{min-height:36px;min-width:65px;font-size:11px;padding:6px 9px}.review-row{background:#fffdf8}.review-number{display:grid;grid-template-columns:40px 1fr;align-items:center}.review-number>span{font-size:12px}.review-number>.cell-label{font-size:10px;font-weight:500;color:#89917f}.review-details{order:3;padding:12px 0 0;margin-top:9px;border-top:1px solid #eee8da}.review-details summary{font-size:11px}.review-details p{font-size:11px}.source-note{padding:21px 2px 0;font-size:10px;gap:8px}.source-note svg{width:16px;height:16px}footer{font-size:9px;display:block;margin-top:21px;padding-top:17px}footer p+p{margin-top:6px}.toast{bottom:18px;font-size:12px;padding:12px 16px}.review-badge{font-size:9px}.empty-state{padding:37px 15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.management-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:22px}.management-actions,.row-actions,.dialog-actions{display:flex;align-items:center;gap:8px}.management-actions .primary-button,.dialog-actions .primary-button{margin-top:0}.secondary-button{border:1px solid #d7dfcf;background:#f8faf3;border-radius:8px;padding:8px 12px;font-size:12px;color:var(--green)}.secondary-button:hover{background:var(--soft);border-color:#a6bd91}button:disabled{opacity:.55}.sync-status{font-size:12px;color:var(--muted);margin:10px 0 0;min-height:18px}.sync-status.error,.form-error{color:#974025}.row-actions{grid-column:1/-1;justify-content:flex-end;margin-top:-8px}.row-actions button{padding:5px 10px;font-size:11px}.contact-note{grid-column:1/-1;color:var(--muted);font-size:12px;margin:0 0 0 50px;white-space:pre-wrap;overflow-wrap:anywhere}.number-cell{flex-wrap:wrap}.contact-name,.contact-subtitle{overflow-wrap:anywhere}.number{white-space:normal;overflow-wrap:anywhere;min-width:0}.phone-cell .copy-button{flex-shrink:0}
dialog{width:min(600px,calc(100% - 28px));max-height:calc(100dvh - 40px);border:1px solid var(--line);border-radius:17px;padding:26px;color:var(--ink);background:var(--paper);box-shadow:0 15px 70px #132d3840}dialog::backdrop{background:#152d2866}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:15px}.dialog-heading h2{font-size:23px;letter-spacing:-.5px;margin:0}.dialog-heading button{font-size:24px;line-height:1;padding:6px 11px}.form-help{font-size:12px;color:var(--muted);margin:13px 0 20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:600;min-width:0}.form-grid input:not([type=checkbox]),.form-grid textarea{width:100%;border:1px solid #d4ddcc;background:white;border-radius:7px;padding:9px 10px;font:inherit;font-size:16px;color:var(--ink)}.form-grid textarea{resize:vertical;font-weight:400}.full-width{grid-column:1/-1}.form-grid .checkbox-label{flex-direction:row;align-items:center;gap:8px;font-weight:400}.checkbox-label input{width:17px;height:17px;accent-color:var(--green)}.dialog-actions{justify-content:flex-end;margin-top:24px}.form-error{font-size:12px;line-height:1.6}.form-grid textarea:focus-visible{outline:3px solid #86ad72;outline-offset:3px}
@media(max-width:680px){.management-toolbar{align-items:flex-start;flex-wrap:wrap}.management-actions{flex-wrap:wrap}.row-actions{order:4;margin-top:13px}.contact-note{order:3;margin:10px 0 0}.phone-cell{grid-template-columns:40px 1fr 66px}.form-grid{grid-template-columns:1fr}.full-width{grid-column:auto}dialog{padding:20px}.dialog-heading h2{font-size:21px}.number-cell .number{font-size:13px}}
/* Palette inspired by the rendered Orchard Heights site: navy, aqua, pale blue. */
:root{--paper:#f5fafb;--ink:#2b3957;--body:#43516a;--muted:#596980;--line:#d8e4ea;--soft:#edf7f9;--green:#2b3957;--lime:#67cbe7;--amber:#805310;--amber-bg:#fff4dc}
.topbar{background:#fff;border-top:5px solid #2b3957}.brand-icon{color:#67cbe7}.private-badge{background:#edf7f9;border-color:#b8dbe6;color:#2b3957}.eyebrow,.intro-copy,.source-note,.source-note strong,.list-toolbar p,.sort-label,.sort-label select,.count-summary,.contact-subtitle,.not-provided,.list-heading,footer,.cell-label{color:#596980}.count-summary{border-color:#d8e4ea}.search-panel{color:#fff;box-shadow:0 5px 20px #2b395710}.search-hint{color:#d5eaf1}.search-wrap{color:#596980}.search-wrap input::placeholder{color:#667589}.search-wrap:focus-within{outline-color:#67cbe7}.search-shortcut{color:#596980;border-color:#b7c7d1}.clear-search{color:#596980}.filter{color:#d5eaf1}.filter.active{color:#fff;border-bottom-color:#67cbe7}.filter.active>span:not(.review-dot){background:#67cbe7;color:#2b3957}.filter>span:not(.review-dot){background:#ffffff20;color:#fff}.avatar,.avatar.business{background:#edf7f9;border-color:#c5e5ed;color:#2b3957}.contact-row{border-bottom-color:#e1eaf0}.contact-row:hover{background:#f7fcfd}.number{color:#2b3957}.copy-button,.secondary-button{color:#2b3957;border-color:#bfd7e1;background:#edf7f9}.copy-button:hover,.secondary-button:hover{color:#2b3957;background:#d5f1f8;border-color:#64b4ca}.copy-button.copied{color:#2b3957;background:#cceef7;border-color:#64b4ca}.primary-button{background:#2b3957;color:#fff}.primary-button:hover{background:#394d73}.management-actions #add-contact{color:#2b3957;background:#67cbe7}.management-actions #add-contact:hover{background:#8dd9ec}.empty-state{background:#f7fcfd;border-color:#b8d5df}.empty-icon{color:#567b90}.toast{background:#2b3957;border-color:#667b9e;box-shadow:0 5px 30px #2b395730}footer{border-color:#d8e4ea}.form-grid input:not([type=checkbox]),.form-grid textarea{border-color:#b9ccd7}.form-grid input[type=checkbox]{accent-color:#2b3957}dialog::backdrop{background:#19264188}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible,.form-grid textarea:focus-visible{outline-color:#267b99}.search-panel button:focus-visible{outline-color:#67cbe7}.review-row,.review-row:hover{background:#fffcf5}.review-row .avatar{background:var(--amber-bg);border-color:#e9d8b5;color:var(--amber)}.review-number>.cell-label{color:#596980}.review-details{color:#73551c}

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Keep search close to the header and leave more room for contacts. */
.search-panel{margin-top:24px;padding:16px 22px 0}
.search-label{font-size:12px;margin-bottom:7px}
.search-wrap input{height:48px}
.search-hint{margin:7px 0 6px;font-size:11px;line-height:1.5}
.filter{padding-top:7px;padding-bottom:10px;min-height:44px}
.retry-load{margin-top:8px}
.owner-link{display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}
@media(max-width:680px){
  .search-panel{margin-top:20px;padding:14px 16px 0}
  .search-wrap input{height:46px}
}

/* Display formatting never changes the saved number text. */
.number-content{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.number-actions{display:flex;flex-direction:column;gap:5px;align-items:flex-end;flex-shrink:0}.number-extension{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;user-select:all}.number-copy-hint{font-size:10px;color:var(--muted);line-height:1.5}.number-actions .copy-button{min-width:65px}.clipboard-target{position:fixed;top:0;left:-9999px;opacity:0}.number-cell{align-items:center}
@media(max-width:680px){.number-content{grid-column:2}.number-actions{grid-column:3}.number-cell .cell-label{align-self:start;padding-top:9px}}

/* Phone and fax need equal room for a complete number and its copy control. */
@media(min-width:681px){
  .list-heading,.contact-row{grid-template-columns:minmax(205px,1fr) minmax(190px,230px) minmax(190px,230px)}
}

/* Keep compact copy controls directly beneath the number they belong to. */
.number-cell{flex-direction:column;align-items:flex-start;justify-content:center;gap:6px}
.number-content{flex:none}
.number-actions{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}
.number-actions .copy-button{min-width:56px;min-height:28px;padding:4px 7px;font-size:10px;line-height:1.4;border-radius:6px;gap:4px}
.number-actions .copy-button svg{width:12px;height:12px}
@media(max-width:680px){
  .number-cell,.phone-cell{grid-template-columns:40px minmax(0,1fr);align-items:start;gap:5px 8px}
  .number-cell .cell-label{grid-column:1;grid-row:1;padding-top:2px}
  .number-content{grid-column:2;grid-row:1}
  .number-actions{grid-column:2;grid-row:2}
}

/* Contact type and custom fields share the responsive form layout. */
.form-grid select{width:100%;min-height:42px;border:1px solid #b9ccd7;background:#fff;border-radius:7px;padding:9px 10px;font:inherit;font-size:16px;color:var(--ink)}
.form-grid select:disabled{opacity:.55}

/* Pending contacts require an explicit number check before publication. */
.review-confirmation{padding:12px 14px;border:1px solid #e9d8b5;border-radius:8px;background:var(--amber-bg)}
.review-confirmation .checkbox-label{min-height:32px;color:var(--ink);font-weight:600}
.review-confirmation input{flex-shrink:0}
.review-confirmation p{margin:8px 0 0;font-size:12px;line-height:1.6;color:#73551c}

/* A separate confirmation keeps permanent deletion deliberate. */
.management-toolbar{justify-content:flex-end}
#delete-dialog{width:min(480px,calc(100% - 28px))}
.delete-contact-name{font-size:18px;font-weight:650;overflow-wrap:anywhere;margin:20px 0 3px}
.delete-warning{font-size:14px;line-height:1.65;color:var(--body);margin:20px 0}
.primary-button.danger-button{background:#a52e2e;color:#fff}
.primary-button.danger-button:hover{background:#862323}
#delete-dialog .dialog-actions{flex-wrap:wrap}


.contact-address{overflow-wrap:anywhere}

.form-grid .middle-initial-field input:not([type=checkbox]){width:4.5rem;max-width:100%}

.form-grid .title-field input:not([type=checkbox]){width:4.5rem;max-width:100%}
.title-credential-fields{display:flex;align-items:flex-start;gap:14px;min-width:0}
.form-grid .credential-field input:not([type=checkbox]){width:6.5rem;max-width:100%}

/* Compact results keep numbers in reach; details live in the read-only profile. */
.contact-identity{border:0;background:transparent;text-align:left;width:100%;padding:6px 0;border-radius:6px;color:inherit;font:inherit;cursor:pointer}
.contact-identity .contact-name{min-width:0}
.identity-chevron{margin-left:auto;font-size:24px;line-height:1;color:#6e91a0;opacity:0;transform:translateX(-3px);transition:opacity .15s,transform .15s}
.contact-row:hover .identity-chevron,.contact-identity:focus-visible .identity-chevron{opacity:1;transform:none}
@media(min-width:681px){.contact-row{padding-top:12px;padding-bottom:12px;min-height:86px}}

/* Native radios retain normal keyboard and screen-reader behavior. */
.contact-type-options{margin:0;padding:0;border:0;min-width:0}
.contact-type-options legend{font-size:12px;font-weight:600;padding:0;margin-bottom:6px}
.contact-type-choices{display:flex;flex-wrap:wrap;gap:8px 18px}
.form-grid .contact-type-choices label{flex-direction:row;align-items:center;gap:8px;min-height:44px;font-size:14px;font-weight:500;cursor:pointer}
.form-grid .contact-type-choices input[type=radio]{appearance:auto;width:18px;height:18px;padding:0;margin:0;accent-color:var(--ink);flex:none}

/* The panel and shade animate together only on desktop without reduced motion. */
html{scrollbar-gutter:stable}
body:has(#profile-dialog[open]){overflow:hidden}
#profile-dialog{position:fixed;inset:0;margin:0;width:100%;height:100%;max-width:none;max-height:none;padding:24px;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden}
#profile-dialog[open]{display:grid;place-items:center}
#profile-dialog::backdrop{background:transparent}
.profile-shade{position:absolute;inset:0;background:#19264188;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.profile-panel{position:relative;width:min(620px,100%);max-height:calc(100dvh - 48px);overflow:auto;overscroll-behavior:contain;background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 20px 80px #132d3840;transform-origin:center}
.profile-topline{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}
.profile-kicker{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);font-weight:600}
.close-profile{display:grid;place-items:center;width:38px;height:38px;border:1px solid #bfd7e1;border-radius:9px;background:#edf7f9;font-size:26px;line-height:1}
.profile-identity{display:flex;gap:16px;align-items:center;margin-bottom:26px;min-width:0}
.profile-identity>div{min-width:0}
.profile-avatar{width:54px;height:54px;flex-basis:54px;border-radius:14px;font-size:17px}
.profile-avatar svg{width:29px;height:29px}
.profile-name{font-size:26px;line-height:1.25;letter-spacing:-.6px;font-weight:650;margin:0;overflow-wrap:anywhere}
.profile-subtitle{font-size:13px;color:var(--muted);margin:7px 0 0;overflow-wrap:anywhere}
.profile-numbers{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:20px 0;border-block:1px solid var(--line)}
.profile-numbers .number-cell{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:7px;border:0;padding:0;margin:0;min-width:0;order:initial}
.profile-numbers .cell-label{display:block;font-size:11px;color:var(--muted)}
.profile-numbers .number{font-size:18px}
.profile-numbers .number-actions .copy-button{font-size:12px;min-height:36px;padding:7px 10px}
.profile-details{display:grid;grid-template-columns:120px minmax(0,1fr);gap:15px 20px;margin:24px 0;font-size:13px}
.profile-details dt{color:var(--muted)}
.profile-details dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.profile-footer{display:flex;justify-content:flex-end;border-top:1px solid var(--line);padding-top:20px}
.profile-toast{margin:18px 0 0;background:var(--ink);color:#fff;border-radius:8px;padding:10px 14px;font-size:12px;overflow-wrap:anywhere}
#profile-dialog[data-input=pointer] .close-profile:focus{outline:none}
@media(max-width:760px){
  #profile-dialog{padding:14px}
  .profile-panel{max-height:calc(100dvh - 28px);padding:22px;border-radius:14px}
  .profile-name{font-size:23px}
  .profile-details{grid-template-columns:1fr;gap:5px}
  .profile-details dd{margin-bottom:12px}
  .close-profile,.profile-footer button,.profile-numbers .number-actions .copy-button{min-height:44px}
  .close-profile{width:44px}
  .identity-chevron{opacity:1;transform:none}
}
@media(max-width:380px){.profile-numbers{grid-template-columns:1fr;gap:18px}.profile-panel{padding:18px}}

/* Destructive actions look distinct but retain the separate confirmation. */
.row-actions [data-action=delete]{color:#9d3333;background:#fff1f1;border-color:#e4bdbd}
.row-actions [data-action=delete]:hover{color:#812626;background:#ffe5e5;border-color:#ce9191}


/* Readable helper copy at every size, without shrinking phone text. */
:root{color-scheme:light dark}
.brand-sub,.private-badge,.eyebrow,.search-label,.search-hint,.filter,.list-toolbar,.list-toolbar p,.sort-label,.sort-label select,.contact-subtitle,.not-provided,.number-extension,.number-copy-hint,.review-details,.review-details summary,.review-details p,.source-note,footer,.sync-status,.form-help,.form-grid label,.contact-type-options legend,.form-error,.review-confirmation p,.contact-note,.profile-subtitle,.profile-details,.profile-toast{font-size:14px}
.filter>span:not(.review-dot),.list-heading,.cell-label,.review-number>.cell-label,.profile-kicker,.profile-numbers .cell-label,.review-badge{font-size:13px}
.contact-name{font-size:15px}
.number-cell .number{font-size:16px}
.profile-numbers .number{font-size:18px}
.number-actions .copy-button,.profile-numbers .number-actions .copy-button{font-size:14px;min-height:36px;padding:6px 10px;gap:6px}
.number-actions .copy-button svg{width:14px;height:14px}
.primary-button,.secondary-button,.row-actions button{font-size:14px;min-height:36px}
.search-label,.search-hint,.sync-status,.source-note,footer,.profile-subtitle{line-height:1.6}
footer{align-items:flex-start;flex-wrap:wrap}
footer p{flex:1 1 220px}
footer p:last-child{flex:0 0 auto}
.profile-hint-touch{display:none}
@media(max-width:760px){.profile-numbers .number-actions .copy-button{min-height:44px}}
@media(pointer:coarse){.profile-hint-touch{display:inline}.profile-hint-pointer{display:none}}
@media(max-width:680px){
  .topbar-inner{flex-wrap:wrap;gap:10px;padding-block:12px}
  .number-cell,.phone-cell{grid-template-columns:48px minmax(0,1fr)}
  .number-cell .cell-label{font-size:13px}
  .number-actions .copy-button,.profile-numbers .number-actions .copy-button,.primary-button,.secondary-button,.row-actions button,.sort-label select{min-height:44px}
  .filter{font-size:14px}
  .filter>span:not(.review-dot){font-size:13px}
  .source-note,footer,.contact-subtitle,.review-details summary,.review-details p{font-size:14px}
  footer p+p{margin-top:12px}
}

/* Follow the device preference. No account or stored setting is changed. */
@media(prefers-color-scheme:dark){
  :root{--paper:#101b2b;--white:#182536;--ink:#e7edf7;--body:#c7d2e2;--muted:#adbbd0;--line:#3b4b61;--soft:#24384b;--green:#c8e9f3;--amber:#ffd287;--amber-bg:#392d1b;--error:#ffb7a6}
  .topbar{background:#142131;border-color:var(--line)}
  .brand-icon{background:#253851}
  .private-badge,.avatar,.avatar.business{background:var(--soft);border-color:var(--line);color:var(--ink)}
  .eyebrow,.intro-copy,.source-note,.source-note strong,.list-toolbar p,.sort-label,.sort-label select,.count-summary,.contact-subtitle,.not-provided,.list-heading,footer,.cell-label,.review-number>.cell-label{color:var(--muted)}
  .count-summary,footer,.contact-row,.number-cell{border-color:var(--line)}
  .search-panel{background:#253851}
  .search-wrap{background:var(--white);border-color:var(--line);color:var(--muted)}
  .search-wrap input::placeholder,.clear-search,.search-shortcut{color:var(--muted)}
  .search-shortcut{border-color:var(--line)}
  .contact-row:hover{background:#1c2d40}
  .number{color:var(--ink)}
  .copy-button,.secondary-button,.close-profile{color:var(--ink);border-color:#537389;background:#23384b}
  .copy-button:hover,.secondary-button:hover,.close-profile:hover{color:var(--ink);border-color:#79d3eb;background:#2e4e61}
  .copy-button.copied{color:var(--ink);border-color:#79d3eb;background:#2e4e61}
  .primary-button{background:#79d3eb;color:#102235}
  .primary-button:hover{background:#a0e3f4}
  .empty-state{background:var(--white);border-color:#537389}
  .empty-icon,.identity-chevron{color:#90b7c9}
  .form-grid input:not([type=checkbox]),.form-grid textarea,.form-grid select{background:var(--white);border-color:#537389;color:var(--ink)}
  .form-grid input::placeholder,.form-grid textarea::placeholder{color:var(--muted)}
  .form-grid input[type=checkbox],.form-grid .contact-type-choices input[type=radio]{accent-color:#79d3eb}
  .toast,.profile-toast{background:#22384b;color:#fff;border-color:#537389}
  .review-row,.review-row:hover{background:#2d261b}
  .review-row .avatar,.review-confirmation{border-color:#8b7044;background:var(--amber-bg)}
  .review-details{border-color:#8b7044;color:var(--amber)}
  .review-details summary,.candidate,.review-confirmation p{color:var(--amber)}
  .sync-status.error,.form-error{color:var(--error)}
  .row-actions [data-action=delete]{color:#ffc1c1;background:#492727;border-color:#a16060}
  .row-actions [data-action=delete]:hover{color:#ffe2e2;background:#613333;border-color:#c07b7b}
  .primary-button.danger-button{background:#a52e2e;color:#fff}
  .primary-button.danger-button:hover{background:#862323}
  button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,summary:focus-visible,.form-grid textarea:focus-visible{outline-color:#8addf0}
  .profile-shade,dialog::backdrop{background:#0009}
  #profile-dialog::backdrop{background:transparent}
}

/* Public suggestions stay separate from the admin editor. */
.header-actions{display:flex;align-items:center;gap:10px;margin-left:auto}
.header-actions #sign-out{min-height:44px;white-space:nowrap}
@media(max-width:480px){.topbar-inner{flex-wrap:wrap;gap:8px 16px;padding-block:10px}.header-actions{gap:8px}}
.filter-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.filter-row .filters{flex:1;min-width:0}
.suggest-entry{margin:0;flex-shrink:0;white-space:nowrap;min-height:44px}
.suggestion-result{position:fixed;z-index:90;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;align-items:center;gap:16px;width:min(560px,calc(100% - 32px));padding:16px 18px;border:1px solid var(--line);border-radius:12px;background:var(--white);color:var(--ink);box-shadow:0 8px 32px #132d3833;font-size:14px;line-height:1.6}
.suggestion-result p{margin:0;min-width:0;overflow-wrap:anywhere}
#dismiss-suggestion-result{margin-left:auto;flex:0 0 44px;min-height:44px;padding:0;font-size:24px;line-height:1}
@media(max-width:680px){.filter-row{flex-wrap:wrap;gap:0}.filter-row .filters{flex:1 1 100%;margin-right:0;padding-right:0}.suggest-entry{margin:0}.suggestion-result{gap:12px;padding:14px}}
#suggestion-dialog{max-height:calc(100dvh - 28px);overflow-y:auto;overscroll-behavior:contain}
body:has(#suggestion-dialog[open]){overflow:hidden}
.suggestion-warning{padding:12px 14px;border:1px solid var(--amber);border-radius:8px;background:var(--amber-bg);color:var(--amber);font-size:14px;line-height:1.6}
#suggestion-form .form-help{margin:0}
#suggestion-review{margin-bottom:18px!important}
#suggestion-status{font-size:14px;line-height:1.6}
#suggestion-form .dialog-actions{flex-wrap:wrap}
#suggestion-form input,#suggestion-form textarea,#suggestion-form select{min-width:0}
#empty-state [data-suggest-contact]{margin-top:10px}

/* Compact copy icons stay beside their number in both results and profiles. */
.number-content{max-width:100%}
.number-primary{display:flex;align-items:center;gap:6px;min-width:0}
.number-primary .number-actions{flex:none;margin:0}
.number-primary .copy-button{width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border-color:transparent;background:transparent;color:var(--ink);font-size:18px}
.number-primary .copy-button:hover,.number-primary .copy-button.copied{border-color:var(--line);background:var(--soft);color:var(--ink)}
.number-primary .copy-button svg{width:14px;height:14px}
@media(max-width:760px),(pointer:coarse){.number-primary .copy-button{width:44px;height:44px;min-width:44px;min-height:44px}}

/* Pinned search on long lists (desktop and tablet). The panel keeps its size:
   a negative sticky top lets only its label line scroll away, so nothing
   reflows when it pins. Column headings pin just beneath it. */
@media(min-width:761px) and (min-height:560px){
  .sticky-search .search-panel{position:sticky;top:calc(-1 * var(--search-collapse,0px));z-index:30;transition:box-shadow .2s ease}
  .sticky-search .search-panel.is-stuck{box-shadow:0 12px 28px #0f1d3330}
  .sticky-search .search-panel.is-stuck .search-label{visibility:hidden}
  .sticky-search .list-heading{position:sticky;top:var(--search-pinned,0px);z-index:20;background:var(--paper);padding-top:12px;margin-top:-12px}
}

/* Number labels ("Medical Records") and profile-only "Other numbers". */
.number-label{font-size:12px;line-height:1.35;color:var(--muted);font-weight:550;overflow-wrap:anywhere}
.profile-numbers .number-label{font-size:13px}
.profile-other-heading{grid-column:1/-1;margin:6px 0 -4px;padding-top:14px;border-top:1px solid var(--line);font-size:13px;font-weight:600;color:var(--muted)}
/* In list rows the label/extension hang just below the number, so every
   number in a row stays on one line whatever is underneath it. */
.number-meta{display:flex;flex-direction:column;gap:4px;min-width:0}
@media(min-width:681px){
  .contact-row .number-content{position:relative}
  .contact-row .number-meta{position:absolute;top:100%;left:0;right:0;margin-top:1px;flex-direction:row;gap:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .contact-row .number-meta{font-size:13px;color:var(--muted)}
  .contact-row .number-meta>span{font-size:inherit;overflow:hidden;text-overflow:ellipsis}
  .contact-row .number-label+.number-extension::before{content:"\00b7";margin:0 6px}
}

/* Header controls share one shape and height: pill corners, 44px tall.
   Buttons keep their outline; the Admin directory badge stays a label. */
.header-actions>.secondary-button,.header-actions>.private-badge{box-sizing:border-box;min-height:44px;border-radius:999px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;line-height:1.1}
.header-actions>[hidden]{display:none!important}

/* Typed contact labels ("Hospital", "Physician") under names in the list. */
.contact-text{display:flex;flex-direction:column;min-width:0}
.contact-text>.contact-subtitle{display:block;margin:1px 0 0;line-height:1.35}
/* On desktop the label hangs below the name so the row keeps its height and
   the numbers stay level with the name, as with number labels. */
@media(min-width:681px){
  .contact-text{position:relative}
  .contact-text>.contact-subtitle{position:absolute;top:100%;left:0;margin:0;white-space:nowrap}
}

/* Header menu: a drawer from the right with printable documents. */
.menu-entry{gap:8px;flex-shrink:0;white-space:nowrap}
.menu-entry svg{width:18px;height:18px}
#menu-dialog{margin:0 0 0 auto;width:min(440px,100%);height:100dvh;max-height:none;border-radius:0;border-width:0 0 0 1px;padding:24px;overflow-y:auto;overscroll-behavior:contain}
body:has(#menu-dialog[open]){overflow:hidden}
.menu-section{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.menu-section h3{font-size:17px;font-weight:650;margin:0}
.menu-section>.form-help{margin:6px 0 14px}
#documents-status{margin:0 0 12px}
#retry-documents{margin:0 0 14px}
.document-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.document-item{border:1px solid var(--line);border-radius:12px;background:var(--white);overflow:hidden}
.document-link{display:flex;align-items:center;gap:12px;min-height:60px;padding:12px 14px;text-decoration:none;color:var(--ink)}
.document-link:hover{background:var(--soft)}
.document-link:focus-visible{outline-offset:-3px}
.document-icon{flex:0 0 38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--ink)}
.document-icon svg{width:20px;height:20px}
.document-text{display:flex;flex-direction:column;min-width:0;flex:1}
.document-title{font-size:15px;font-weight:620;line-height:1.35;overflow-wrap:anywhere}
.document-meta{font-size:13px;color:var(--muted)}
.document-open{flex:none;font-size:14px;font-weight:600;color:var(--ink);padding:8px 12px;border:1px solid var(--line);border-radius:999px}
.document-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:0 14px 12px}
.document-rename,.document-confirm{padding:12px 14px;border-top:1px solid var(--line)}
.document-rename label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}
.document-rename input{width:100%;border:1px solid var(--line);background:var(--white);color:var(--ink);border-radius:7px;padding:9px 10px;font:inherit;font-size:16px}
.document-rename .document-actions,.document-confirm .document-actions{padding:12px 0 0}
.document-confirm p{margin:0;font-size:14px;line-height:1.6}
.document-actions .primary-button{margin:0}
.document-upload{margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}
.document-upload h4{font-size:15px;font-weight:650;margin:0}
.document-upload>.form-help{margin:6px 0 14px}
.document-upload input[type=file]{padding:8px;font-size:14px}
@media(max-width:680px){#menu-dialog{width:100%;border-width:0;padding:18px 16px}.menu-entry{min-height:44px}.document-open{display:none}}

/* Menu drawer motion: slides in from the right while the page dims, and slides
   back out (a little faster) on close. Reduced-motion settings skip it. */
@keyframes menu-drawer-in{from{transform:translateX(100%)}to{transform:none}}
@keyframes menu-drawer-out{from{transform:none}to{transform:translateX(100%)}}
@keyframes menu-shade-in{from{opacity:0}to{opacity:1}}
@keyframes menu-shade-out{from{opacity:1}to{opacity:0}}
#menu-dialog[open]{animation:menu-drawer-in .28s cubic-bezier(.2,0,0,1)}
#menu-dialog[open]::backdrop{animation:menu-shade-in .28s ease-out}
#menu-dialog.is-closing{animation:menu-drawer-out .2s cubic-bezier(.3,0,.8,.15) forwards}
#menu-dialog.is-closing::backdrop{animation:menu-shade-out .2s ease-in forwards}
@media(prefers-reduced-motion:reduce){#menu-dialog[open],#menu-dialog[open]::backdrop,#menu-dialog.is-closing,#menu-dialog.is-closing::backdrop{animation:none}}
