From 4786221781302bf924a245c89de91a05d0a05f72 Mon Sep 17 00:00:00 2001 From: Benno Lorenz Date: Tue, 9 Jun 2026 10:15:48 +0200 Subject: [PATCH] added vcard --- static/vcard/Benno Lorenz's public key.asc | 19 ++++++++++++++ ...no Lorenz's public key.asc:Zone.Identifier | Bin 0 -> 111 bytes static/vcard/bennolorenz.vcf | 23 +++++++++++++++++ static/vcard/bennolorenz.vcf:Zone.Identifier | Bin 0 -> 111 bytes static/vcard/index.html | 24 ++++++++++++++++++ static/vcard/index.html:Zone.Identifier | Bin 0 -> 111 bytes static/vcard/photo.jpeg | Bin 0 -> 18256 bytes static/vcard/photo.jpeg:Zone.Identifier | Bin 0 -> 111 bytes static/vcard/qrcode.min.js | 1 + static/vcard/qrcode.min.js:Zone.Identifier | Bin 0 -> 111 bytes static/vcard/style.min.css | 1 + static/vcard/style.min.css:Zone.Identifier | Bin 0 -> 111 bytes 12 files changed, 68 insertions(+) create mode 100644 static/vcard/Benno Lorenz's public key.asc create mode 100644 static/vcard/Benno Lorenz's public key.asc:Zone.Identifier create mode 100644 static/vcard/bennolorenz.vcf create mode 100644 static/vcard/bennolorenz.vcf:Zone.Identifier create mode 100644 static/vcard/index.html create mode 100644 static/vcard/index.html:Zone.Identifier create mode 100644 static/vcard/photo.jpeg create mode 100644 static/vcard/photo.jpeg:Zone.Identifier create mode 100644 static/vcard/qrcode.min.js create mode 100644 static/vcard/qrcode.min.js:Zone.Identifier create mode 100644 static/vcard/style.min.css create mode 100644 static/vcard/style.min.css:Zone.Identifier diff --git a/static/vcard/Benno Lorenz's public key.asc b/static/vcard/Benno Lorenz's public key.asc new file mode 100644 index 0000000..21a4527 --- /dev/null +++ b/static/vcard/Benno Lorenz's public key.asc @@ -0,0 +1,19 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: 7408 C82B 3C63 D661 E4F8 6F19 FB83 5304 6D3F 2092 +Comment: Benno Lorenz + +xjMEaTIM6RYJKwYBBAHaRw8BAQdAcqWV3FP3YpEBTW++N9rp8hCuKxCMHRYelVUj +VeuMi3nNJUJlbm5vIExvcmVueiA8YmVubm9AYmVubm8tbG9yZW56LmNvbT7ClgQT +FgoAPhYhBHQIyCs8Y9Zh5PhvGfuDUwRtPyCSBQJpMgzpAhsDBQkFpEjHBQsJCAcC +BhUKCQgLAgQWAgMBAh4BAheAAAoJEPuDUwRtPyCS+6MBAItxFT0xIJjH0C6Q2Vbb +Rf6oAqRwlRQoQF1WHj7FLBmAAQCf6GL4Hi5+6i6nQAm+I9e11PirAYhfGJTs0swx +OYOCA84zBGkyE3wWCSsGAQQB2kcPAQEHQOaUdPnzAftVYchSH8bDA/XbHsAcS1sW +GVG0cx6eiJhfwn4EGBYKACYWIQR0CMgrPGPWYeT4bxn7g1MEbT8gkgUCaTITfAIb +IAUJBaOZdAAKCRD7g1MEbT8gkvbdAQCqchVmZhnisbpnog2AbmP//jEmMB7VB44v +XTnO1eneuAD/cbC5z/oFwIV54DsabM/RqQF8R/hn/fynurah9fSHoAvOOARpMgzp +EgorBgEEAZdVAQUBAQdAr8zZbpRuXM+0o4cFprGCxuN0o6f/8Ws/Kt/M43fkrA8D +AQgHwn4EGBYKACYWIQR0CMgrPGPWYeT4bxn7g1MEbT8gkgUCaTIM6QIbDAUJBaRI +xwAKCRD7g1MEbT8gkoxcAPoCxaH8DLJGiBOZmWE4k+GZRXUobt5+xWjQO7S71fx+ +OwEAx2Pe2WaykF71QPJmyMv6c0OpWq1/xjZmED71Q3/cMwQ= +=qmZI +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/static/vcard/Benno Lorenz's public key.asc:Zone.Identifier b/static/vcard/Benno Lorenz's public key.asc:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001 diff --git a/static/vcard/bennolorenz.vcf b/static/vcard/bennolorenz.vcf new file mode 100644 index 0000000..c53bb26 --- /dev/null +++ b/static/vcard/bennolorenz.vcf @@ -0,0 +1,23 @@ +BEGIN:VCARD +VERSION:3.0 +N:Lorenz;Benno;;; +FN:Benno Lorenz +ORG:RSP GmbH & Co. KG +ADR;TYPE=WORK:Zum Silberstollen 10 +07318 Saalfeld/Saale +TITLE:Software Engineer +TEL;TYPE=CELL: +TEL;TYPE=WORK: +TEL;TYPE=HOME: +TEL;TYPE=MSG: +EMAIL;TYPE=WORK:benno@benno-lorenz.com +URL;TYPE=Digital Business Card:https://benno-lorenz.com/vcard/bennolorenz +URL:benno-lorenz.com +URL;TYPE=Website:benno-lorenz.com +URL;TYPE=GitHub:https://github.com/bennolor +URL;TYPE=LinkedIn:https://linkedin.com/in/benno-lorenz-3b58212a8 +URL;TYPE=Mastodon:https://chaos.social/@BananaBen +KEY;TYPE=PGP;ENCODING=b:LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCkNvbW1lbnQ6IDc0MDggQzgyQiAzQzYzIEQ2NjEgRTRGOCAgNkYxOSBGQjgzIDUzMDQgNkQzRiAyMDkyCkNvbW1lbnQ6IEJlbm5vIExvcmVueiA8YmVubm9AYmVubm8tbG9yZW56LmNvbT4KCnhqTUVhVElNNlJZSkt3WUJCQUhhUnc4QkFRZEFjcVdWM0ZQM1lwRUJUVysrTjlycDhoQ3VLeENNSFJZZWxWVWoKVmV1TWkzbk5KVUpsYm01dklFeHZjbVZ1ZWlBOFltVnVibTlBWW1WdWJtOHRiRzl5Wlc1NkxtTnZiVDdDbGdRVApGZ29BUGhZaEJIUUl5Q3M4WTlaaDVQaHZHZnVEVXdSdFB5Q1NCUUpwTWd6cEFoc0RCUWtGcEVqSEJRc0pDQWNDCkJoVUtDUWdMQWdRV0FnTUJBaDRCQWhlQUFBb0pFUHVEVXdSdFB5Q1MrNk1CQUl0eEZUMHhJSmpIMEM2UTJWYmIKUmY2b0FxUndsUlFvUUYxV0hqN0ZMQm1BQVFDZjZHTDRIaTUrNmk2blFBbStJOWUxMVBpckFZaGZHSlRzMHN3eApPWU9DQTg0ekJHa3lFM3dXQ1NzR0FRUUIya2NQQVFFSFFPYVVkUG56QWZ0VlljaFNIOGJEQS9YYkhzQWNTMXNXCkdWRzBjeDZlaUpoZnduNEVHQllLQUNZV0lRUjBDTWdyUEdQV1llVDRieG43ZzFNRWJUOGdrZ1VDYVRJVGZBSWIKSUFVSkJhT1pkQUFLQ1JEN2cxTUViVDhna3ZiZEFRQ3FjaFZtWmhuaXNicG5vZzJBYm1QLy9qRW1NQjdWQjQ0dgpYVG5PMWVuZXVBRC9jYkM1ei9vRndJVjU0RHNhYk0vUnFRRjhSL2huL2Z5bnVyYWg5ZlNIb0F2T09BUnBNZ3pwCkVnb3JCZ0VFQVpkVkFRVUJBUWRBcjh6WmJwUnVYTSswbzRjRnByR0N4dU4wbzZmLzhXcy9LdC9NNDNma3JBOEQKQVFnSHduNEVHQllLQUNZV0lRUjBDTWdyUEdQV1llVDRieG43ZzFNRWJUOGdrZ1VDYVRJTTZRSWJEQVVKQmFSSQp4d0FLQ1JEN2cxTUViVDhna294Y0FQb0N4YUg4RExKR2lCT1ptV0U0aytHWlJYVW9idDUreFdqUU83UzcxZngrCk93RUF4MlBlMldheWtGNzFRUEpteU12NmMwT3BXcTEveGpabUVENzFRMy9jTXdRPQo9cW1aSQotLS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0t +NOTE: +UID:EnBizCard-100782023 +END:VCARD \ No newline at end of file diff --git a/static/vcard/bennolorenz.vcf:Zone.Identifier b/static/vcard/bennolorenz.vcf:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001 diff --git a/static/vcard/index.html b/static/vcard/index.html new file mode 100644 index 0000000..a1bf85d --- /dev/null +++ b/static/vcard/index.html @@ -0,0 +1,24 @@ + Benno Lorenz's Digital Business Card
Photo

+ Benno Lorenz +

+ Software Engineer +

+ RSP GmbH & Co. KG +

+ Zum Silberstollen 10 +07318 Saalfeld/Saale +

Save Contact

+ Email +

+ Website +

\ No newline at end of file diff --git a/static/vcard/index.html:Zone.Identifier b/static/vcard/index.html:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001 diff --git a/static/vcard/photo.jpeg b/static/vcard/photo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..86f9052eeb348d604a7cd359b80a3214ad89e7c7 GIT binary patch literal 18256 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

X7!ZJPq-@XZawMf32>da$b2Txtc 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 ClUW7; literal 0 HcmV?d00001 diff --git a/static/vcard/photo.jpeg:Zone.Identifier b/static/vcard/photo.jpeg:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001 diff --git a/static/vcard/qrcode.min.js b/static/vcard/qrcode.min.js new file mode 100644 index 0000000..61c4e50 --- /dev/null +++ b/static/vcard/qrcode.min.js @@ -0,0 +1 @@ +function QR8bitByte(t){this.mode=QRMode.MODE_8BIT_BYTE,this.data=t,this.parsedData=[];for(var e=0,r=this.data.length;e65536?(o[0]=240|(1835008&n)>>>18,o[1]=128|(258048&n)>>>12,o[2]=128|(4032&n)>>>6,o[3]=128|63&n):n>2048?(o[0]=224|(61440&n)>>>12,o[1]=128|(4032&n)>>>6,o[2]=128|63&n):n>128?(o[0]=192|(1984&n)>>>6,o[1]=128|63&n):o[0]=n,this.parsedData.push(o)}this.parsedData=Array.prototype.concat.apply([],this.parsedData),this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function QRCodeModel(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}QR8bitByte.prototype={getLength:function(t){return this.parsedData.length},write:function(t){for(var e=0,r=this.parsedData.length;e=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=QRUtil.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var n=0;n>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++)o=!t&&1==(e>>r&1),this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=QRUtil.getBCHTypeInfo(r),n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<6?this.modules[n][8]=i:n<8?this.modules[n+1][8]=i:this.modules[this.moduleCount-15+n][8]=i}for(n=0;n<15;n++)i=!t&&1==(o>>n&1),n<8?this.modules[8][this.moduleCount-n-1]=i:n<9?this.modules[8][15-n-1+1]=i:this.modules[8][15-n-1]=i;this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,n=7,i=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var h=!1;i>>n&1)),QRUtil.getMask(e,o,a-s)&&(h=!h),this.modules[o][a-s]=h,-1==--n&&(i++,n=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},QRCodeModel.PAD0=236,QRCodeModel.PAD1=17,QRCodeModel.createData=function(t,e,r){for(var o=QRRSBlock.getRSBlocks(t,e),n=new QRBitBuffer,i=0;i8*s)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*s+")");for(n.getLengthInBits()+4<=8*s&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*s||(n.put(QRCodeModel.PAD0,8),n.getLengthInBits()>=8*s));)n.put(QRCodeModel.PAD1,8);return QRCodeModel.createBytes(n,o)},QRCodeModel.createBytes=function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),s=0;s=0?d.get(f):0}}var c=0;for(u=0;u=0;)e^=QRUtil.G15<=0;)e^=QRUtil.G18<>>=1;return e},getPatternPosition:function(t){return QRUtil.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case QRMaskPattern.PATTERN000:return(e+r)%2==0;case QRMaskPattern.PATTERN001:return e%2==0;case QRMaskPattern.PATTERN010:return r%3==0;case QRMaskPattern.PATTERN011:return(e+r)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case QRMaskPattern.PATTERN101:return e*r%2+e*r%3==0;case QRMaskPattern.PATTERN110:return(e*r%2+e*r%3)%2==0;case QRMaskPattern.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new QRPolynomial([1],0),r=0;r5&&(r+=3+i-5)}for(o=0;o=256;)t-=255;return QRMath.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},i=0;i<8;i++)QRMath.EXP_TABLE[i]=1<>>7-t%8&1)},put:function(t,e){for(var r=0;r>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];function QRCode(t){if(this.options={padding:4,width:256,height:256,typeNumber:4,color:"#000000",background:"#ffffff",ecl:"M"},"string"==typeof t&&(t={content:t}),t)for(var e in t)this.options[e]=t[e];if("string"!=typeof this.options.content)throw new Error("Expected 'content' as string!");if(0===this.options.content.length)throw new Error("Expected 'content' to be non-empty!");if(!(this.options.padding>=0))throw new Error("Expected 'padding' value to be non-negative!");if(!(this.options.width>0&&this.options.height>0))throw new Error("Expected 'width' or 'height' value to be higher than zero!");var r=this.options.content,o=function(t,e){for(var r=function(t){var e=encodeURI(t).toString().replace(/\%[0-9a-fA-F]{2}/g,"a");return e.length+(e.length!=t?3:0)}(t),o=1,n=0,i=0,a=QRCodeLimitLength.length;i<=a;i++){var s=QRCodeLimitLength[i];if(!s)throw new Error("Content too long: expected "+n+" but got "+r);switch(e){case"L":n=s[0];break;case"M":n=s[1];break;case"Q":n=s[2];break;case"H":n=s[3];break;default:throw new Error("Unknwon error correction level: "+e)}if(r<=n)break;o++}if(o>QRCodeLimitLength.length)throw new Error("Content too long");return o}(r,this.options.ecl),n=function(t){switch(t){case"L":return QRErrorCorrectLevel.L;case"M":return QRErrorCorrectLevel.M;case"Q":return QRErrorCorrectLevel.Q;case"H":return QRErrorCorrectLevel.H;default:throw new Error("Unknwon error correction level: "+t)}}(this.options.ecl);this.qrcode=new QRCodeModel(o,n),this.qrcode.addData(r),this.qrcode.make()}QRCode.prototype.svg=function(t){var e=this.options||{},r=this.qrcode.modules;void 0===t&&(t={container:e.container||"svg"});for(var o=void 0===e.pretty||!!e.pretty,n=o?" ":"",i=o?"\r\n":"",a=e.width,s=e.height,h=r.length,l=a/(h+2*e.padding),u=s/(h+2*e.padding),g=void 0!==e.join&&!!e.join,d=void 0!==e.swap&&!!e.swap,f=void 0===e.xmlDeclaration||!!e.xmlDeclaration,c=void 0!==e.predefined&&!!e.predefined,R=c?n+''+i:"",p=n+''+i,m="",Q="",v=0;v'+i:n+''+i}g&&(m=n+'');var T="";switch(t.container){case"svg":f&&(T+=''+i),T+=''+i,T+=R+p+m,T+="";break;case"svg-viewbox":f&&(T+=''+i),T+=''+i,T+=R+p+m,T+="";break;case"g":T+=''+i,T+=R+p+m,T+="";break;default:T+=(R+p+m).replace(/^\s+/,"")}return T},QRCode.prototype.save=function(t,e){var r=this.svg();"function"!=typeof e&&(e=function(t,e){});try{require("fs").writeFile(t,r,e)}catch(t){e(t)}},"undefined"!=typeof module&&(module.exports=QRCode); \ No newline at end of file diff --git a/static/vcard/qrcode.min.js:Zone.Identifier b/static/vcard/qrcode.min.js:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001 diff --git a/static/vcard/style.min.css b/static/vcard/style.min.css new file mode 100644 index 0000000..205ce96 --- /dev/null +++ b/static/vcard/style.min.css @@ -0,0 +1 @@ +body{margin:0 auto;width:100%;padding:0;max-width:30rem;color:#eee;position:relative}p{line-height:1.5;margin:0}h2,h3{margin:0}.icon{width:1.5rem;height:1.5rem}a{text-decoration:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#modal{display:flex;flex-direction:column;position:absolute;z-index:1;width:100%;bottom:0;transition:top .2s ease-out,opacity .1s ease-out;transform:translateZ(0)}#close{align-self:end;padding:1rem;cursor:pointer;line-height:0}#keyView,#copyView,#qrView{display:flex;flex-direction:column;align-items:center;margin:0 1rem;text-align:center}#keyView p,#copyView p,#qrView p{margin:2rem;text-align:center}#copyURL,#dlKey{display:flex;width:100%;align-items:center;justify-content:center;border-radius:5rem;padding:1rem 1.5rem;border:none;outline:none;cursor:pointer;box-sizing:border-box}#copyURL span,#dlKey span{margin-left:.5rem}#qrView h3{margin:2rem 2rem 0}#qrView p{margin:.5rem 2rem 0}#qr{margin:2rem;padding:2rem;background:#fff;border-radius:.5rem}header{display:flex;justify-content:flex-start;flex-direction:column}.headerImgC{display:grid;grid-template-columns:auto;grid-template-rows:auto;overflow:hidden}#cover{grid-column:1;grid-row:1;width:100%;height:20rem;-o-object-position:top center;object-position:top center;-o-object-fit:cover;object-fit:cover}#logo{max-height:6rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;grid-column:1;grid-row:1;align-self:center;justify-self:center}#topActions{flex-direction:row-reverse;justify-content:space-between;align-items:flex-start}#topActions>div{display:flex}#topActions a{padding:1rem;cursor:pointer;line-height:0}main{padding:1rem;display:flex;flex-direction:column;align-items:center;text-align:center}#profilePhoto{width:10rem;height:10rem;border-radius:100%;box-sizing:content-box;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-top:-6rem}#info{display:flex;flex-direction:column;justify-content:center;align-items:center;margin-top:1rem;line-height:1.25;word-break:break-word}.name{font-weight:bold;font-size:1.5rem;margin:0}.pronouns{display:block;font-size:.9rem;opacity:.8;font-weight:normal;margin:0 0 .5rem}.bizname{font-size:.9rem;margin:.5rem 0 0;opacity:.8}.bizaddr{font-size:.8rem;opacity:.6}.sub,.textC{font-size:1rem;white-space:pre-line;line-height:1.5}.sub{font-size:.9rem;margin:.5rem 0 0;opacity:.8}.textC{margin:1rem}#cta{display:flex;align-items:center;border-radius:5rem;margin-top:2rem;padding:1rem 1.5rem;cursor:pointer;line-height:0;width:100%;justify-content:center;box-sizing:border-box}#cta .icon{margin-right:.5rem}#cta p{margin:0}.actions{width:100%;margin-top:2rem;display:flex;flex-wrap:wrap;justify-content:center}.actionsC{width:33.33%}.actionBtn{padding:.5rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.actionBtn a{border-radius:100%;padding:1rem;line-height:0}.actionBtn p{margin:.5rem 0 0;font-size:.9rem}.secBtn{padding:1rem}.featured{display:flex;flex-direction:column;justify-content:center;margin:2rem 0 0;width:100%}.section{font-weight:bold;text-align:center;font-size:1.3rem;padding:1rem 0}.media{overflow:hidden;border-radius:1rem;margin-top:1rem}.media img{display:block;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.embedded{position:relative;padding-top:100%}.embedded iframe{position:absolute;top:0;left:0;width:100%;height:100%}.music,.video{width:100%}.mediaC{display:flex;flex-direction:column;justify-content:space-evenly;align-items:center}video{width:100%}.controls{padding:1rem;font-size:.9rem;text-align:center;width:100%;box-sizing:border-box}.pCtrl,.docDl{display:none;flex-direction:column;align-items:center;width:100%}.docDl{display:flex}.seekBar{width:100%;height:.5rem;margin:1.5rem 0 .5rem;border-radius:5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.playPause,.dlBtn{margin:1rem 0 .5rem;padding:1rem;border-radius:5rem;line-height:0;cursor:pointer}.pause{display:none}.title{font-size:1rem;font-weight:bold;margin:0}.prodInfo .sub{margin:-1rem 0 0}.price{margin:1rem 0 0;font-size:1rem;font-weight:bold}.label{display:inline-block;font-size:1rem;margin:1rem 0 .5rem;border-radius:5rem;letter-spacing:1px;padding:1rem 1.5rem}.label p{margin:0}footer{padding:4rem 1rem 2rem;font-size:.9rem;text-align:center}footer a{text-decoration:underline;color:inherit} \ No newline at end of file diff --git a/static/vcard/style.min.css:Zone.Identifier b/static/vcard/style.min.css:Zone.Identifier new file mode 100644 index 0000000000000000000000000000000000000000..01b9a75b0b85f7b3bf82712bf677b3f78bb01e1d GIT binary patch literal 111 zcmXZQF$+LI6aZke@*i%qS!~LJMVaIl&Tw^)uCDj=9x1;bF@E1P62ib1WdWX(_+{(L zJc)aFhJiJQvM!7kU@;XSQq~azUZ$ZF16lXC`Z^WW_|@+=sOk`pAfjr^F1!2|-MB9& A{Qv*} literal 0 HcmV?d00001