:root{font:16px system-ui,sans-serif;color:#16352f;background:#f2f6f5}*{box-sizing:border-box}body{margin:0}header{background:#174f46;color:white;padding:20px max(20px,calc((100% - 1050px)/2));display:flex;align-items:center;gap:20px;flex-wrap:wrap}header strong{font-size:22px}header span{flex:1}main{max-width:1050px;margin:auto;padding:24px}section{background:white;border:1px solid #cdded9;border-radius:14px;padding:24px;margin:20px 0}h1{font-size:26px}p{line-height:1.6}.notice{border-left:5px solid #c19023;background:#fff5d8;padding:12px 16px}form{display:flex;gap:16px;align-items:end;flex-wrap:wrap}label{display:flex;flex-direction:column;gap:8px}input,textarea{font:inherit;border:1px solid #8ca79f;border-radius:6px;padding:12px;max-width:100%}button{font:inherit;background:#17594d;color:white;border:0;border-radius:6px;min-height:44px;padding:10px 18px;cursor:pointer}button:disabled{opacity:.65;cursor:not-allowed;background:#64716e}button:focus-visible,input:focus-visible{outline:3px solid #cc8d00;outline-offset:2px}.tabs{display:flex;gap:12px;flex-wrap:wrap}.tabs .selected{background:#112e29;box-shadow:0 0 0 3px #aedccc}li{padding:12px 0;display:flex;gap:16px;align-items:center;flex-wrap:wrap}#message{color:#963521;font-weight:600}#newtoken{background:#fff5d8;padding:20px;margin:16px 0}textarea{width:100%;min-height:90px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #dbe5e2;white-space:nowrap}.scroll{overflow:auto}footer{font-size:14px;color:#526a64;padding:20px 0}[hidden]{display:none!important}@media(max-width:600px){main{padding:12px}section{padding:16px}form,label,input{width:100%}}

.monitor-card{border:1px solid #cbd8d5;border-left:5px solid #176052;border-radius:8px;padding:12px 16px;margin:12px 0;background:#fff}.monitor-card h4{margin:0}.monitor-card details{overflow-wrap:anywhere;font-size:.85rem}select{padding:10px;border-radius:6px}input[type=checkbox]{width:auto}#monitor-cards{max-height:70vh;overflow:auto}

.topology-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px;border-bottom:1px solid #ccd8d4}.topology-row span{flex:1;min-width:200px}#topology-editor form{border:1px solid #ccd8d4;padding:16px;margin:12px 0}#topology select{max-width:100%}
/* Registry review: compact residence/person/credential hierarchy. */
.registry-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:16px 0}.registry-stat{padding:12px;border:1px solid #cbd9d5;border-radius:10px;display:flex;flex-direction:column;gap:5px}.registry-stat strong{font-size:1.5rem}.registry-stat span,.registry-meta{font-size:.85rem}.registry-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.registry-home{border:1px solid #cbd9d5;border-radius:10px;margin:10px 0;padding:14px}.registry-home summary{cursor:pointer;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.registry-contact{padding:10px 0;border-bottom:1px solid #d5dfdb}.registry-person{border-left:3px solid #1d5c50;margin:12px 0;padding:4px 12px}.registry-person h4{margin:8px 0}.registry-person p{margin:8px 0}#registry-tabs [aria-pressed="true"]{background:#174f45;color:white}#registry-content td{vertical-align:top}#registry-content details{margin:10px 0}#registry-review-form{border:2px solid #1d5c50;border-radius:10px;padding:16px;margin-top:16px}@media(max-width:700px){.registry-filters{grid-template-columns:1fr}.registry-home summary{display:block}.registry-meta{display:block;margin-top:8px}}

.contact-editor{border:1px solid var(--line,#64748b);padding:1rem;border-radius:12px;margin-block:1rem}.contact-editor fieldset{margin-block:1rem;border:1px solid var(--line,#64748b);border-radius:8px}.contact-editor input{max-width:100%}

.contact-editor{display:block}.contact-editor fieldset{display:grid;gap:12px}.contact-editor>label{margin-block:16px}.contact-editor>button{margin:4px}.contact-editor select{max-width:100%}

/* Global feedback stays visible even when the operation is far below the fold. */
#message:not(:empty){position:fixed;bottom:16px;left:50%;transform:translateX(-50%);z-index:1000;width:min(92vw,760px);padding:14px 18px;background:#fff8df;border:1px solid #9d7439;border-radius:10px;box-shadow:0 4px 18px #0003;max-height:35vh;overflow:auto}
button.is-loading{cursor:wait;background:#64716e;display:inline-flex;align-items:center;justify-content:center;gap:9px}
button.is-loading::before{content:"";width:1em;height:1em;flex-shrink:0;border:2px solid #ffffff70;border-top-color:white;border-radius:50%;animation:button-spin .8s linear infinite}
@keyframes button-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){button.is-loading::before{animation:none;border-style:dotted}}
.action-feedback{flex-basis:100%;margin:8px 0;color:#344c45;overflow-wrap:anywhere}
#ucm-scope{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:16px 0}
#ucm-scope label{flex-direction:row;align-items:center;justify-content:flex-start;border:1px solid #ccd8d4;border-radius:8px;padding:10px;min-height:48px;cursor:pointer}
#ucm-scope input{margin:0;width:20px;height:20px;flex-shrink:0}
#ucm-items{overflow:auto}#directory-rows td{vertical-align:top;white-space:normal}#directory-rows button{margin:4px 0}#directory-contact{max-width:600px;width:90vw;border:1px solid #637a72;border-radius:14px}#directory-contact::backdrop{background:#0006}.directory-slot{padding:12px;border-bottom:1px solid #ccd8d4}.directory-extension{font-size:1.3rem;font-weight:bold}
.guard-view #details > :not(#tenantname):not(#directory-panel):not(#directory-contact):not(#guard-nav):not(#visits-panel):not(#visit-create):not(#visit-detail):not(#site-settings):not(#invitations-dialog):not(#invitation-action):not(#qr-receive):not(#invitation-qr):not(#invitation-history):not(#catalog-dialog):not(#exit-dialog){display:none!important}
.guard-view .guard-link,.guard-view #directory-feed-admin{display:none!important}
.guard-link{margin:12px;display:inline-block}#directory-feed-secret{padding:16px;border:1px solid #c19023;background:#fff5d8}#directory-feed-secret input{width:100%}

.guard-view #calling-app-admin{display:none!important}#calling-app-form{padding:16px;border:1px solid #ccd8d4;border-radius:10px}#calling-app-uri{min-width:260px}

#guard-nav{margin:16px 0}#visit-tabs{margin:16px 0}.visit-card{border:1px solid #cdded9;border-left:5px solid #17594d;border-radius:10px;padding:16px;margin:12px 0}.visit-card h3{margin:0 0 8px}.visit-card p{margin:6px 0}#visit-create,#visit-detail{width:min(94vw,720px);max-height:90vh;overflow:auto;border:1px solid #637a72;border-radius:14px;padding:24px}#visit-create::backdrop,#visit-detail::backdrop{background:#0007}#visit-create-form{display:block}#visit-create-form fieldset{border:1px solid #cdded9;border-radius:8px;margin:12px 0;padding:12px}#visit-create-form label,#visit-detail label{margin:12px 0}#visit-create-form input,#visit-detail input{width:100%}#visit-create-form select{min-width:180px}.tabs button[aria-pressed="true"]{background:#0e302a;box-shadow:0 0 0 3px #81baad}#visit-contact-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}#visit-contact-box>div{border:1px solid #cdded9;border-radius:8px;padding:12px}#visit-history{padding-left:24px}#visit-history li{display:list-item;overflow-wrap:anywhere}#visit-decision{display:flex;flex-wrap:wrap;gap:12px}#visit-actions{margin:16px 0}

#site-settings{width:min(96vw,1000px);max-height:92vh;overflow:auto;padding:24px;border:1px solid #637a72;border-radius:14px}#site-settings::backdrop{background:#0007}#passage-form,#map-save-form{display:block}#site-settings label{margin:12px 0}.map-canvas{max-width:100%;overflow:auto;background:#f7f7fa;border:1px solid #cdded9;border-radius:10px;margin:12px 0}.map-canvas svg{display:block;width:100%;height:65vh;min-height:360px}.map-canvas .map-linked{cursor:pointer}.map-canvas .map-linked:focus{outline:3px solid #bd6500}.map-canvas .map-has-visits :is(path,rect,polygon,circle,ellipse){fill:#f9dc88;stroke:#805100;stroke-width:2.5px}.map-canvas .map-selected :is(path,rect,polygon,circle,ellipse){fill:#17594d;stroke:#0c3029;stroke-width:3px}.map-canvas .map-selected text{fill:white}#map-links{max-height:360px;overflow:auto}#map-links label{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-bottom:1px solid #cdded9;padding:8px}#inside-map-panel{margin:14px 0;padding:14px;border:1px solid #cdded9;border-radius:12px}

#invitations-dialog,#invitation-action,#qr-receive,#invitation-qr,#invitation-history{width:min(94vw,760px);max-height:90vh;overflow:auto;border:1px solid #637a72;border-radius:14px;padding:24px}dialog::backdrop{background:#0007}#invitations-dialog form,#invitation-action form,#qr-receive form{display:block}#invitation-qr-image{background:white;padding:16px;text-align:center}#invitation-qr-image svg{width:min(100%,360px);height:auto}#invitation-qr-token{width:100%;min-height:80px;overflow-wrap:anywhere}#qr-receive-token{width:100%;min-height:48px}#invitation-qr-download{display:inline-block;padding:12px}#invitation-history-list li{display:list-item;overflow-wrap:anywhere}

#catalog-dialog{width:min(96vw,960px);max-height:92vh;overflow:auto;border-radius:14px;padding:24px}#catalog-form,#capture-form{display:block}.catalog-item{border:1px solid #8aa49d;border-radius:8px;margin:12px 0;padding:14px}.catalog-item label{display:block;margin:8px 0}.catalog-item input[type=checkbox],#capture-form input[type=checkbox]{width:auto}#capture-section{border:1px solid #8aa49d;padding:16px;border-radius:10px;margin:16px 0}#capture-form input,#capture-form select{max-width:100%}#catalog-form details>summary{font-weight:bold;cursor:pointer;padding:12px}#visit-type{max-width:100%}

#exit-dialog{width:min(94vw,760px);max-height:90vh;overflow:auto;border:1px solid #637a72;border-radius:14px;padding:24px}#exit-qr-form{display:block}#exit-qr-form label{margin:14px 0}#exit-token,#exit-lane{width:100%;min-height:48px}

.resident-qr-image{background:white;max-width:340px;margin:1rem auto;padding:12px}.resident-qr-image svg{display:block;width:100%;height:auto}


.qr-camera-video{display:block;width:100%;max-height:60vh;background:#111;border-radius:12px;object-fit:contain}#qr-camera-dialog{width:min(95vw,620px)}.account-card{padding:12px;border:1px solid #9aafb1;border-radius:10px;margin:12px 0}
