diff --git a/css/main.css b/css/main.css index 5d57237..cd6c96e 100644 --- a/css/main.css +++ b/css/main.css @@ -96,6 +96,10 @@ textarea:focus { box-shadow: 0 0 0 0.1rem var(--accent-color); } +strong { + font-weight: 500; +} + .flex { display: flex; } @@ -167,12 +171,15 @@ textarea:focus { .fab { filter: drop-shadow(0 0.4rem 0.3rem rgba(0, 0, 0, 0.2)); - margin-right: 1rem; + margin: 1.5rem; position: fixed; right: 0; bottom: 0; z-index: 1; } +.fab::part(button) { + padding: 0.9rem 1.6rem; +} .fab .icon { margin-left: 0 !important; margin-right: 0.5rem; @@ -588,6 +595,46 @@ sm-button[variant=primary] .icon { align-self: flex-start; } +#contact_details_popup > .flex:first-of-type { + margin: 1rem 0; +} +#contact_details_popup > .flex:first-of-type .flex .icon { + height: 2.6rem; + width: 2.6rem; + padding: 0.85rem; + cursor: pointer; + stroke-width: 8; +} +#contact_details_popup > .flex:first-of-type .flex .icon:hover { + background: rgba(var(--text-color), 0.06); +} +#contact_details_popup h5 { + font-weight: 500; + opacity: 0.8; +} +#contact_details_popup .copy-row { + margin-bottom: 1.5rem; +} +#contact_details_popup .copy-row h4 { + font-weight: 400; +} +#contact_details_popup #contact_initial { + height: 3.6rem; + width: 3.6rem; + font-size: 1.6rem; + border-radius: 4rem; + margin-bottom: 1rem; +} +#contact_details_popup #contact_name { + border-radius: 0.5rem; + max-width: 30ch; + padding: 0.6rem 1.2rem; +} +#contact_details_popup #contact_name:focus { + outline: none; + background: rgba(var(--text-color), 0.1); +} + #warn_no_encryption, .date-card { padding: 0.4rem 0.8rem; background: rgba(var(--text-color), 0.1); @@ -723,8 +770,7 @@ sm-button[variant=primary] .icon { bottom: 0; top: 0; padding: 0; - width: max(18rem, 80vw); - height: 100vh; + width: max(16rem, 60vw); background: rgba(var(--foreground-color), 1); } #main_navbar .logo-section { @@ -820,7 +866,8 @@ sm-button[variant=primary] .icon { height: 100%; width: 100%; z-index: 1; - background: linear-gradient(rgba(157, 166, 255, 0.063), rgba(157, 166, 255, 0.063)), rgba(var(--foreground-color), 1); + padding-bottom: 1.5rem; + background: rgba(var(--foreground-color), 1); transition: transform 0.3s; transform: translateX(-100%); } @@ -875,9 +922,15 @@ sm-button[variant=primary] .icon { #contacts .header h4, #mails .header h4, #settings_page .header h4 { text-transform: capitalize; } +#contacts .header .icon, #mails .header .icon, #settings_page .header .icon { + -webkit-tap-highlight-color: transparent; +} +#contacts .header .flex .hamburger-menu-button, #mails .header .flex .hamburger-menu-button, #settings_page .header .flex .hamburger-menu-button { + -webkit-tap-highlight-color: transparent; + margin-right: 1rem; +} #contacts .header .flex h4, #mails .header .flex h4, #settings_page .header .flex h4 { flex: 1; - margin: 0 1rem; } #contacts .header .flex .icon, #mails .header .flex .icon, #settings_page .header .flex .icon { height: 2.2rem; @@ -915,8 +968,10 @@ sm-button[variant=primary] .icon { padding: 0.1rem; stroke-width: 8; margin-right: 0.5rem; + stroke: rgba(var(--text-color), 0.8); } #chat header .initial { + cursor: pointer; margin-right: 1rem; } #chat header h4 { @@ -965,6 +1020,8 @@ sm-button[variant=primary] .icon { position: absolute; right: 1.5rem; transform: scale(0); + opacity: 0; + pointer-events: none; z-index: 1; align-self: center; height: 2.4rem; @@ -977,8 +1034,10 @@ sm-button[variant=primary] .icon { transition: 0.3s; } #chat #send_message_button.active { + opacity: 1; fill: var(--accent-color); transform: none; + pointer-events: all; } #chat #type_message { margin: 0; @@ -1188,7 +1247,7 @@ sm-button[variant=primary] .icon { } #dm_container { - padding-bottom: 3.5rem; + padding-bottom: 5rem; } sm-tab-panels { @@ -1202,7 +1261,7 @@ sm-panel { #inbox_mail_container, #sent_mail_container { - padding-bottom: 3.5rem; + padding-bottom: 5rem; } #chat, #mail { @@ -1326,15 +1385,16 @@ sm-panel { #main_navbar .logo-section { padding: 1rem; } - #main_navbar #navbar_backdrop { + + #navbar_backdrop { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background: rgba(0, 0, 0, 0.3); - z-index: -1; - transition: transform 0.3s; + z-index: 2; + transition: transform 0.3s, opacity 0.3s; } #dm_container, @@ -1393,6 +1453,7 @@ sm-panel { } sm-popup::part(popup) { + width: 24rem; min-width: 24rem; } @@ -1414,8 +1475,8 @@ sm-panel { #main_navbar { position: relative; width: auto; - background: rgba(var(--text-color), 0.05); padding-bottom: 0.5rem; + background: rgba(var(--text-color), 0.06); } #main_navbar .logo-section { display: flex; @@ -1465,10 +1526,6 @@ sm-panel { z-index: 1; } - #contacts, #mails, #settings_sidebar { - background-color: rgba(157, 166, 255, 0.063); - } - #settings_page { display: grid; height: 100vh; diff --git a/css/main.min.css b/css/main.min.css index 36ed087..f4a4461 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -#landing_page,.sign-in-box,body,body #scroll_to_bottom{background:rgba(var(--foreground-color),1)}p,textarea{line-height:1.6}.align-center,.popup-header{align-items:center}.contact .last-message,.copy-row .copy,.mail-card .sender,.text-overflow{text-overflow:ellipsis;white-space:nowrap}*,::after,::before{padding:0;margin:0;box-sizing:border-box;font-family:Roboto,sans-serif}:root{scroll-behavior:smooth;font-size:clamp(16px,1.2vmax,48px)}body,html{height:100%}body{--accent-color:#d60739;--secondary-color:#ffac2e;--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#efefef;--error-color:red;color:rgba(var(--text-color),1)}body #scroll_to_bottom{box-shadow:0 .3rem .4rem rgba(0,0,0,.2)}body[data-theme=dark]{--accent-color:rgb(214 7 57);--secondary-color:#d60739;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20}body[data-theme=dark] .initial{color:rgba(var(--text-color),1)!important;box-shadow:0 .1rem .1rem rgba(0,0,0,.16)}body[data-theme=dark] .message,h1,h2,h3,h4,h5,textarea{color:rgba(var(--text-color),1)}body[data-theme=dark] #scroll_to_bottom{background:linear-gradient(rgba(var(--text-color),.1),rgba(var(--text-color),.1)),rgba(var(--foreground-color),1);box-shadow:0 .4rem .4rem rgba(0,0,0,.3)}h1{font-size:3rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.1rem}h5{font-size:.8rem}h1,h2,h3,h4,h5{font-weight:600}textarea{background:rgba(var(--text-color),.06);border:none;border-radius:.3rem;width:100%;padding:1rem;font-size:1rem;resize:none}textarea:focus{outline:0;box-shadow:0 0 0 .1rem var(--accent-color)}.flex{display:flex}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}.justify-right{margin-left:auto}.direction-column{flex-direction:column}.rest{flex:1}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.breakable{overflow-wrap:break-word}.text-overflow{overflow:hidden}.sticky{position:sticky;top:1rem}.light-text{color:rgba(var(--text-color-light),1)}.accent-color{color:var(--accent-color)}.secondary-color{color:var(--secondary-color)}.fab{filter:drop-shadow(0 .4rem .3rem rgba(0, 0, 0, .2));margin-right:1rem;position:fixed;right:0;bottom:0;z-index:1}.fab .icon{margin-left:0!important;margin-right:.5rem;height:.9rem!important;stroke-width:8!important}a:any-link{word-wrap:break-word;color:var(--accent-color);font-weight:500}.solid-background{background:var(--background-color)!important}.normal-weight{font-weight:400}.icon{fill:none;stroke-width:6;stroke:rgba(var(--text-color),1);height:1.2rem;width:1.2rem;overflow:visible;stroke-linecap:round;stroke-linejoin:round}span.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.2);pointer-events:none}#landing_illustration,.contact,.initial,.interact,.logo-section{position:relative}.interact{overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}sm-popup sm-input+sm-input{margin-top:1rem}.popup-header{padding:.5rem 1.5rem 0;display:flex;width:100%}.popup-header .icon{padding:.7rem;height:2.4rem;width:2.4rem;stroke-width:8;transform:translateX(-.5rem);cursor:pointer;-webkit-tap-highlight-color:transparent}.popup-header .back{transform:none}.popup-header button,.popup-header sm-button{width:auto;margin-left:auto}.copy-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem;width:auto}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{overflow:hidden}.copy-row h4{margin-bottom:0!important}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:2rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}.card,sm-button{margin:1rem 0}.page{align-items:flex-start;width:100%;height:100%}.card{display:flex;flex-direction:column}sm-button .icon{margin-right:.4rem}sm-button[variant=primary]{--foreground-color:255,255,255}sm-button[variant=primary] .icon{align-self:center;height:1rem;width:1rem;margin-left:.8rem;stroke-width:6;stroke:#fff}.logo-section{align-items:center;height:max-content;margin:.5rem 0}.logo-section h5{font-size:1.1rem!important;font-weight:500}.logo-section .main-logo{height:1.4rem;margin-right:.4rem;fill:rgba(var(--text-color),.8);stroke:none}.select-file input[type=file]{display:none}#landing{display:grid;border-radius:.6rem;width:100%;padding:0 1.5rem;height:100%;align-items:center}#landing .left,#main_navbar,.mail-card{flex-direction:column}#landing .logo-section{padding:1.5rem;display:flex}#landing .title-font{line-height:1.2;font-weight:700;font-size:2.5rem}#landing .left h3,#landing .left h4,#landing .left p,.contact .last-message,.contact .name,.sign-in-box h3,.sign-in-box h4,.sign-in-box h5{font-weight:500}#landing .left{display:grid;padding-bottom:1.5rem;z-index:1}#landing .left h4{color:rgba(var(--foreground-color),1)}#landing .left sm-button{margin:1.5rem 0 2rem;width:max-content}#landing_illustration,#mail_container,.sign-in-box,.sign-in-box form,.sign-in-box sm-panel{width:100%}#landing .left h3{margin-bottom:1rem}.logo-section{padding:1.5rem}#sign_in_popup::part(popup-body){padding:0}.sign-in-box{margin:0 -2rem;z-index:1;justify-self:center;padding:1.5rem;border-radius:.5rem}.sign-in-box sm-input{text-align:left}.sign-in-box sm-tab-header{margin:0;background:0 0;align-self:flex-start}.sign-in-box sm-tab-header::part(tab-header){padding-bottom:.4rem;gap:1.5rem}.sign-in-box sm-tab::part(tab){padding:.4rem 0}.sign-in-box sm-tab-panels{margin-top:1.5rem}.sign-in-box h2{margin-bottom:.5rem}.sign-in-box h4{margin-bottom:1.5rem}.sign-in-box h5{opacity:.8}.sign-in-box .copy-row h4{max-width:34ch}.sign-in-box .copy-row:not(:last-of-type){margin-bottom:1rem}.sign-in-box button{width:auto;margin-top:1rem;padding:.6rem 1.6rem}.sign-in-box p{max-width:35ch;margin-top:.5rem;margin-bottom:1.5rem}.sign-in-box #credentials_section{border-top:1px rgba(var(--text-color),.2) solid;margin-top:1rem;padding-top:1.5rem;animation:slide-down .3s forwards}.sign-in-box #sign_in_with{margin-top:2rem}@keyframes slide-down{from{transform:translateY(-1rem)}to{transform:none}}#loading_page{height:100vh;display:grid;place-content:center;justify-items:center}#loading_page svg{z-index:1;transform-origin:bottom;height:6rem;width:6rem;animation:bounce .5s infinite alternate ease-in}#loading_page .shadow{margin-top:-1rem;width:5rem;height:2rem;background:rgba(var(--text-color),.1);border-radius:50%;animation:scale .5s infinite alternate ease-in;margin-left:1rem}#loading_page h4{margin-top:2rem}@keyframes bounce{0%{transform:scaleY(1) translateY(-4rem)}90%{transform:scaleY(1) translateY(0)}100%{transform:scaleY(.8)}}@keyframes scale{0%{transform:scale(.5)}90%{transform:scale(1.05)}100%{transform:scale(1)}}.initial{justify-content:center;font-size:1.2rem;width:2.5rem;height:2.5rem;color:#fff;box-shadow:0 .1rem .1rem rgba(0,0,0,.06);border-radius:2rem;text-transform:uppercase}#contacts .header h4,#mails .header h4,#settings_page #settings_title,#settings_page .header h4,.sidebar-item{text-transform:capitalize}.contact{display:grid;gap:0 1rem;padding:.8rem 1.5rem;align-items:center;min-height:max-content}.contact.chat{grid-template-columns:auto 1fr auto;grid-template-areas:"dp . menu" "dp . ."}.contact:not(.chat){grid-template-columns:auto 1fr;grid-template-areas:"dp ."}.contact:focus{background:rgba(var(--text-color),.06);outline:0}.contact .initial{grid-area:dp}.contact .name{font-size:1rem;color:rgba(var(--text-color),.8)}.contact .last-message{grid-column:2/4;overflow:hidden;color:rgba(var(--text-color),.9)}.contact .time{font-weight:400;opacity:.8;grid-area:menu;align-self:flex-start}#warn_no_encryption,.date-card{padding:.4rem .8rem;background:rgba(var(--text-color),.1);font-weight:500;border-radius:.5rem;color:rgba(var(--text-color),.8);margin:1rem 0;justify-self:center;align-self:flex-start}.date-card{align-self:center}.contact.unread .initial::before,.mail-card.unread::before{content:"";position:absolute;padding:.4rem;border-radius:1rem;top:0;left:0;background:var(--accent-color)}.mail,.mail-card{position:relative}.contact.unread h4,.contact.unread h5,.contact.unread p,.mail-card.unread h4,.mail-card.unread h5,.mail-card.unread p{font-weight:700}.mail-card{display:flex;padding:1rem 1.5rem}.mail-card .sender{color:rgba(var(--text-color),.9);font-weight:500;overflow:hidden;margin-right:1rem}.mail-card .date{margin-left:auto;font-weight:500;white-space:nowrap}.mail-card .subject{font-size:1em;margin-top:.5rem;font-weight:500}.mail-card .description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.9em;margin-top:.2rem;color:rgba(var(--text-color),.8)}#chat .message .message-body,.mail .mail-content,.mail .mail-subject{overflow-wrap:break-word;word-wrap:break-word}@keyframes slide{from{opacity:0;transform:translateX(-1rem)}to{opacity:1;transform:none}}.mail:not(:first-of-type){margin-top:2rem;padding-inline-start:1rem}.mail:not(:first-of-type)::before{content:"";position:absolute;left:0;top:0;width:.2rem;height:100%;background:rgba(var(--text-color),.2)}.mail header{align-self:start;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:solid 1px rgba(var(--text-color),.2)}.mail header h4{font-weight:500}.mail header .flo-id{font-weight:400;max-width:90%}.mail .mail-subject{margin-bottom:.4em}.mail .mail-content{height:max-content;max-width:60ch;white-space:pre-wrap}.logo-section{display:grid;grid-template-columns:auto 1fr}#main_navbar{position:fixed;bottom:0;top:0;padding:0;width:max(18rem,80vw);height:100vh;background:rgba(var(--foreground-color),1)}#chat .sent .message-body,#main_navbar .active{background:var(--accent-color)}#main_navbar .logo-section{margin:1rem 0 1.5rem;padding:0 1rem}#main_navbar .active .icon{stroke:#fff}#main_navbar .active .label{color:#fff}#main_navbar .label{font-weight:500;font-size:.9rem}#main_navbar .navbar-item{height:auto;justify-content:flex-start;flex-direction:row;flex:none;padding:1rem 1.2rem}#main_navbar .navbar-item .icon{margin-right:.8rem;height:1.2rem;width:1.2rem}#main_navbar .navbar-item:last-of-type{margin-top:auto}#main_navbar .navbar-item.badge::after{right:0;top:0;position:absolute;content:attr(data-notifications);display:flex;justify-content:center;align-items:center;padding:.4rem;line-height:0;height:calc(1em + .4rem);background:#00C853;color:rgba(var(--foreground-color),1);border-radius:2rem;transition:transform .3s}#main_navbar .navbar-item.badge.active::after,#main_navbar .navbar-item.badge[data-notifications=""]::after,#main_navbar .navbar-item.badge[data-notifications="0"]::after{transform:scale(0)}#auto_complete_contact{position:relative;justify-content:flex-start;padding-bottom:0}#mail_contact_list{max-height:40vh;overflow-y:auto;position:absolute;top:100%;background:rgba(var(--foreground-color),1);z-index:1;border-radius:.4rem;box-shadow:0 .1rem .1rem rgba(0,0,0,.1),0 .2rem .5rem rgba(0,0,0,.16);width:100%}#mail_contact_list .contact{grid-template-columns:auto 1fr;grid-template-areas:"dp ." "dp ."}#mail_contact_list sm-menu{display:none}#contacts{position:relative}#contacts #all_contacts{position:absolute;top:0;bottom:0;left:0;right:0;height:100%;width:100%;z-index:1;background:linear-gradient(rgba(157,166,255,.063),rgba(157,166,255,.063)),rgba(var(--foreground-color),1);transition:transform .3s;transform:translateX(-100%)}#contacts #all_contacts .header{padding-bottom:1rem}#selected_contacts{padding:1.5rem;background:rgba(var(--text-color),.06)}#selected_contacts h4{font-weight:500;font-size:1rem}#selected_contacts sm-button{margin-bottom:0}#contacts,#mails{position:relative;grid-template-rows:max-content 1fr}#contacts,#mails,#settings_page{height:100vh;overflow-y:hidden}#contacts .header,#mails .header,#settings_page .header{background:rgba(var(--text-color),.06);padding:1rem 1.5rem 0;border-bottom:solid 1px rgba(var(--text-color),.2);position:relative;gap:.5rem}#contacts .header sm-tab::part(tab),#mails .header sm-tab::part(tab),#settings_page .header sm-tab::part(tab){padding:.8rem 1rem}#contacts .header sm-input,#mails .header sm-input,#settings_page .header sm-input{margin:0;width:100%}#contacts .header sm-input .icon,#mails .header sm-input .icon,#settings_page .header sm-input .icon{stroke:rgba(var(--text-color),.5);height:.9rem;width:.9rem}#contacts .header sm-input::part(input),#mails .header sm-input::part(input),#settings_page .header sm-input::part(input){border-radius:3rem;padding:.5rem 1rem}#contacts .header .flex h4,#mails .header .flex h4,#settings_page .header .flex h4{flex:1;margin:0 1rem}#contacts .header .flex .icon,#mails .header .flex .icon,#settings_page .header .flex .icon{height:2.2rem;width:2.2rem;padding:.6rem;margin-left:-.4rem;cursor:pointer}#contacts .header .flex sm-menu,#mails .header .flex sm-menu,#settings_page .header .flex sm-menu{margin-right:-.7rem}#contacts .header sm-button,#mails .header sm-button,#settings_page .header sm-button{margin:0 0 0 auto}#contacts .header sm-button .icon,#mails .header sm-button .icon,#settings_page .header sm-button .icon{height:.9rem;width:.9rem;align-self:center;stroke-width:8;margin-left:0;margin-right:.5rem}#chat_page{overflow-y:hidden}#chat{height:100vh}#chat header{padding:.5rem 1rem}#chat header .back-button{padding:.1rem;stroke-width:8;margin-right:.5rem}#chat header .initial{margin-right:1rem}#chat header h4{font-weight:500;font-size:.9rem}#chat #scroll_to_bottom{position:fixed;right:0;bottom:4rem;width:2.6rem;height:2.6rem;padding:.9rem;border-radius:4rem;z-index:1;margin:1.5rem;stroke-width:8;cursor:pointer;transform:scale(0);transition:transform .3s}#chat footer #toggle_emoji{align-self:center;padding:.6rem;width:2.6rem;height:2.6rem;border-radius:2rem;cursor:pointer}#chat footer #toggle_emoji path{fill:rgba(var(--text-color),.5)}#chat footer #toggle_emoji.active path{fill:var(--accent-color)}#chat footer .flex{align-items:flex-end;padding:1rem 1rem 1rem .4rem}#chat footer sm-textarea::part(textarea){background:rgba(var(--text-color),.1);padding-right:3rem;border-radius:2rem}#chat #send_message_button{position:absolute;right:1.5rem;transform:scale(0);z-index:1;align-self:center;height:2.4rem;width:2.4rem;padding:.5rem;cursor:pointer;stroke:none;fill:rgba(var(--text-color),.4);margin-left:1rem;transition:.3s}#chat #send_message_button.active{fill:var(--accent-color);transform:none}#chat #type_message{margin:0}#chat .message{position:relative;display:grid;grid-auto-flow:column;align-items:center;gap:.5rem;width:100%;font-size:.9rem;max-width:max-content;margin-bottom:.2rem;margin-top:.8rem}#chat .message .message-body{display:inline-flex;align-items:center;flex-wrap:wrap;word-break:break-all;word-break:break-word;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;white-space:pre-wrap;box-shadow:0 1px .1rem rgba(0,0,0,.16);padding:.6em 1em;line-height:1.5}#chat .message .message-body a{color:inherit}#chat .message .message-body .text-emoji{align-self:center;font-size:1.4em;letter-spacing:0ch}#chat .message .time{white-space:nowrap;font-size:.8em;opacity:.8}#chat .sent{margin-left:auto}#chat .sent::after{content:"";position:absolute;left:100%;top:0;width:0;height:0;border-style:solid;border-width:.5em .3em 0 0;border-color:var(--accent-color) transparent transparent}#chat .sent .message-body{color:#f0f0f0;border-radius:1.5em 0 1.5em 1.5em}#chat .sent .time{grid-column:1}#chat .received::after{content:"";position:absolute;left:-.5em;top:0;width:0;height:0;border-style:solid;border-width:0 .5em .5em 0;border-color:transparent rgba(var(--text-color),.1) transparent transparent}#chat .received .message-body{background:rgba(var(--text-color),.1);border-radius:0 1.5em 1.5em}#chat .received+.received,#chat .sent+.sent{margin-top:0}#chat .received+.received::after,#chat .sent+.sent::after{display:none}#chat .received+.received .message-body,#chat .sent+.sent .message-body{border-radius:1.5em}#chat .unconfirmed{opacity:.7;transform-origin:right;animation:slide-up .3s forwards}@keyframes slide-up{from{transform:translateY(-2rem)}to{transform:none}}.big-emoji::after{display:none}.big-emoji .message-body{background:0 0!important;box-shadow:none!important;padding:0!important;font-size:2.6rem}#chat_container{flex:1;padding:0 1rem}#emoji_picker{display:grid;gap:1rem;background:rgba(var(--text-color),.06);border-radius:1rem;margin:0 1rem;box-shadow:0 .2rem .8rem rgba(0,0,0,.3);overflow-y:auto;max-height:30vh}#emoji_picker section{display:flex;flex-wrap:wrap;padding:1rem}#emoji_picker .section-header{position:sticky;top:0;background:linear-gradient(rgba(var(--text-color),.06),rgba(var(--text-color),.06)),rgba(var(--foreground-color),1);padding:1rem 0;width:100%;z-index:1}.emoji{font-size:1.6rem;cursor:pointer;padding:.4rem;border-radius:.6rem;user-select:none;text-align:center;min-width:3rem}#new_conversation,#no_mails{height:100%;justify-content:center;text-align:center;padding:1.5rem}#new_conversation p,#no_mails p{margin-top:.8rem}#no_mails .new-conversation{height:7rem;margin-bottom:1rem}.new-conversation{height:8rem;width:8rem;align-self:center;stroke-width:16;stroke:rgba(var(--text-color),.4)}#chat_container,#contacts_container,#dm_container,#inbox_mail_container,#mail,#sent_mail_container{width:100%;flex-direction:column;height:100%;overflow-y:auto}#contacts_container,#dm_container,#inbox_mail_container,#sent_mail_container{height:auto;min-height:100%}#dm_container:empty{display:none}#dm_container:not(:empty)~.empty-state{display:none}#dm_container,#inbox_mail_container,#sent_mail_container{padding-bottom:3.5rem}sm-tab-panels{overflow:hidden auto}sm-panel{width:100%;overflow-y:auto}#chat,#mail{background:rgba(var(--foreground-color),1)}#mail{height:100vh;padding:0 1.5rem;align-items:flex-start}#mail .flex{margin-top:1rem}#mail .flex sm-button:first-of-type{margin-right:.5rem}#compose_mail_popup sm-input{margin-bottom:1rem}.sidebar-item{display:flex;align-items:center;padding:1rem 1.5rem;font-weight:500;opacity:.9}.sidebar-item .icon{margin-right:1em;width:1em}.back{padding:.7rem;height:2.4rem;width:2.4rem;margin-left:-.5rem;cursor:pointer;stroke-width:8;opacity:.8;-webkit-tap-highlight-color:transparent}.back:hover{opacity:1}#settings_page #settings_sidebar header{padding:1rem 1.5rem}#settings_page .flex sm-button{margin:0;margin-left:1rem}#settings_page sm-switch{padding-left:1rem}#settings_page sm-button{width:100%}#settings_page #settings_sidebar{height:100%}#settings_page #settings_panel{padding:0 1.5rem}#settings_page section{max-width:50ch;display:grid;gap:.3rem}#settings_page section:not(:last-of-type){margin-bottom:1.5rem}#settings_page section.setting-toggle{grid-template-columns:1fr auto}#settings_page section.setting-toggle sm-switch{grid-column:2;grid-row:1/3}#settings_page section.setting-toggle>h4,#settings_page section.setting-toggle>p{grid-column:1}#settings_page #sign_out::part(button){color:var(--error-color)}@media screen and (max-width:640px){#chat header,#main_navbar .logo-section{padding:1rem}.hide-on-mobile{position:fixed;max-height:0;opacity:0;pointer-events:none}#landing{grid-template-areas:"illustration" ".";height:100%}#sing_in{max-height:90vh}#landing_illustration{grid-area:illustration}#main_navbar{transform:translateX(-100%);transition:transform .3s;z-index:4;box-shadow:0 0 1rem rgba(0,0,0,.3)}#main_navbar #navbar_backdrop{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.3);z-index:-1;transition:transform .3s}#contact_container,#dm_container{gap:.5rem}#chat header .initial{width:2rem;height:2rem}#chat .message{width:fit-content;max-width:90%}#settings_page #settings_panel header{position:sticky;top:0;padding:1rem 0;margin-bottom:.5rem;background:rgba(var(--foreground-color),1)}}@media only screen and (min-width:640px){#add_contact_popup::part(popup),sm-popup::part(popup){min-width:24rem}::-webkit-scrollbar{width:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.hide-on-desktop{display:none!important}.page{padding-bottom:0}.fab{position:absolute}.logo-section{padding:2rem 3rem 0;margin:.5rem 0}#landing{height:calc(100vh - 8rem);align-items:center;gap:4vw;grid-template-columns:1fr 1fr;padding:0 4vw}#landing .left h4{color:var(--accent-color)}#sign_in_popup .popup-header{padding-top:1.5rem}#main_navbar{position:relative;width:auto;background:rgba(var(--text-color),.05);padding-bottom:.5rem}#main_navbar .logo-section{display:flex;justify-content:center;margin:1.5rem 0}#main_navbar .logo-section .main-logo{margin:0}#main_navbar .navbar-item{margin:0 .5rem;border-radius:.5rem}#main_navbar .navbar-item .icon{margin-right:0}#main_navbar .label{display:none}#compose_mail_popup::part(popup),#reply_mail_popup::part(popup){min-width:36rem}#main{width:100vw;height:100vh;grid-template-columns:auto 1fr}#emoji_picker{max-height:18rem}#chat .message .message-body{max-width:65ch}#chat_page,#mail_page{grid-template-columns:20rem 1fr;box-shadow:0 0 1rem rgba(0,0,0,.1);z-index:1}#contacts,#mails,#settings_sidebar{background-color:rgba(157,166,255,.063)}#settings_page{display:grid;height:100vh;box-shadow:0 0 1rem rgba(0,0,0,.1);grid-template-columns:14rem 1fr}#settings_page sm-button{width:max-content}#settings_page #settings_panel{padding:1.5rem}#settings_page .active{background:rgba(var(--text-color),.1)}.contact.active,.mail-card.active{background:rgba(var(--text-color),.06)}.card{display:inline-flex;width:auto}#settings_panel{overflow-y:auto;max-height:100vh}}@media only screen and (min-width:1280px){#landing{gap:4vw;padding:0 8vw}#landing .title-font{font-size:3rem}#chat_page,#mail_page{grid-template-columns:21rem 1fr}#chat header{padding:.5rem 1.5rem}#chat #chat_container{padding:1rem 5rem}}@media (hover:hover){.contact:hover,.mail-card:hover,.navbar-item:hover{background:rgba(var(--text-color),.06);cursor:pointer}.contact sm-menu{opacity:0;transition:opacity .3s}.contact:hover sm-menu,sm-menu:focus-within{opacity:1}.emoji:hover{background:rgba(var(--text-color),.1)}} \ No newline at end of file +#landing_page,.sign-in-box,body,body #scroll_to_bottom{background:rgba(var(--foreground-color),1)}p,textarea{line-height:1.6}.align-center,.popup-header{align-items:center}.contact .last-message,.copy-row .copy,.mail-card .sender,.text-overflow{text-overflow:ellipsis;white-space:nowrap}*,::after,::before{padding:0;margin:0;box-sizing:border-box;font-family:Roboto,sans-serif}:root{scroll-behavior:smooth;font-size:clamp(16px,1.2vmax,48px)}body,html{height:100%}body{--accent-color:#d60739;--secondary-color:#ffac2e;--text-color:17,17,17;--text-color-light:100,100,100;--foreground-color:255,255,255;--background-color:#efefef;--error-color:red;color:rgba(var(--text-color),1)}body #scroll_to_bottom{box-shadow:0 .3rem .4rem rgba(0,0,0,.2)}body[data-theme=dark]{--accent-color:rgb(214 7 57);--secondary-color:#d60739;--text-color:240,240,240;--text-color-light:170,170,170;--foreground-color:20,20,20}body[data-theme=dark] .initial{color:rgba(var(--text-color),1)!important;box-shadow:0 .1rem .1rem rgba(0,0,0,.16)}body[data-theme=dark] .message,h1,h2,h3,h4,h5,textarea{color:rgba(var(--text-color),1)}body[data-theme=dark] #scroll_to_bottom{background:linear-gradient(rgba(var(--text-color),.1),rgba(var(--text-color),.1)),rgba(var(--foreground-color),1);box-shadow:0 .4rem .4rem rgba(0,0,0,.3)}h1{font-size:3rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.1rem}h5{font-size:.8rem}h1,h2,h3,h4,h5{font-weight:600}textarea{background:rgba(var(--text-color),.06);border:none;border-radius:.3rem;width:100%;padding:1rem;font-size:1rem;resize:none}textarea:focus{outline:0;box-shadow:0 0 0 .1rem var(--accent-color)}strong{font-weight:500}.flex{display:flex}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}.justify-right{margin-left:auto}.direction-column{flex-direction:column}#contacts .header .flex h4,#mails .header .flex h4,#settings_page .header .flex h4,.rest{flex:1}.hide{opacity:0;pointer-events:none}.hide-completely{display:none!important}.no-transformations{transform:none!important}.breakable{overflow-wrap:break-word}.text-overflow{overflow:hidden}.sticky{position:sticky;top:1rem}.light-text{color:rgba(var(--text-color-light),1)}.accent-color{color:var(--accent-color)}.secondary-color{color:var(--secondary-color)}.fab{filter:drop-shadow(0 .4rem .3rem rgba(0, 0, 0, .2));margin:1.5rem;position:fixed;right:0;bottom:0;z-index:1}.fab::part(button){padding:.9rem 1.6rem}.fab .icon{margin-left:0!important;margin-right:.5rem;height:.9rem!important;stroke-width:8!important}a:any-link{word-wrap:break-word;color:var(--accent-color);font-weight:500}.solid-background{background:var(--background-color)!important}.normal-weight{font-weight:400}.icon{fill:none;stroke-width:6;stroke:rgba(var(--text-color),1);height:1.2rem;width:1.2rem;overflow:visible;stroke-linecap:round;stroke-linejoin:round}span.ripple{position:absolute;border-radius:50%;transform:scale(0);background:rgba(var(--text-color),.2);pointer-events:none}#landing_illustration,.contact,.initial,.interact,.logo-section{position:relative}.interact{overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent}sm-popup sm-input+sm-input{margin-top:1rem}.popup-header{padding:.5rem 1.5rem 0;display:flex;width:100%}.popup-header .icon{padding:.7rem;height:2.4rem;width:2.4rem;stroke-width:8;transform:translateX(-.5rem);cursor:pointer;-webkit-tap-highlight-color:transparent}.popup-header .back{transform:none}.popup-header button,.popup-header sm-button{width:auto;margin-left:auto}.copy-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:.5rem;width:auto}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{overflow:hidden}.copy-row h4{margin-bottom:0!important}#confirmation_popup,#prompt_popup{flex-direction:column}#confirmation_popup h4,#prompt_popup h4{font-weight:500;margin-bottom:.5rem}#confirmation_popup sm-button,#prompt_popup sm-button{margin:0}#confirmation_popup .flex,#prompt_popup .flex{padding:0;margin-top:2rem}#confirmation_popup .flex sm-button:first-of-type,#prompt_popup .flex sm-button:first-of-type{margin-right:.6rem;margin-left:auto}.card,sm-button{margin:1rem 0}.page{align-items:flex-start;width:100%;height:100%}.card{display:flex;flex-direction:column}sm-button .icon{margin-right:.4rem}sm-button[variant=primary]{--foreground-color:255,255,255}sm-button[variant=primary] .icon{align-self:center;height:1rem;width:1rem;margin-left:.8rem;stroke-width:6;stroke:#fff}.logo-section{align-items:center;height:max-content;margin:.5rem 0}.logo-section h5{font-size:1.1rem!important;font-weight:500}.logo-section .main-logo{height:1.4rem;margin-right:.4rem;fill:rgba(var(--text-color),.8);stroke:none}.select-file input[type=file]{display:none}#landing{display:grid;border-radius:.6rem;width:100%;padding:0 1.5rem;height:100%;align-items:center}#landing .logo-section{padding:1.5rem;display:flex}#landing .title-font{line-height:1.2;font-weight:700;font-size:2.5rem}#landing .left h3,#landing .left h4,#landing .left p,.contact .last-message,.contact .name,.sign-in-box h3,.sign-in-box h4,.sign-in-box h5{font-weight:500}#landing .left{display:grid;flex-direction:column;padding-bottom:1.5rem;z-index:1}#landing .left h4{color:rgba(var(--foreground-color),1)}#landing .left sm-button{margin:1.5rem 0 2rem;width:max-content}#landing .left h3{margin-bottom:1rem}.logo-section{padding:1.5rem}#landing_illustration{width:100%}#sign_in_popup::part(popup-body){padding:0}.sign-in-box{width:100%;margin:0 -2rem;z-index:1;justify-self:center;padding:1.5rem;border-radius:.5rem}.sign-in-box sm-input{text-align:left}.sign-in-box sm-panel{width:100%}.sign-in-box sm-tab-header{margin:0;background:0 0;align-self:flex-start}.sign-in-box sm-tab-header::part(tab-header){padding-bottom:.4rem;gap:1.5rem}.sign-in-box sm-tab::part(tab){padding:.4rem 0}.sign-in-box sm-tab-panels{margin-top:1.5rem}.sign-in-box form{width:100%}.sign-in-box h2{margin-bottom:.5rem}.sign-in-box h4{margin-bottom:1.5rem}.sign-in-box h5{opacity:.8}.sign-in-box .copy-row h4{max-width:34ch}.sign-in-box .copy-row:not(:last-of-type){margin-bottom:1rem}.sign-in-box button{width:auto;margin-top:1rem;padding:.6rem 1.6rem}.sign-in-box p{max-width:35ch;margin-top:.5rem;margin-bottom:1.5rem}.sign-in-box #credentials_section{border-top:1px rgba(var(--text-color),.2) solid;margin-top:1rem;padding-top:1.5rem;animation:slide-down .3s forwards}.sign-in-box #sign_in_with{margin-top:2rem}@keyframes slide-down{from{transform:translateY(-1rem)}to{transform:none}}#loading_page{height:100vh;display:grid;place-content:center;justify-items:center}#loading_page svg{z-index:1;transform-origin:bottom;height:6rem;width:6rem;animation:bounce .5s infinite alternate ease-in}#loading_page .shadow{margin-top:-1rem;width:5rem;height:2rem;background:rgba(var(--text-color),.1);border-radius:50%;animation:scale .5s infinite alternate ease-in;margin-left:1rem}#loading_page h4{margin-top:2rem}@keyframes bounce{0%{transform:scaleY(1) translateY(-4rem)}90%{transform:scaleY(1) translateY(0)}100%{transform:scaleY(.8)}}@keyframes scale{0%{transform:scale(.5)}90%{transform:scale(1.05)}100%{transform:scale(1)}}.initial{justify-content:center;font-size:1.2rem;width:2.5rem;height:2.5rem;color:#fff;box-shadow:0 .1rem .1rem rgba(0,0,0,.06);border-radius:2rem;text-transform:uppercase}#contacts .header h4,#mails .header h4,#settings_page #settings_title,#settings_page .header h4,.sidebar-item{text-transform:capitalize}.contact{display:grid;gap:0 1rem;padding:.8rem 1.5rem;align-items:center;min-height:max-content}.contact.chat{grid-template-columns:auto 1fr auto;grid-template-areas:"dp . menu" "dp . ."}.contact:not(.chat){grid-template-columns:auto 1fr;grid-template-areas:"dp ."}.contact:focus{background:rgba(var(--text-color),.06);outline:0}.contact .initial{grid-area:dp}.contact .name{font-size:1rem;color:rgba(var(--text-color),.8)}.contact .last-message{grid-column:2/4;overflow:hidden;color:rgba(var(--text-color),.9)}.contact .time{font-weight:400;opacity:.8;grid-area:menu;align-self:flex-start}#contact_details_popup>.flex:first-of-type{margin:1rem 0}#contact_details_popup>.flex:first-of-type .flex .icon{height:2.6rem;width:2.6rem;padding:.85rem;cursor:pointer;stroke-width:8}#contact_details_popup>.flex:first-of-type .flex .icon:hover{background:rgba(var(--text-color),.06)}#contact_details_popup h5{font-weight:500;opacity:.8}#contact_details_popup .copy-row{margin-bottom:1.5rem}#contact_details_popup .copy-row h4{font-weight:400}#contact_details_popup #contact_initial{height:3.6rem;width:3.6rem;font-size:1.6rem;border-radius:4rem;margin-bottom:1rem}#contact_details_popup #contact_name{border-radius:.5rem;max-width:30ch;padding:.6rem 1.2rem}#contact_details_popup #contact_name:focus{outline:0;background:rgba(var(--text-color),.1)}#warn_no_encryption,.date-card{padding:.4rem .8rem;background:rgba(var(--text-color),.1);font-weight:500;border-radius:.5rem;color:rgba(var(--text-color),.8);margin:1rem 0;justify-self:center;align-self:flex-start}.date-card{align-self:center}.contact.unread .initial::before,.mail-card.unread::before{content:"";position:absolute;padding:.4rem;border-radius:1rem;top:0;left:0;background:var(--accent-color)}.mail,.mail-card{position:relative}.contact.unread h4,.contact.unread h5,.contact.unread p,.mail-card.unread h4,.mail-card.unread h5,.mail-card.unread p{font-weight:700}.mail-card{display:flex;flex-direction:column;padding:1rem 1.5rem}.mail-card .sender{color:rgba(var(--text-color),.9);font-weight:500;overflow:hidden;margin-right:1rem}.mail-card .date{margin-left:auto;font-weight:500;white-space:nowrap}.mail-card .subject{font-size:1em;margin-top:.5rem;font-weight:500}.mail-card .description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.9em;margin-top:.2rem;color:rgba(var(--text-color),.8)}#chat .message .message-body,.mail .mail-content,.mail .mail-subject{overflow-wrap:break-word;word-wrap:break-word}@keyframes slide{from{opacity:0;transform:translateX(-1rem)}to{opacity:1;transform:none}}#mail_container{width:100%}.mail:not(:first-of-type){margin-top:2rem;padding-inline-start:1rem}.mail:not(:first-of-type)::before{content:"";position:absolute;left:0;top:0;width:.2rem;height:100%;background:rgba(var(--text-color),.2)}.mail header{align-self:start;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:solid 1px rgba(var(--text-color),.2)}.mail header h4{font-weight:500}.mail header .flo-id{font-weight:400;max-width:90%}.mail .mail-subject{margin-bottom:.4em}.mail .mail-content{height:max-content;max-width:60ch;white-space:pre-wrap}.logo-section{display:grid;grid-template-columns:auto 1fr}#main_navbar{position:fixed;flex-direction:column;bottom:0;top:0;padding:0;width:max(16rem,60vw);background:rgba(var(--foreground-color),1)}#chat .sent .message-body,#main_navbar .active{background:var(--accent-color)}#main_navbar .logo-section{margin:1rem 0 1.5rem;padding:0 1rem}#main_navbar .active .icon{stroke:#fff}#main_navbar .active .label{color:#fff}#main_navbar .label{font-weight:500;font-size:.9rem}#main_navbar .navbar-item{height:auto;justify-content:flex-start;flex-direction:row;flex:none;padding:1rem 1.2rem}#main_navbar .navbar-item .icon{margin-right:.8rem;height:1.2rem;width:1.2rem}#main_navbar .navbar-item:last-of-type{margin-top:auto}#main_navbar .navbar-item.badge::after{right:0;top:0;position:absolute;content:attr(data-notifications);display:flex;justify-content:center;align-items:center;padding:.4rem;line-height:0;height:calc(1em + .4rem);background:#00C853;color:rgba(var(--foreground-color),1);border-radius:2rem;transition:transform .3s}#contacts #all_contacts,#mail_contact_list{position:absolute;background:rgba(var(--foreground-color),1);width:100%;z-index:1}#main_navbar .navbar-item.badge.active::after,#main_navbar .navbar-item.badge[data-notifications=""]::after,#main_navbar .navbar-item.badge[data-notifications="0"]::after{transform:scale(0)}#auto_complete_contact{position:relative;justify-content:flex-start;padding-bottom:0}#mail_contact_list{max-height:40vh;overflow-y:auto;top:100%;border-radius:.4rem;box-shadow:0 .1rem .1rem rgba(0,0,0,.1),0 .2rem .5rem rgba(0,0,0,.16)}#mail_contact_list .contact{grid-template-columns:auto 1fr;grid-template-areas:"dp ." "dp ."}#mail_contact_list sm-menu{display:none}#contacts{position:relative}#contacts #all_contacts{top:0;bottom:0;left:0;right:0;height:100%;padding-bottom:1.5rem;transition:transform .3s;transform:translateX(-100%)}#contacts #all_contacts .header{padding-bottom:1rem}#selected_contacts{padding:1.5rem;background:rgba(var(--text-color),.06)}#selected_contacts h4{font-weight:500;font-size:1rem}#selected_contacts sm-button{margin-bottom:0}#contacts,#mails{position:relative;grid-template-rows:max-content 1fr}#contacts,#mails,#settings_page{height:100vh;overflow-y:hidden}#contacts .header,#mails .header,#settings_page .header{background:rgba(var(--text-color),.06);padding:1rem 1.5rem 0;border-bottom:solid 1px rgba(var(--text-color),.2);position:relative;gap:.5rem}#contacts .header sm-tab::part(tab),#mails .header sm-tab::part(tab),#settings_page .header sm-tab::part(tab){padding:.8rem 1rem}#contacts .header sm-input,#mails .header sm-input,#settings_page .header sm-input{margin:0;width:100%}#contacts .header sm-input .icon,#mails .header sm-input .icon,#settings_page .header sm-input .icon{stroke:rgba(var(--text-color),.5);height:.9rem;width:.9rem}#contacts .header sm-input::part(input),#mails .header sm-input::part(input),#settings_page .header sm-input::part(input){border-radius:3rem;padding:.5rem 1rem}#contacts .header .icon,#mails .header .icon,#settings_page .header .icon{-webkit-tap-highlight-color:transparent}#contacts .header .flex .hamburger-menu-button,#mails .header .flex .hamburger-menu-button,#settings_page .header .flex .hamburger-menu-button{-webkit-tap-highlight-color:transparent;margin-right:1rem}#contacts .header .flex .icon,#mails .header .flex .icon,#settings_page .header .flex .icon{height:2.2rem;width:2.2rem;padding:.6rem;margin-left:-.4rem;cursor:pointer}#contacts .header .flex sm-menu,#mails .header .flex sm-menu,#settings_page .header .flex sm-menu{margin-right:-.7rem}#contacts .header sm-button,#mails .header sm-button,#settings_page .header sm-button{margin:0 0 0 auto}#contacts .header sm-button .icon,#mails .header sm-button .icon,#settings_page .header sm-button .icon{height:.9rem;width:.9rem;align-self:center;stroke-width:8;margin-left:0;margin-right:.5rem}#chat_page{overflow-y:hidden}#chat{height:100vh}#chat header{padding:.5rem 1rem}#chat header .back-button{padding:.1rem;stroke-width:8;margin-right:.5rem;stroke:rgba(var(--text-color),.8)}#chat header .initial{cursor:pointer;margin-right:1rem}#chat header h4{font-weight:500;font-size:.9rem}#chat #scroll_to_bottom{position:fixed;right:0;bottom:4rem;width:2.6rem;height:2.6rem;padding:.9rem;border-radius:4rem;z-index:1;margin:1.5rem;stroke-width:8;cursor:pointer;transform:scale(0);transition:transform .3s}#chat footer #toggle_emoji{align-self:center;padding:.6rem;width:2.6rem;height:2.6rem;border-radius:2rem;cursor:pointer}#chat footer #toggle_emoji path{fill:rgba(var(--text-color),.5)}#chat footer #toggle_emoji.active path{fill:var(--accent-color)}#chat footer .flex{align-items:flex-end;padding:1rem 1rem 1rem .4rem}#chat footer sm-textarea::part(textarea){background:rgba(var(--text-color),.1);padding-right:3rem;border-radius:2rem}#chat #send_message_button{position:absolute;right:1.5rem;transform:scale(0);opacity:0;pointer-events:none;z-index:1;align-self:center;height:2.4rem;width:2.4rem;padding:.5rem;cursor:pointer;stroke:none;fill:rgba(var(--text-color),.4);margin-left:1rem;transition:.3s}#chat #send_message_button.active{opacity:1;fill:var(--accent-color);transform:none;pointer-events:all}#chat #type_message{margin:0}#chat .message{position:relative;display:grid;grid-auto-flow:column;align-items:center;gap:.5rem;width:100%;font-size:.9rem;max-width:max-content;margin-bottom:.2rem;margin-top:.8rem}#chat .message .message-body{display:inline-flex;align-items:center;flex-wrap:wrap;word-break:break-all;word-break:break-word;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;white-space:pre-wrap;box-shadow:0 1px .1rem rgba(0,0,0,.16);padding:.6em 1em;line-height:1.5}#chat .message .message-body a{color:inherit}#chat .message .message-body .text-emoji{align-self:center;font-size:1.4em;letter-spacing:0ch}#chat .message .time{white-space:nowrap;font-size:.8em;opacity:.8}#chat .sent{margin-left:auto}#chat .sent::after{content:"";position:absolute;left:100%;top:0;width:0;height:0;border-style:solid;border-width:.5em .3em 0 0;border-color:var(--accent-color) transparent transparent}#chat .sent .message-body{color:#f0f0f0;border-radius:1.5em 0 1.5em 1.5em}#chat .sent .time{grid-column:1}#chat .received::after{content:"";position:absolute;left:-.5em;top:0;width:0;height:0;border-style:solid;border-width:0 .5em .5em 0;border-color:transparent rgba(var(--text-color),.1) transparent transparent}#chat .received .message-body{background:rgba(var(--text-color),.1);border-radius:0 1.5em 1.5em}#chat .received+.received,#chat .sent+.sent{margin-top:0}#chat .received+.received::after,#chat .sent+.sent::after{display:none}#chat .received+.received .message-body,#chat .sent+.sent .message-body{border-radius:1.5em}#chat .unconfirmed{opacity:.7;transform-origin:right;animation:slide-up .3s forwards}@keyframes slide-up{from{transform:translateY(-2rem)}to{transform:none}}.big-emoji::after{display:none}.big-emoji .message-body{background:0 0!important;box-shadow:none!important;padding:0!important;font-size:2.6rem}#chat_container{flex:1;padding:0 1rem}#emoji_picker{display:grid;gap:1rem;background:rgba(var(--text-color),.06);border-radius:1rem;margin:0 1rem;box-shadow:0 .2rem .8rem rgba(0,0,0,.3);overflow-y:auto;max-height:30vh}#emoji_picker section{display:flex;flex-wrap:wrap;padding:1rem}#emoji_picker .section-header{position:sticky;top:0;background:linear-gradient(rgba(var(--text-color),.06),rgba(var(--text-color),.06)),rgba(var(--foreground-color),1);padding:1rem 0;width:100%;z-index:1}.emoji{font-size:1.6rem;cursor:pointer;padding:.4rem;border-radius:.6rem;user-select:none;text-align:center;min-width:3rem}#new_conversation,#no_mails{height:100%;justify-content:center;text-align:center;padding:1.5rem}#new_conversation p,#no_mails p{margin-top:.8rem}#no_mails .new-conversation{height:7rem;margin-bottom:1rem}.new-conversation{height:8rem;width:8rem;align-self:center;stroke-width:16;stroke:rgba(var(--text-color),.4)}#chat_container,#contacts_container,#dm_container,#inbox_mail_container,#mail,#sent_mail_container{width:100%;flex-direction:column;height:100%;overflow-y:auto}#contacts_container,#dm_container,#inbox_mail_container,#sent_mail_container{height:auto;min-height:100%}#dm_container:empty{display:none}#dm_container:not(:empty)~.empty-state{display:none}#dm_container,#inbox_mail_container,#sent_mail_container{padding-bottom:5rem}sm-tab-panels{overflow:hidden auto}sm-panel{width:100%;overflow-y:auto}#chat,#mail{background:rgba(var(--foreground-color),1)}#mail{height:100vh;padding:0 1.5rem;align-items:flex-start}#mail .flex{margin-top:1rem}#mail .flex sm-button:first-of-type{margin-right:.5rem}#compose_mail_popup sm-input{margin-bottom:1rem}.sidebar-item{display:flex;align-items:center;padding:1rem 1.5rem;font-weight:500;opacity:.9}.sidebar-item .icon{margin-right:1em;width:1em}.back{padding:.7rem;height:2.4rem;width:2.4rem;margin-left:-.5rem;cursor:pointer;stroke-width:8;opacity:.8;-webkit-tap-highlight-color:transparent}.back:hover{opacity:1}#settings_page #settings_sidebar header{padding:1rem 1.5rem}#settings_page .flex sm-button{margin:0;margin-left:1rem}#settings_page sm-switch{padding-left:1rem}#settings_page sm-button{width:100%}#settings_page #settings_sidebar{height:100%}#settings_page #settings_panel{padding:0 1.5rem}#settings_page section{max-width:50ch;display:grid;gap:.3rem}#settings_page section:not(:last-of-type){margin-bottom:1.5rem}#settings_page section.setting-toggle{grid-template-columns:1fr auto}#settings_page section.setting-toggle sm-switch{grid-column:2;grid-row:1/3}#settings_page section.setting-toggle>h4,#settings_page section.setting-toggle>p{grid-column:1}#settings_page #sign_out::part(button){color:var(--error-color)}@media screen and (max-width:640px){#chat header,#main_navbar .logo-section{padding:1rem}.hide-on-mobile{position:fixed;max-height:0;opacity:0;pointer-events:none}#landing{grid-template-areas:"illustration" ".";height:100%}#sing_in{max-height:90vh}#landing_illustration{grid-area:illustration}#main_navbar{transform:translateX(-100%);transition:transform .3s;z-index:4;box-shadow:0 0 1rem rgba(0,0,0,.3)}#navbar_backdrop{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.3);z-index:2;transition:transform .3s,opacity .3s}#contact_container,#dm_container{gap:.5rem}#chat header .initial{width:2rem;height:2rem}#chat .message{width:fit-content;max-width:90%}#settings_page #settings_panel header{position:sticky;top:0;padding:1rem 0;margin-bottom:.5rem;background:rgba(var(--foreground-color),1)}}@media only screen and (min-width:640px){::-webkit-scrollbar{width:.5rem}::-webkit-scrollbar-thumb{background:rgba(var(--text-color),.3);border-radius:1rem}::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-color),.5)}.hide-on-desktop{display:none!important}.page{padding-bottom:0}.fab{position:absolute}.logo-section{padding:2rem 3rem 0;margin:.5rem 0}sm-popup::part(popup){width:24rem;min-width:24rem}#landing{height:calc(100vh - 8rem);align-items:center;gap:4vw;grid-template-columns:1fr 1fr;padding:0 4vw}#landing .left h4{color:var(--accent-color)}#sign_in_popup .popup-header{padding-top:1.5rem}#main_navbar{position:relative;width:auto;padding-bottom:.5rem;background:rgba(var(--text-color),.06)}#main_navbar .logo-section{display:flex;justify-content:center;margin:1.5rem 0}#main_navbar .logo-section .main-logo{margin:0}#main_navbar .navbar-item{margin:0 .5rem;border-radius:.5rem}#main_navbar .navbar-item .icon{margin-right:0}#main_navbar .label{display:none}#add_contact_popup::part(popup){min-width:24rem}#compose_mail_popup::part(popup),#reply_mail_popup::part(popup){min-width:36rem}#main{width:100vw;height:100vh;grid-template-columns:auto 1fr}#emoji_picker{max-height:18rem}#chat .message .message-body{max-width:65ch}#chat_page,#mail_page{grid-template-columns:20rem 1fr;box-shadow:0 0 1rem rgba(0,0,0,.1);z-index:1}#settings_page{display:grid;height:100vh;box-shadow:0 0 1rem rgba(0,0,0,.1);grid-template-columns:14rem 1fr}#settings_page sm-button{width:max-content}#settings_page #settings_panel{padding:1.5rem}#settings_page .active{background:rgba(var(--text-color),.1)}.contact.active,.mail-card.active{background:rgba(var(--text-color),.06)}.card{display:inline-flex;width:auto}#settings_panel{overflow-y:auto;max-height:100vh}}@media only screen and (min-width:1280px){#landing{gap:4vw;padding:0 8vw}#landing .title-font{font-size:3rem}#chat_page,#mail_page{grid-template-columns:21rem 1fr}#chat header{padding:.5rem 1.5rem}#chat #chat_container{padding:1rem 5rem}}@media (hover:hover){.contact:hover,.mail-card:hover,.navbar-item:hover{background:rgba(var(--text-color),.06);cursor:pointer}.contact sm-menu{opacity:0;transition:opacity .3s}.contact:hover sm-menu,sm-menu:focus-within{opacity:1}.emoji:hover{background:rgba(var(--text-color),.1)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index 1d38b66..e6b8e43 100644 --- a/css/main.scss +++ b/css/main.scss @@ -83,6 +83,9 @@ textarea{ box-shadow: 0 0 0 0.1rem var(--accent-color); } } +strong{ + font-weight: 500; +} .flex{ display: flex; } @@ -138,11 +141,14 @@ textarea{ } .fab{ filter: drop-shadow(0 0.4rem 0.3rem rgba(0, 0, 0, 0.2)); - margin-right: 1rem; + margin: 1.5rem; position: fixed; right: 0; bottom: 0; z-index: 1; + &::part(button){ + padding: 0.9rem 1.6rem; + } .icon{ margin-left: 0 !important; margin-right: 0.5rem; @@ -538,6 +544,49 @@ sm-button[variant="primary"]{ align-self: flex-start; } } +#contact_details_popup{ + & > .flex:first-of-type{ + margin: 1rem 0; + .flex{ + .icon{ + height: 2.6rem; + width: 2.6rem; + padding: 0.85rem; + cursor: pointer; + stroke-width: 8; + &:hover{ + background: rgba(var(--text-color), 0.06); + } + } + } + } + h5{ + font-weight: 500; + opacity: 0.8; + } + .copy-row{ + margin-bottom: 1.5rem; + h4{ + font-weight: 400; + } + } + #contact_initial{ + height: 3.6rem; + width: 3.6rem; + font-size: 1.6rem; + border-radius: 4rem; + margin-bottom: 1rem; + } + #contact_name{ + border-radius: 0.5rem; + max-width: 30ch; + padding: 0.6rem 1.2rem; + &:focus{ + outline: none; + background: rgba(var(--text-color), 0.1); + } + } +} #warn_no_encryption, .date-card{ padding: 0.4rem 0.8rem; background: rgba(var(--text-color), 0.1); @@ -665,8 +714,7 @@ sm-button[variant="primary"]{ bottom: 0; top: 0; padding: 0; - width: max(18rem, 80vw); - height: 100vh; + width: max(16rem, 60vw); background: rgba(var(--foreground-color), 1); .logo-section{ margin: 1rem 0 1.5rem 0; @@ -760,7 +808,8 @@ sm-button[variant="primary"]{ height: 100%; width: 100%; z-index: 1; - background: linear-gradient(rgba(157, 166, 255, 0.063), rgba(157, 166, 255, 0.063)), rgba(var(--foreground-color), 1); + padding-bottom: 1.5rem; + background: rgba(var(--foreground-color), 1); transition: transform 0.3s; transform: translateX(-100%); .header{ @@ -812,10 +861,16 @@ sm-button[variant="primary"]{ h4{ text-transform: capitalize; } + .icon{ + -webkit-tap-highlight-color: transparent; + } .flex{ + .hamburger-menu-button{ + -webkit-tap-highlight-color: transparent; + margin-right: 1rem; + } h4{ flex: 1; - margin: 0 1rem; } .icon{ height: 2.2rem; @@ -852,8 +907,10 @@ sm-button[variant="primary"]{ padding: 0.1rem; stroke-width: 8; margin-right: 0.5rem; + stroke: rgba(var(--text-color), 0.8); } .initial{ + cursor: pointer; margin-right: 1rem; } h4{ @@ -905,6 +962,8 @@ sm-button[variant="primary"]{ position: absolute; right: 1.5rem; transform: scale(0); + opacity: 0; + pointer-events: none; z-index: 1; align-self: center; height: 2.4rem; @@ -916,8 +975,10 @@ sm-button[variant="primary"]{ margin-left: 1rem; transition: 0.3s; &.active{ + opacity: 1; fill: var(--accent-color); transform: none; + pointer-events: all; } } #type_message{ @@ -1123,7 +1184,7 @@ sm-button[variant="primary"]{ display: none; } #dm_container{ - padding-bottom: 3.5rem; + padding-bottom: 5rem; } sm-tab-panels{ overflow: hidden auto; @@ -1136,7 +1197,7 @@ sm-panel{ #inbox_mail_container, #sent_mail_container { - padding-bottom: 3.5rem; + padding-bottom: 5rem; } #chat, #mail{ background: rgba(var(--foreground-color), 1); @@ -1252,16 +1313,16 @@ sm-panel{ .logo-section{ padding: 1rem; } - #navbar_backdrop{ - position: fixed; - left: 0; - right: 0; - top: 0; - bottom: 0; - background: rgba(0, 0, 0, 0.3); - z-index: -1; - transition: transform 0.3s; - } + } + #navbar_backdrop{ + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.3); + z-index: 2; + transition: transform 0.3s, opacity 0.3s; } #dm_container, #contact_container{ @@ -1316,6 +1377,7 @@ sm-panel{ margin: 0.5rem 0; } sm-popup::part(popup){ + width: 24rem; min-width: 24rem; } #landing{ @@ -1338,8 +1400,8 @@ sm-panel{ #main_navbar{ position: relative; width: auto; - background: rgba(var(--text-color), 0.05); padding-bottom: 0.5rem; + background: rgba(var(--text-color), 0.06); .logo-section{ display: flex; justify-content: center; @@ -1386,9 +1448,6 @@ sm-panel{ box-shadow: 0 0 1rem rgba(0, 0, 0, 0.1); z-index: 1; } - #contacts, #mails, #settings_sidebar{ - background-color: rgba(157, 166, 255, 0.063); - } #settings_page{ display: grid; height: 100vh; diff --git a/index.html b/index.html index 61210a9..cbc56cd 100644 --- a/index.html +++ b/index.html @@ -95,7 +95,7 @@
FLO ID (User ID)

- + Copy @@ -104,7 +104,7 @@
Private key (Password)

- + Copy @@ -208,7 +208,44 @@ - + + + + +
+
+

+
+ + + + +
+
+
FLO ID
+
+

+ + Copy + + + +
+
+
+ @@ -256,10 +293,10 @@

- + +
+
+
- +

Chat

- Create a group + Add a contact + Create new group
@@ -386,7 +424,7 @@ -
+

Messages are not encrypted until receiver replies
@@ -412,7 +450,7 @@
- + @@ -458,7 +496,7 @@
- + @@ -485,7 +523,7 @@

My FLO ID

- + Copy @@ -514,7 +552,7 @@

Dark mode

-

Toggle dark mode on/off. Setting applies to this browser only

+

Toggle dark mode on/off.
*Setting applies to this browser only

@@ -672,11 +710,25 @@ if (window.innerWidth > 720 && firstInput) firstInput.focusIn() + + switch (e.detail.popup.id) { + case 'contact_details_popup': + getRef('contact_initial').setAttribute('style', `background: ${clickedContact['card'].getAttribute('background-color')}`) + getRef('contact_initial').textContent = clickedContact['name'].charAt(0) + getRef('contact_name').textContent = clickedContact['name'] + getRef('contact_flo_id').textContent = clickedContact['floID'] + break; + } }) document.addEventListener('popupclosed', e => { popupStack = e.detail.popupStack let thisPopup = e.detail.popup + switch (e.detail.popup.id) { + case 'contact_details_popup': + clickedContact['name'] = getRef('contact_name').textContent + break; + } }) window.addEventListener('popstate', e => { @@ -1357,7 +1409,10 @@ } }) + let prevScroll = {}; getRef('chat_container').addEventListener('scroll', function() { + prevScroll['scrollTop'] = this.scrollTop + prevScroll['scrollheight'] = this.scrollHeight if((this.scrollHeight > this.clientHeight) && (this.scrollHeight - this.clientHeight - this.scrollTop >= 100)){ getRef('scroll_to_bottom').classList.add('no-transformations') } @@ -1414,8 +1469,10 @@ } activePage.button = targetButton activePage.page = targetPage; - if(getRef('main_navbar').classList.contains('no-transformations')) + if(getRef('main_navbar').classList.contains('no-transformations')){ getRef('main_navbar').classList.remove('no-transformations') + getRef('navbar_backdrop').classList.add('hide') + } } if(e.target.closest('#send_mail_to') || e.target.closest('#mail_contact_list')){ getRef('mail_contact_list').classList.remove('hide-completely') @@ -1454,8 +1511,9 @@ const contact = e.target.closest(".contact") clickedContact['card'] = contact clickedContact['floID'] = contact.getAttribute("flo-id") - if(e.target.closest("sm-menu")){ - //show contact detail popup + clickedContact['name'] = contact.getAttribute("name") + if(e.target.closest(".initial") || e.target.closest("sm-menu")){ + showPopup('contact_details_popup') } else if(isCreatingGroup){ // code for adding group members @@ -1548,15 +1606,9 @@ getRef('emoji_picker').classList.toggle('hide-completely') } - function copyToClipboard(target, message, parent){ - let copyText, copyTarget = target; - if(typeof target === 'string'){ - if(parent) - copyTarget = parent.querySelector(target) - else{ - copyTarget = document.querySelector(target) - } - } + function copyToClipboard(element, message, parent = '.copy-row'){ + const parentElement = element.closest(parent) + const copyTarget = parentElement.querySelector('.copy') if(copyTarget.tagName === 'SM-INPUT' || copyTarget.tagName === 'INPUT' || copyTarget.tagName === 'TEXTAREA') copyText = copyTarget.value else @@ -1816,6 +1868,10 @@ notify( `you can't add your own FLO ID as contact`, 'error') return } + if(floGlobals.contacts.hasOwnProperty(floID)){ + notify( `Contact already saved`, 'error') + return + } messenger.storeContact(floID, name).then(result => { render.contactCard(floID, name, 'contact') hidePopup() @@ -1905,6 +1961,8 @@ } if(reRender || lazyLoad){ currentDate = null + prevScroll['scrollTop'] = getRef('chat_container').scrollTop + prevScroll['scrollHeight'] = getRef('chat_container').scrollHeight getRef('chat_container').prepend(frag) } if(reRender){ @@ -1918,11 +1976,14 @@ for(const mutation of mutations) { if (mutation.type === 'childList' && mutation.addedNodes.length) { chatMessageObserver.observe(getRef('chat_container').firstElementChild) + prevScroll['scrollTop'] += (getRef('chat_container').scrollHeight - prevScroll['scrollHeight']) + prevScroll['scrollHeight'] = getRef('chat_container').scrollHeight + getRef('chat_container').scrollTo({top: prevScroll['scrollTop']}) } } } ) - chatMutationObserver.observe(getRef('chat_container'), { attributes: true, childList: true }) + chatMutationObserver.observe(getRef('chat_container'), {childList: true }) //Lazy loading for chat messages const chatMessageObserver = new IntersectionObserver( @@ -2146,8 +2207,43 @@ function toggleDrawer(){ getRef('main_navbar').classList.toggle('no-transformations') + getRef('navbar_backdrop').classList.toggle('hide') } + function setNameEditable() { + if (!getRef('contact_name').isContentEditable) { + getRef('contact_name').contentEditable = 'true' + getRef('contact_name').focus() + document.execCommand('selectAll', false, null); + clickedContact['name'] = getRef('contact_name').textContent + } + } + + async function changeContactName() { + clickedContact['name'] = getRef('contact_name').textContent.trim() + if (clickedContact['name'] === '') + clickedContact['name'] = 'Unknown' + messenger.storeContact(clickedContact['floID'], clickedContact['name']).then(result => { + getRef('contact_initial').textContent = clickedContact['name'].charAt(0) + document.querySelectorAll(`.contact[flo-id="${clickedContact['floID']}"]`).forEach(contact => { + contact.children[0].textContent = clickedContact['name'].charAt(0) + contact.children[1].textContent = clickedContact['name'] + }) + notify('Renamed contact', 'success') + }) + .catch(error => notify(error, "error")); + } + + document.getElementById('contact_details_popup').addEventListener('click', e => { + if (!e.target.closest('#contact_name') && !e.target.closest('#edit_contact_name')) { + if (getRef('contact_name').isContentEditable) + getRef('contact_name').contentEditable = 'false' + if (clickedContact['name'] !== getRef('contact_name').textContent) + changeContactName() + } + }) + +