/** * Roundcube webmail styles for the Elastic skin * * Copyright (c) 2017-2018, The Roundcube Dev Team * * The contents are subject to the Creative Commons Attribution-ShareAlike * License. It is allowed to copy, distribute, transmit and to adapt the work * by keeping credits to the original authors in the README.md file. * See http://creativecommons.org/licenses/by-sa/3.0/ for details. */ /*** Responsive design - Layout ***/ /* - Large screen (width > 1200px) ----------------------------------------------------------------------------------------------------- | menu | sidebar | list | content | ----------------------------------------------------------------------------------------------------- - Normal screen (1200px => width => 768px) - typical: 768x1024 (iPad Mini/Air) ------------------------------------------------------------------- |menu| sidebar/list | content | ------------------------------------------------------------------- - Small (480px < width < 768px) ------------------------------------------ |menu| sidebar/list/content | ------------------------------------------ - Phone (width <= 480px) - typical: 320x480 (iPhone 5), 375x667 (iPhone 6-7), 360x564 (Galaxy S6) ------------------------ | sidebar/list/content | ------------------------ */ html { height: 100%; font-size: @page-font-size; } body { min-width: @page-min-width; height: 100%; color: @color-font; overflow: hidden; } body > #layout { overflow: hidden; display: flex; height: 100%; width: 100%; & > div { &.sidebar, &.list { display: flex; flex-direction: column; max-width: 30%; border-right: 1px solid @color-layout-border; & > .header { a.button { margin: 0; padding: 0 .5rem; } } } &.content { display: flex; flex: 6; flex-direction: column; min-width: 50%; background-color: @color-layout-content-background; & > .formcontent, // e.g. Help plugin & > .content { height: 100%; width: 100%; overflow: auto; flex: 1; } .iframe-wrapper { width: 100%; height: 100%; flex: 1; iframe { width: 100%; height: 100%; border: 0; } } } &.sidebar { display: flex; min-width: 220px; background-color: @color-layout-sidebar-background; flex: 2; } &.list { display: flex; flex: 3; min-width: 300px; background-color: @color-layout-list-background; } & > .scroller { flex: 1; position: relative; // for .listing-info positioning } & > .content.only > .scroller { overflow: auto; } & > .header, & > .footer { background-color: @color-layout-header-background; font-size: @layout-header-font-size; font-weight: bold; line-height: @layout-header-height; height: @layout-header-height; min-height: @layout-header-height; padding: 0 .25em; margin: 0; position: relative; // for absolute positioning of searchbar overflow: hidden; white-space: nowrap; display: flex; justify-content: center; } & > .header { border-bottom: 1px solid @color-layout-border; color: @color-layout-header; .header-title { .overflow-ellipsis; flex: 1; text-align: center; margin: 0 -20rem; } } & > .footer { border-top: 1px solid @color-layout-border; background-color: @color-layout-footer-background; &:empty { display: none; } } } } html.iframe { body { overflow: auto; #layout > .content { height: 100%; } } } @media screen and (max-width: @screen-width-large) { body > #layout > div.sidebar, body > #layout > div.list { min-width: 260px; flex: 3; } } @media screen and (max-width: @screen-width-medium) { } @media screen and (max-width: @screen-width-small) { body > #layout > div.sidebar, body > #layout > div.list { max-width: none; border: 0; } body > #layout > div > .header { a.button { // make the button active area smaller on touch devices margin: 0 .3rem !important; padding: 0 !important; &:before { font-size: 1.75rem; height: @layout-touch-header-height; margin: 0; } &.filter:before { font-size: 1.6rem; // this icon is too big in FA5 } .inner { display: none; } } } body > #layout > div > .header { &.with-search:not(.no-toolbar) { .searchbar { right: @layout-touch-icon-width; } .searchfilterbar { right: (@layout-touch-icon-width * 2); } } } } @media screen and (max-width: @screen-width-xs) { } @media screen and (max-width: @screen-width-mini) { body > #layout > div.sidebar, body > #layout > div.list { min-width: @page-min-width; } } @media screen and (min-width: (@screen-width-xs + 1px)) { body > #layout > div > .header > a.menu-button { display: none; } body > #layout > .menu { // FIXME: we set background color here not in taskmenu.less, because // otherwise background is partially white on Android/iOS background-color: @color-taskmenu-background; } } @media screen and (min-width: (@screen-width-small + 1px)) { .floating-action-buttons, body > #layout > .content > .header > .header-title, body > #layout > div > .header > .buttons, body > #layout > div > .header > a.toolbar-menu-button { display: none; } body > #layout > .menu { width: @layout-menu-width/2; } } @media screen and (min-width: (@screen-width-medium + 1px)) { body > #layout > .menu { width: @layout-menu-width; } } @media screen and (min-width: (@screen-width-large + 1px)) { body > #layout > div > .header > a.back-list-button, body > #layout > div > .header > a.back-sidebar-button { display: none; } } html.layout-phone { .hidden-phone { display: none !important; } } html.layout-phone, html.layout-small { .hidden-small { display: none !important; } } html.layout-large, html.layout-normal { .hidden-big { display: none !important; } } html.layout-large { .hidden-large { display: none !important; } }