github.com/pbberlin/go-pwa@v0.0.0-20220328105622-7c26e0ca1ab8/app-bucket/css/styles.css (about)

     1  @charset "UTF-8";
     2  
     3  /* @import url('https://fonts.googleapis.com/css?family=Work+Sans:300,600'); */
     4  /* ===================================== */
     5  /* global stuff */
     6  /* normalize is partly incorporated; if you need all of it, uncomment... */
     7  /* @import url("normalize.css"); */
     8  /*
     9      IE <= 9 and IE10/11 need a shock message
    10      IE <= 9 is done by conditional comment
    11      for IE10/11 see philipnewcomer.net/2014/04/target-internet-explorer-10-11-css
    12  */
    13  .ie-warning {
    14      display: none;
    15  }
    16  @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
    17      .ie-warning {
    18          display: block;
    19      }
    20  }
    21  
    22  /* reset - this is not in normalize.css */
    23  /* universal operator for properties not inherited by children */
    24  * {
    25      box-sizing: border-box; /* css3 rec */
    26      margin:      0;
    27      padding:     0;
    28      border:      0;    /* also input and button naked */
    29      outline:     0;
    30      line-height: 135%;
    31  
    32      /* color: violet; */
    33      background-color: transparent;
    34  }
    35  
    36  /* must be explicitly set */
    37  *::before, *::after {
    38      /* box-sizing: border-box; */
    39      box-sizing: inherit;
    40  }
    41  
    42  /*
    43      root points to HTML or SVG - stackoverflow.com/questions/15899615
    44  */
    45  :root {
    46      /*
    47  
    48       48rem(768px)    1rem(16px)
    49              increasing to
    50      120rem(1920px) 2rem(32px)
    51  
    52      the expression (1vw - .48rem)
    53      ranges from 0.00rem to 0.35rem
    54  
    55      the expression calc(1rem + ((1vw - .48rem) * 1.4))
    56      ranges from 0.65rem to 1.14rem
    57  
    58      <p id="ptest1" style="padding: 1rem 2rem; font-size: calc(1vw - .48rem)">
    59          Lorem ipsum dolor sit amet, consectetur adipiscing elit, <br>
    60          sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    61      </p>
    62      <p id="ptest2" style="padding: 1rem 2rem; font-size: calc(1rem + ((1vw - .48rem) * 1.4))">
    63          Lorem ipsum dolor sit amet, consectetur adipiscing elit, <br>
    64          sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    65      </p>
    66      <p id="ptest3" style="padding: 1rem 2rem;">
    67          Lorem ipsum dolor sit amet, consectetur adipiscing elit, <br>
    68          sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    69      </p>
    70  
    71  
    72      <script>
    73          function convertRemToPixels(rem) {
    74              return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
    75          }
    76          {
    77              var px = document.getElementById("ptest1");
    78              var st = window.getComputedStyle(px);
    79              px.innerHTML += "<br> font-size " + st.fontSize + "  - " + parseFloat(st.fontSize)/convertRemToPixels(1.0) + "rem";
    80          }
    81          {
    82              var px = document.getElementById("ptest2");
    83              var st = window.getComputedStyle(px);
    84              px.innerHTML += "<br> font-size " + st.fontSize + "  - " + parseFloat(st.fontSize)/convertRemToPixels(1.0) + "rem";
    85          }
    86          {
    87              var px = document.getElementById("ptest3");
    88              var st = window.getComputedStyle(px);
    89              px.innerHTML += "<br> font-size " + st.fontSize + "  - " + parseFloat(st.fontSize)/convertRemToPixels(1.0) + "rem";
    90          }
    91      </script>
    92  
    93  
    94      */
    95      font-size: clamp(0.75rem, calc(0.8rem + ((1vw - .48rem) * 1.2)), 0.90rem);
    96  
    97      /* color: var(--clr-fg); */
    98  
    99      background: var(--clr-bg);
   100      font-weight: 400;
   101  
   102      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
   103      font-family: 'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif;
   104  
   105      /* zew */
   106      font-family: "MetaWeb", Verdana, sans-serif;
   107  
   108      /* welt.de */
   109      font-family: 'Helvetica Neue', Helvetica, Arial , sans-serif;
   110  
   111      /* markdown viewer */
   112      font-family: -apple-system,BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
   113  }
   114  
   115  /* body base settings */
   116  body {
   117      margin:   0;
   118      padding:  0; 
   119  }
   120  
   121  
   122  
   123  /* 
   124      ==========================================
   125        four styles to make .content fill
   126        the remaining height
   127        without vertical scroll bar
   128  
   129        stackoverflow.com/questions/90178
   130      ==========================================
   131  */
   132  
   133  html { 
   134      /* body height 100% is not sufficient */
   135      height: 100%; 
   136  }
   137  body {
   138      height: 100%;
   139      display: flex;
   140      flex-direction: column;  /* nav and .content */
   141  }
   142    
   143  nav {
   144      /* flex-grow 0 => take up no  free height */
   145      flex: 0 1 auto;
   146  }
   147  
   148  .content {
   149      /* flex-grow 1 => take up all free height */
   150      flex: 1 1 auto;
   151  }
   152  
   153  /* 
   154      ==========================================
   155  */
   156  
   157  
   158  
   159  
   160  /* remove firefox focus outline *inside* button    */
   161  *::-moz-focus-inner {
   162      border: 0;
   163  }
   164  
   165  /* active, focus and hover stuff - for links, inputs and buttons */
   166  
   167  a:active, a:hover {
   168      outline: 0;
   169  }
   170  
   171  /* inputs and links - active style
   172       hover for links handled separately
   173  */
   174  *:focus {
   175      /* outline: 4px solid var(--clr-pri-hov); */
   176  
   177      /* remove all classic focus rectangles */
   178      outline: none;
   179  
   180      /* like border - but without displacement    */
   181      box-shadow:
   182          0 0 0 0.175em var(--clr-sec),
   183          0 0 0 0.250em var(--clr-pri-hov);
   184      box-shadow:
   185          0 0 0 0.075em var(--clr-sec),
   186          0 0 0 0.150em var(--clr-pri-hov);
   187  }
   188  
   189  a {
   190      color: var(--clr-pri);
   191      text-decoration: none;
   192  }
   193  
   194  /* unvisited links */
   195  a:link {
   196      color: var(--clr-pri);
   197  }
   198  
   199  a:visited {
   200      color: var(--clr-pri-vis);
   201  }
   202  
   203  /* default hover for links and buttons */
   204  a:hover, button:hover {
   205      /* color: var(--clr-pri-hov); */
   206      box-shadow:
   207          0 0 0 0.175em var(--clr-sec),
   208          0 0 0 0.210em var(--clr-pri-hov);
   209  }
   210  
   211  nav a[href=""].is-active {
   212      color: var(--clr-fg);
   213      font-weight: bold;
   214  }
   215  
   216  /* undoing hyperlink effects */
   217  nav a[href=""].is-active:hover {
   218      color: var(--clr-fg) ;
   219  }
   220  nav a[href=""].is-active:focus {
   221      color: var(--clr-fg) ;
   222  }
   223  nav a[href=""].is-active:hover::after {
   224      transform: scale(0, 1);
   225  }
   226  
   227  nav a.logo,
   228  nav a.title
   229  {
   230      justify-self: center;
   231  }
   232  
   233  
   234  /* text after logo */
   235  nav a.title {
   236      padding:       0.3rem 0.3rem;
   237  	padding-right: 0.6rem;
   238      font-weight:    500;
   239      letter-spacing:   0.01rem;
   240      border-radius:    0.3rem;
   241  }
   242  
   243  /* text after logo - three sub components */
   244  /* i.e. ZEW  */
   245  nav a.title span.survey-org {
   246      font-size: 120%;
   247  }
   248  
   249  /* i.e. Finanzmarkttest */
   250  nav a.title span.survey-name {
   251      font-size:   120%;
   252      line-height: 100%;
   253  }
   254  
   255  /* i.e. 2021-02 */
   256  nav a.title span.survey-wave-id {
   257      font-size: 70%;
   258  }
   259  
   260  
   261  /* for debugging
   262  
   263  *:hover {
   264      outline: 1px solid var(--clr-pri-hov);
   265  }
   266  */
   267  
   268  
   269  /* selected text - anywhere */
   270  ::selection {
   271      color:      var(--clr-input-bg);
   272      background: var(--clr-input-fg);
   273  }
   274  
   275  
   276  
   277  /* ===================================== */
   278  /* common elements stuff */
   279  
   280  p, h1, h2, h3, li {
   281      padding: 0.26em    0;
   282  }
   283  
   284  h2 {
   285      font-size: 1.3rem;
   286  }
   287  h3 {
   288      font-size: 1.15rem;
   289  }
   290  h4 {
   291      font-size: 1.05rem;
   292  }
   293  
   294  h1, h2, h3, h4, h5, h6, h7 {
   295      line-height:   1.6em;
   296      margin-top:    1.4em;
   297      margin-bottom: 0.1em;
   298  }
   299  
   300  /* stackoverflow.com/questions/1132366/ */
   301  div.markdown>h1,
   302  h1+h1, h1+h2, h1+h3, h1+h4, h1+h5, h1+h6,
   303         h2+h2, h2+h3, h2+h4, h2+h5, h2+h6,
   304                h3+h3, h3+h4, h3+h5, h3+h6,
   305                       h4+h4, h4+h5, h4+h6,
   306  dummy {
   307      margin-top: 0.1em;
   308  }
   309  
   310  
   311  p {
   312      text-align: justify;
   313  }
   314  
   315  pre {
   316      overflow: auto;
   317  
   318      background: #eee;
   319      font-family: "Courier 10 Pitch", Courier, monospace;
   320      font-size:     .9rem;
   321      line-height:  1.6;
   322      max-width: 100%;
   323      margin:  0.2em 0.95em;
   324      padding: 0.5em 0.60em;
   325  }
   326  
   327  img {
   328      height: auto;
   329      max-width: 100%;
   330  }
   331  
   332  svg:not(:root) {
   333      overflow: hidden;
   334  }
   335  
   336  ol, ul {
   337      list-style: none;
   338  }
   339  
   340  .content ul {
   341      margin-top:       0.3rem;
   342      margin-bottom:    0.5rem;
   343  }
   344  
   345  .content li {
   346      margin-left:     1.1rem;
   347  }
   348  
   349  .content ul li {
   350      list-style-type: square;
   351  }
   352  
   353  .content ol li {
   354      list-style-type: decimal;
   355  }
   356  
   357  hr {
   358      border: 1.5px solid var(--clr-fg);
   359      margin-top:      0.5rem;
   360      margin-bottom:   0.6rem;
   361  }
   362  
   363  div.separator {
   364      height: 1px;
   365      border-top: 1px solid var(--clr-sec-drk2);
   366  
   367      padding:        0;
   368      margin:         0;
   369      margin-top:     4px;
   370      margin-bottom: 12px;
   371  }
   372  
   373  
   374  
   375  /* foot notes */
   376  sup {
   377      font-size: 80%;
   378      position: relative;
   379      top: -3px;
   380      vertical-align: baseline;
   381  }
   382  
   383  /* table stuff */
   384  
   385  table {
   386      border-collapse: collapse;
   387      border-spacing: 0;
   388      width: 100%;
   389  }
   390  
   391  td, th {
   392      vertical-align: top;
   393      padding: 0;
   394  }
   395  
   396  th {
   397      padding: .4em;
   398      text-align: left;
   399  }
   400  
   401  tr {
   402      /* border-bottom: 1px solid #eee; */
   403  }
   404  
   405  td {
   406      padding: .4em;
   407  }
   408  
   409  /* form stuff */
   410  
   411  form, .form-alike {
   412      width: 100%;
   413      /* max-width: clamp(32rem, 96vw, 36rem); */
   414  
   415      padding: 0.1rem 0.6rem;
   416      background-color: var(--clr-sec);
   417  }
   418  
   419  form {
   420      display: inline-block;
   421      margin:  0;
   422      padding: 0;
   423  }
   424  
   425  legend {
   426      border: 0;
   427      padding: 0.1em 0.3em;
   428      margin-left: 0.3em;
   429  
   430      font-size:        100%; /* like label */
   431      letter-spacing:   0.03rem;
   432      font-weight:      300; /* visibility in mobile browser */
   433  }
   434  
   435  label, .postlabel {
   436  
   437      display:           inline-block;
   438      vertical-align:    middle;
   439  
   440      /* 2021-02 - not needed in CSS grid */
   441      /* for vertical alignment */
   442      /* padding-bottom:    0.15rem; */
   443      /* margin-right:      0.5rem; */
   444  
   445      font-size:          100%;    /* like legend */
   446      line-height:        120%;
   447      letter-spacing:     0.03rem;
   448      xx-font-weight:     300; /* visibility in mobile browser */
   449  
   450  
   451      /* 2021-02 - not needed in CSS grid */
   452      xx-white-space: nowrap;    /* explicit wrapping using -<br> */
   453      /* like pre but lines too long are broken
   454          not stretching the container
   455          extends to 100% of container
   456          thus container [max]-width should be specified
   457  
   458          pre-wrap => preserve white space
   459          pre-line => collapse white space
   460      */
   461      xx-white-space: pre-wrap; /* see also .postlabel, .plain-text-broken and .error */
   462  
   463      /* text-align: right; */
   464  
   465      /* make flexible with media query if needed */
   466      min-width:  2rem;  /* attention: overflow in multicolumn */
   467  }
   468  
   469  
   470  div.struc2frm  button[type=submit],
   471  div.struc2frm  input[type=submit]
   472  dummy {
   473      margin-left: calc(8rem + 0.7rem); /* same as label min-width plus label margin */
   474   }
   475  
   476  
   477  label.top {
   478      top: 0.15rem;
   479  }
   480  
   481  label.bottom {
   482      top: inherit;
   483      bottom: 0.00rem;
   484  }
   485  
   486  .postlabel {
   487      /* font-size: 0.78rem; */
   488      text-align:    left;
   489      /* 
   490  	margin-left:   0.35rem;
   491      margin-right:  0.01rem; */
   492  
   493      min-width:     inherit;  /* reset from label */
   494  }
   495  
   496  /*
   497      fieldset flex horizontal does not work in chrome.
   498      stackoverflow.com/questions/28078681
   499      Use this instead
   500  
   501      <fieldset class="border">
   502          <legend>...
   503              <div class="flex-horizonal">
   504  
   505  */
   506  
   507  fieldset {
   508      margin: 0.65em -0.2em;
   509      margin: 0.65em  0.0em;
   510      border: none;
   511  }
   512  
   513  fieldset.border {
   514      padding:   0.550em 0.6em;
   515      border:    0.150em solid var(--clr-sec-drk2);
   516      border-radius: 0.5rem;
   517  }
   518  
   519  /* normalize form elements - start */
   520  
   521  button, input, optgroup, select, textarea {
   522      color:  inherit;
   523      font:   inherit;
   524      margin: 0;
   525  }
   526  
   527  textarea {
   528      overflow: auto;
   529  }
   530  
   531  button {
   532      overflow: visible;
   533  }
   534  
   535  button, select {
   536      text-transform: none;
   537  }
   538  
   539  button, html input[type="button"], input[type="reset"], input[type="submit"] {
   540      -webkit-appearance: button;
   541      cursor: pointer;
   542  }
   543  
   544  button[disabled], html input[disabled] {
   545      cursor: default;
   546  }
   547  
   548  button::-moz-focus-inner, input::-moz-focus-inner {
   549      border: 0;
   550      padding: 0;
   551  }
   552  
   553  input {
   554      line-height: normal;
   555  }
   556  
   557  input[type="checkbox"], input[type="radio"] {
   558      -webkit-box-sizing: border-box;
   559              box-sizing: border-box;
   560      padding: 0;
   561  }
   562  
   563  input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
   564      height: auto;
   565  }
   566  
   567  /* normalize form elements - end */
   568  
   569  input, select, button, textarea, a.button {
   570      padding:        0.2em 0.1em;
   571      padding-top:    0.15em; /* moving the baseline upwards */
   572      padding-bottom: 0.25em; 
   573  
   574      margin:         0.2em 0; /* 2021-02 - horizontal padding for label post - pre is handled by grid-column-gap  */
   575      margin-right:   0.3rem;
   576      border-radius:  0.15em;
   577      /* font-size:      0.9rem; */
   578      font-weight:  400;
   579      line-height:    1.2;
   580  
   581      /* width: calc(100% - 1rem); */
   582      /*width: 120px;*/    /*prevents the size attribute from working*/
   583      /* width: 100%; */
   584  
   585      color: var(--clr-input-fg);
   586      background-color: var(--clr-input-bg);
   587  
   588  
   589      border: 1px solid #888;    /* chrome defaults to 2 pixel shadow */
   590  }
   591  
   592  input[type="number"] {
   593      text-align: right;
   594      padding-right: 0.2rem;
   595  }
   596  
   597  /* make the placeholder lighter */
   598  ::placeholder {
   599      color: #000;
   600      opacity: 0.20;
   601  }
   602  
   603  /*
   604      valid style only for non empty inputs would be
   605           input:not([value=""]):focus:valid
   606      but its impossible with CSS: stackoverflow.com/questions/16952526/
   607  */
   608  input:focus:valid {
   609  }
   610  
   611  input:not([type=submit]):valid {
   612  }
   613  
   614  input:not([type=submit]):focus:valid {
   615      background-color: var(--clr-bg-valid);
   616  }
   617  
   618  input:not([type=submit]):invalid,
   619  input:not([type=submit]):focus:invalid
   620  {
   621      background-color: var(--clr-bg-invalid);
   622  }
   623  
   624  input:disabled, select:disabled {
   625      background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAIklEQVQIW2NkQAKrVq36zwjjgzhhYWGMYAEYB8RmROaABADeOQ8CXl/xfgAAAABJRU5ErkJggg==) repeat;
   626  }
   627  
   628  /* Hide HTML5 Up and Down arrows. */
   629  /* www.thatstevensguy.com/programming/disable-arrows-on-number-inputs/ */
   630  input[type="number"]::-webkit-outer-spin-button,
   631  input[type="number"]::-webkit-inner-spin-button {
   632      -webkit-appearance: none;
   633      margin: 0;
   634  }
   635  
   636  input[type="number"] {
   637      -moz-appearance: textfield;
   638  }
   639  
   640  a.button {
   641      display: inline-block;
   642      text-align: center;
   643  }
   644  
   645  button, input[type="submit"], input[type="reset"], a.button {
   646      padding:         0.5em  0.9em;
   647      padding-bottom:  0.6em;
   648      background-color: var(--clr-pri);
   649      color: var(--clr-fg);
   650      color: var(--clr-sec);
   651      font-weight: 500;
   652  }
   653  
   654  /* suppressing default arrow icon from dropdown */
   655  select::-ms-expand {
   656      display: none;
   657  }
   658  
   659  select {
   660      /* -moz-appearance: none;
   661      -webkit-appearance: none;
   662      appearance: none; */
   663      text-indent: 1px;
   664      text-overflow: '';
   665      border: none;
   666  
   667      /* suppressing light blue background from options - does not work */
   668      outline: none;
   669  }
   670  
   671  option {
   672      padding: 0.4em;
   673      color: #000;
   674      background-color: transparent;
   675      border: none;
   676  }
   677  
   678  select:-moz-focusring {
   679      color:    transparent;
   680      text-shadow: 0 0 0 #000;
   681  }
   682  
   683  /*
   684      select-inputs with long labels should not stretch their container
   685      stackoverflow.com/questions/2591796
   686  
   687      2021-02:
   688      all it takes to preven long options from stretching the select:
   689          max-width: 80px;
   690  
   691  */
   692  select {
   693      max-width: 99%      !important;
   694      /*overflow:  hidden !important; */
   695  }
   696  option {
   697      max-width: 99%      !important;
   698      /*overflow:  hidden !important; */
   699  }
   700  
   701  
   702  /*
   703      artificial arrow icon for select/dropdown
   704      by wrapping a div around each select ;
   705      looks more stylish;
   706      the arrow is creatd by the ::after pseudo tag;
   707      requires the dropdown button itself to be suppressed;
   708  
   709      even when the pseudo class is disabled, this style must be set;
   710  
   711      also created by struc2frm
   712  */
   713  .select-arrow {
   714      position: relative;
   715      display: inline-block;
   716      margin: 0;
   717      padding: 0;
   718  }
   719  
   720  div.wildcardselect {
   721      display: inline-block;
   722      margin-top: 0.2rem;
   723      vertical-align: top;
   724  }
   725  div.wildcardselect input {
   726      font-size: 80%;
   727      padding: 1px;
   728      margin:  2px;
   729      width:  2.2rem;
   730  }
   731  
   732  .DISABLED-select-arrow::after {
   733  
   734      /* display:    inline-block; */
   735      position:    absolute;
   736      right:       1.5rem;
   737      top:         1.3rem;
   738      /* z-index: 103; */
   739  
   740      pointer-events: none;
   741  
   742      content: " ";
   743      width:    0.6em;
   744      height: 0.6em;
   745  
   746      transform-origin: center;
   747      transform: rotate(-45deg);
   748      /* background-color: blueviolet; */
   749      background: transparent;
   750      color: var(--clr-pri);
   751      border-left:     2px solid var(--clr-pri);
   752      border-bottom: 2px solid var(--clr-pri);
   753  }
   754  
   755  input[type=checkbox],
   756  input[type=radio] {
   757  
   758      display: inline-block;
   759      /* inline-block needs some width;
   760          firefox takes it as base for scale(2) below;
   761      */
   762      width:    1.2em;
   763      /* even better: no bloated focus rectangle */
   764      width:    auto;
   765  
   766      vertical-align: middle;
   767      margin: 0.40rem 0.45rem; /* labels far away enough from scaled input; padding is useless here    */
   768  
   769      /* margin-bottom: 0.45rem; */  /*  2021-02 - height correction removed  */
   770  
   771      /*
   772          zoom:     2.0;
   773          height: 2.0em;
   774  
   775          both no worki on firefox -    though in chrome
   776          therefore we resort to scale:
   777      */
   778      /* transform: scale(2.25); */
   779      transform: scale(1.75);
   780  
   781      /*
   782      all these are ignored:
   783          color: crimson;
   784          background-color: bisque;
   785          border: 1px solid red !important;
   786      */
   787  
   788  }
   789  
   790  /*
   791      firefox and chrome need different scaling
   792      stackoverflow.com/questions/952861
   793  */
   794  @supports (-moz-appearance:none) {
   795      /* p { color:red; }    */
   796      input[type=checkbox],
   797      input[type=radio] {
   798          transform: scale(1.50);
   799      }
   800  }
   801  @-moz-document url-prefix() {
   802      input[type=checkbox],
   803      input[type=radio] {
   804          transform: scale(1.50);
   805      }
   806  }
   807  
   808  
   809  
   810  input[type=checkbox]:focus,
   811  input[type=radio]:focus         {
   812       /* scale(2) also scales the focus rectangle :( */
   813      box-shadow:
   814          0 0 0 0.090em var(--clr-sec-lgt2),
   815          0 0 0 0.110em var(--clr-pri-hov);
   816  
   817  }
   818  
   819  
   820  .error{
   821      color: var(--clr-err);
   822      line-height:1.6em;
   823  }
   824  
   825  
   826  /* 
   827      this is a mere marker for javascript 
   828      document.querySelectorAll(".error-block-input")
   829      to put focus on
   830  */   
   831  .error-block-input{
   832  
   833  }
   834  
   835  /*  
   836     subset of 
   837      .popup-invalid-content-grid-item
   838  
   839      reproduces the aura
   840  */
   841  .error-aura {
   842      background-color: var(--clr-sec-lgt2);
   843      padding: 0.21rem 0.4rem;
   844      border: 1px solid var(--clr-err);
   845      border-radius: 0.3rem;
   846      font-size: 88%;
   847      line-height: 90%;
   848  }
   849  
   850  
   851  #console-log {
   852      color: black;
   853      background-color: white;
   854      /* like pre but lines too long are broken
   855          not stretching the container
   856          extends to 100% of container
   857          thus container [max]-width should be specified
   858  
   859          pre-wrap => preserve white space
   860          pre-line => collapse white space
   861      */
   862      white-space:     pre-wrap; /* see also .postlabel, .plain-text-broken and .error */
   863      line-height:     120%;
   864      background-color:#eee;
   865      margin:          8px 0;
   866      margin-left:     46px;
   867      padding: 0.2rem 0.8rem;
   868      border: 1px solid lightblue;
   869  
   870      display:         none;
   871  
   872  }
   873  
   874  /* text helpers */
   875  
   876  
   877  .bold {
   878      font-weight: bold;
   879  }
   880  
   881  /*
   882      We want to prevent line-break of the '%' or '€' suffix character.
   883      inputs must be inline-block, for whitespace nowrap to work.
   884      At the same time: suffix-inner enables wrapping for the suffix itself
   885  */
   886  .suffix-nowrap {
   887      white-space: nowrap;
   888  }
   889  
   890  .suffix-inner {
   891  
   892      display: inline-block;
   893      /* width: 75%; */  /* 2021-02 - disabled */
   894  
   895      /* vertical-align: top; */
   896      white-space: normal !important;  /* overriding outer element setting */
   897  
   898      font-size:         95%;           /* like label and suffix */
   899      letter-spacing:    0.03rem;
   900  
   901  }
   902  
   903  .question-mark-tooltip {
   904      display:        inline-block;
   905      margin-left:    0.6rem;
   906      margin-bottom:  0.3rem;
   907      font-size:      70%;
   908      vertical-align: middle;
   909      cursor:         pointer;
   910  }
   911  
   912  .plain-text-broken {
   913      /* like pre but lines too long are broken
   914          not stretching the container
   915          extends to 100% of container
   916          thus container [max]-width should be specified
   917      */
   918      white-space:  pre-wrap; /* see also .postlabel, .plain-text-broken and .error */
   919  
   920      display:      inline-block;
   921      font-family: 'Courier New', Courier;
   922  
   923  }
   924  
   925  
   926  
   927  
   928  
   929  /* ================= flex grid stuff - start    ================= */
   930  
   931  /* flexbox container */
   932  .flex-horizonal {
   933      display: flex;
   934      flex-direction: row;
   935  
   936      justify-content: space-around;  /* axis-1: [start, end, baseline, space-between] */
   937      align-content:   space-around;  /*          justify-content of the whole multi-lined compound  */
   938  
   939      align-items:     center;    /* axis-2 */
   940      /* counterpart to align-self on flex-item */
   941      /* [stretch | flex-end | flex-start] */
   942  
   943      flex-wrap: nowrap;
   944  
   945      /* gap is supported by firefx + chrome  */
   946      /* gap: 0.1em; */
   947  }
   948  
   949  /* instead of center */
   950  .flex-horizonal-top {
   951      align-items:         start   ;
   952      align-items:         baseline;
   953  }
   954  
   955  /* flexbox container 2 */
   956  .flex-vertical {
   957      display:         flex;
   958      flex-direction:  column;
   959  
   960      justify-content: space-around;
   961      align-content:   space-around;
   962  
   963      align-items:     center;
   964  
   965      flex-wrap:       nowrap;
   966  }
   967  
   968  .wrap {
   969      flex-wrap: wrap;
   970  }
   971  
   972  .flex-item {
   973      flex-grow:   1;  /* extra space is allocated  1 / (sum of all flex-grow)  */
   974      flex-shrink: 1;
   975      flex-basis:  inherit;  /* multiplier for flex-shrink and -grow */
   976      align-self:  inherit;  /* counterpart to container-align-items*/
   977  
   978      /* order: 1; */  /* overrides the HTML order - screen reader and tab order get messed up */
   979  }
   980  
   981  .flex-item-horizontal {
   982      border:          none;
   983      border:          0.2em solid #252;
   984      border:          0.2em solid transparent;
   985      border-left:     0.1em solid transparent;
   986      border-right:    0.5em solid transparent;
   987  }
   988  
   989  .flex-item-vertical {
   990      border-bottom:  0.75em solid transparent;
   991      border-top:     0.75em solid transparent;
   992  }
   993  
   994  .flex-item-center {
   995      text-align: center;
   996  }
   997  
   998  .flex-item-horizontal,
   999  .flex-item-vertical {
  1000      /* background-color: blueviolet; */
  1001  }
  1002  
  1003  /* for javascript trigggered testing */
  1004  .directionColumn {
  1005      max-height: 20rem;
  1006      flex-direction: column;
  1007  }
  1008  /* ================= flex grid stuff - end ================= */
  1009  
  1010  
  1011  /* ================= nav start =================== */
  1012  /* nav mobile start */
  1013  
  1014  /*
  1015  mobile case
  1016  
  1017      nav
  1018          logo
  1019          1st level - consisting of invisible toggle and visible label 'burger'
  1020              2nd level menu
  1021                  3rd level menu
  1022  
  1023  desktop case
  1024  
  1025      nav
  1026          logo
  1027          2nd level menu
  1028              3rd level menu
  1029  
  1030  */
  1031  nav {
  1032      position: var(--nav-bar-position);
  1033      z-index: 103; /* over content*/
  1034      width: 100%;
  1035      /* min-height:             var(--nav-height); */  /* mobile view horizontal  */
  1036      display: grid;
  1037      grid-template-columns: 4fr 4fr 3.0em [col-menu] 2em 0.15fr;
  1038      grid-template-columns: [col-img] 6fr [col-title] 4fr [col-menu] 1.3fr;
  1039  
  1040      /* main axis */
  1041      /*
  1042      css-tricks.com/snippets/css/a-guide-to-flexbox/
  1043      css-tricks.com/wp-content/uploads/2018/10/justify-content.svg
  1044              justify-content: center plus using up all width: space-around
  1045      */
  1046      justify-content:    right;
  1047      /* justify-items: center;    /* not ignored - as some sources say */
  1048      /* justify-self    below */
  1049      /* no justify-items and no justify-self?    stackoverflow.com/questions/32551291/    */
  1050      /* cross axis */
  1051      /* css-tricks.com/wp-content/uploads/2018/10/align-items.svg */
  1052      align-content:     space-around;
  1053      align-items:         center;
  1054  
  1055      background-color: var(--clr-sec);
  1056  
  1057  }
  1058  
  1059  nav a.logo,
  1060  nav a.title
  1061  {
  1062      display:        inline-block;
  1063      vertical-align: middle;
  1064  
  1065      position:       relative;
  1066  
  1067      color:          var(--clr-pri);
  1068  
  1069      font-size:      unset;
  1070      line-height:    unset;
  1071      letter-spacing: 0.10rem;
  1072      /* white-space: nowrap; */
  1073  }
  1074  
  1075  /* placeholder for img insertion */
  1076  nav a.logo img {
  1077      display:        inline-block;  /* activates margins */
  1078      vertical-align: middle;
  1079  
  1080      position:       relative;
  1081      top:            0.15rem;
  1082      left:          -0.10rem;
  1083  
  1084      /* height: calc(var(--nav-height) - 0.8rem); */  /* mobile view horizontal  */
  1085  
  1086      margin-right: 0.2rem;
  1087  
  1088      /* requires display, width and height being set */
  1089      /* content: var(--img-logo-icon); */
  1090  
  1091      /* not working in firefox
  1092         https://css-tricks.com/replace-the-image-in-an-img-with-css/
  1093         does not work for unknown sizes
  1094      */
  1095  }
  1096  
  1097  
  1098  nav a.logo .logo-img-desktop {
  1099  }
  1100  
  1101  nav a.logo .logo-img-mobile {
  1102      display: none;
  1103  }
  1104  
  1105  
  1106  /* dont color logo as 'visited' */
  1107  .logo:visited {
  1108      color: var(--clr-pri);
  1109  }
  1110  
  1111  .login-icon {
  1112      grid-column: col-menu/span 1;
  1113      justify-self: center;
  1114  }
  1115  
  1116  img.logged-in {
  1117      display:     inline-block;
  1118      position:    relative;
  1119      top:         0.20rem;
  1120      width:       1.6rem;
  1121      height:      1.4rem;
  1122      /* requires diplay, width and height being set */
  1123      content: var(--img-loggedin-icon);
  1124  }
  1125  /*
  1126      checkbox;
  1127      out of sight; but not invisible;
  1128      => can receive fo-cus, keeping it tabbable, showing a pseudo fo-cus on its label
  1129  */
  1130  .mnu-1st-lvl-toggler {
  1131      position: absolute !important;
  1132      top:             -9999px !important;
  1133      left:            -9999px !important;
  1134  }
  1135  /* burger is the label for mnu-1st-lvl-toggler    */
  1136  /* only non-systematic name; instead of mnu-1st-lvl-label */
  1137  .burger {
  1138      cursor: pointer;
  1139      grid-column: col-menu/span 1;
  1140  
  1141      /* width:       1.32em; */
  1142      font-size:   1.0rem;
  1143  
  1144      white-space: normal; /* undo label */
  1145  
  1146  	justify-self:  center;
  1147  	align-self:    center;
  1148  
  1149  }
  1150  
  1151  /* burger label contents */
  1152  .burger div{
  1153      width:   25px;
  1154      height:   3px;
  1155      background-color: var(--clr-pri);
  1156      margin: 5px 0;
  1157  }
  1158  
  1159  /*
  1160      labels dont have a focus - only the referenced input has;
  1161      which is out of sight;
  1162      => *simulate* focus on burger / label
  1163  */
  1164  .mnu-1st-lvl-toggler:focus ~ .burger {
  1165      box-shadow:
  1166          0 0 0 0.175em var(--clr-sec),
  1167          0 0 0 0.250em var(--clr-pri-hov);
  1168  }
  1169  
  1170  /* burger animation */
  1171  .mnu-1st-lvl-toggler:checked ~    .burger .line1 {
  1172      transform:    rotate(-45deg) translate(-5px, 6px);
  1173      transition:   transform 67ms ease-in;
  1174  }
  1175  .mnu-1st-lvl-toggler:checked ~    .burger .line2 {
  1176      opacity:      0;
  1177      transition:   opacity 14ms ease-in-out;
  1178  }
  1179  .mnu-1st-lvl-toggler:checked ~    .burger .line3 {
  1180      transform:    rotate(45deg) translate(-5px, -6px);
  1181      transition:   transform 67ms ease-in;
  1182  }
  1183  
  1184  /* 2nd level menu - inside nav */
  1185  ul.mnu-2nd-lvl {
  1186  
  1187      position:   absolute;
  1188      z-index:    199;
  1189      right:        0;
  1190      top:        var(--nav-height);
  1191  
  1192      background-color: var(--clr-sec);
  1193  
  1194      display:         flex;
  1195      flex-direction:  column;
  1196      /* vertical align; interacts with margins on ul.mnu-2nd-lvl a */
  1197      align-items:     center;
  1198      width:           60%;
  1199      width:           66%;
  1200      height:          auto;
  1201      /* height: var(--nav-rest-height); */
  1202  
  1203      padding-bottom:  0.4em;
  1204      border-left:     6px solid var(--clr-sec-drk2);
  1205      border-bottom:   6px solid var(--clr-sec-drk2);
  1206  
  1207  
  1208      /*
  1209          css-tricks.com/snippets/css/a-guide-to-flexbox/
  1210          css-tricks.com/wp-content/uploads/2018/10/justify-content.svg
  1211          justify-content: center plus using up all width: space-around
  1212      */
  1213      justify-content: space-around;
  1214  
  1215      /* multi line flex */
  1216      /*    flex-wrap: wrap;
  1217              align-content: stretch;
  1218              align-content: flex-end;
  1219      */
  1220      transform-origin: top;
  1221  
  1222  }
  1223  /* second level menu item */
  1224  ul.mnu-2nd-lvl li {
  1225      width: 100%;
  1226  }
  1227  
  1228  /* second level menu item - with a 3rd level child node */
  1229  ul.mnu-2nd-lvl li.nde-2nd-lvl {
  1230      /* relative positioning - a fix point for third level dropdown */
  1231      position: relative;
  1232      /* reserve room for the pseudo element icon */
  1233      /* padding-right: 2em; */
  1234  }
  1235  
  1236  /* second level item - icon to open third level */
  1237  ul.mnu-2nd-lvl li.nde-2nd-lvl::before {
  1238  
  1239      position:  absolute;
  1240      z-index:   105;
  1241      display:   block;
  1242  
  1243      content:   ' ';
  1244  
  1245      width:    0.7em;
  1246      height:   0.7em;
  1247  
  1248      pointer-events: none;
  1249  
  1250      right:    1.7em;
  1251      top:      1.16em;
  1252  
  1253      background-color: blueviolet;
  1254      background: transparent;
  1255  
  1256      transform-origin: center;
  1257      transform: rotate(-45deg);
  1258  
  1259      color: var(--clr-pri);
  1260      border-left:     2px solid var(--clr-pri);
  1261      border-bottom:   2px solid var(--clr-pri);
  1262  
  1263  }
  1264  /* static styling of all the links inside menu */
  1265  ul.mnu-2nd-lvl a {
  1266      display: inline-block;
  1267      width:     auto;
  1268  
  1269      padding:   0.12em    0.8em; /* padding here - for focus rectangle distance */
  1270      margin:    0.75em    1.0em;
  1271  
  1272      border-radius: 0.35em;
  1273  
  1274      color: var(--clr-pri);
  1275      font-size: 1.02rem;
  1276      text-decoration: none;
  1277      letter-spacing: 0.10em;
  1278  }
  1279  ul.mnu-2nd-lvl a:hover,
  1280  ul.mnu-2nd-lvl a:focus
  1281  {
  1282      color: var(--clr-pri-hov);
  1283  }
  1284  /* animations from checkbox switching 2st level menu on and off... */
  1285  
  1286  /* contract menu by unchecking */
  1287  ul.mnu-2nd-lvl {
  1288      transition: transform    130ms ease-in-out;
  1289      transform: scaleY(0);
  1290  }
  1291  
  1292  /* expand     menu by    checking */
  1293  .mnu-1st-lvl-toggler:checked ~ ul.mnu-2nd-lvl {
  1294      transition: transform 240ms ease-in-out;
  1295      transform: scaleY(1);
  1296  }
  1297  
  1298  /* hide links by     unchecking */
  1299  ul.mnu-2nd-lvl a {
  1300      visibility: hidden;    /* => no tabbing */
  1301      opacity: 0;
  1302      transition: opacity 190ms ease-in-out;
  1303  }
  1304  
  1305  /* show links by         checking - with delay */
  1306  .mnu-1st-lvl-toggler:checked ~ ul.mnu-2nd-lvl a {
  1307      visibility: visible;
  1308      opacity: 1;
  1309      transition: opacity 190ms ease-in-out 250ms;
  1310  }
  1311  /* static menu third level - 3rd level */
  1312  ul.mnu-3rd-lvl {
  1313  
  1314      display:     block;
  1315      position:    relative;    /* vertically embed - for horizontal breakout: absolutes */
  1316  
  1317      top:         50%;
  1318      left:        1.2em; /* reset */
  1319      right:       inherit;
  1320  
  1321      width:        calc(100% - 1.2em);
  1322      /* z-index: 120; */
  1323      background-color: var(--clr-sec);
  1324      /* background-color: var(--clr-zew2-md); */
  1325      /* box-shadow: 0 0 0.1em 0.4em darkorchid; */
  1326  
  1327      transform-origin: top;
  1328  }
  1329  
  1330  /*
  1331      show hide 3rd level
  1332      state closed - default
  1333  */
  1334  ul.mnu-3rd-lvl {
  1335  
  1336      /*
  1337      visibility hidden does not free the space of the 3rd level menu.
  1338      display:none does, but also removes the links inside from tab order.
  1339      => we can only move the menu out of layout flow using position: absolute;
  1340      then combining position relative, transform and opacity
  1341      to animate it into existence
  1342      */
  1343      position:    absolute;
  1344      transform:   scaleY(0.0);
  1345      opacity:     0.0;
  1346  
  1347      transition:
  1348          transform   180ms ease-in-out,
  1349          opacity     180ms ease-in-out
  1350      ;
  1351  
  1352  }
  1353  /*
  1354      state opened - by focus/hover over parent .nde-2nd-lvl or focus on itself + its children
  1355  
  1356                  show        3rd level menu on mouse hover
  1357                  show        3rd level menu on parent focus
  1358      keep    showing 3rd level menu, once focus is inside
  1359  
  1360      css-tricks.com/keeping-parent-visible-child-focus/
  1361  */
  1362  .nde-2nd-lvl:hover        ul.mnu-3rd-lvl,
  1363  .nde-2nd-lvl a:focus ~    ul.mnu-3rd-lvl,
  1364                          ul.mnu-3rd-lvl:focus-within,
  1365  oh-god-this-works-1 {
  1366      position:    relative;
  1367      opacity:     1;
  1368      transform:   scaleY(1);
  1369  }
  1370  
  1371  /* helper class, to hide mnu-3rd-lvl
  1372          attached / detached by only via javascript
  1373          similar to mnu-3rd-lvl - but stronger because !important
  1374  
  1375          we would love to change li.nde-2nd-lvl::before
  1376          into an upward arrow, but pseudo elements
  1377          cannot be styled via javascript
  1378  */
  1379  .mnu-3rd-lvl-pull-up{
  1380      position:    absolute     !important;
  1381      opacity:     0.0          !important;
  1382      transform:   scaleY(0.0)  !important;
  1383  }
  1384  
  1385  ul.mnu-3rd-lvl li {
  1386      font-size: 0.95rem;
  1387      background-color: var(--clr-sec-drk1);
  1388      /* background-image: linear-gradient(     -25deg,    var(--clr-sec), var(--clr-sec), var(--clr-sec), var(--clr-sec), var(--clr-sec-drk2)); */
  1389  
  1390      border-bottom: 0.08em solid var(--clr-sec-drk2);
  1391  }
  1392  
  1393  ul.mnu-3rd-lvl li a:hover,
  1394  ul.mnu-3rd-lvl li a:focus {
  1395      box-shadow:
  1396          0 0 0 0.175em var(--clr-sec-drk1),
  1397          0 0 0 0.250em var(--clr-pri-hov)
  1398          ;
  1399  }
  1400  
  1401  ul.mnu-3rd-lvl li:last-child {
  1402      border-bottom: none;
  1403  }
  1404  /* nav mobile end */
  1405  
  1406  /* nav desktop start */
  1407  @media screen and (min-width: 800px) {
  1408  
  1409      nav {
  1410          /* unsupported with IE */
  1411          all: unset;
  1412  
  1413  
  1414  
  1415          position: var(--nav-bar-position);
  1416          z-index: 103; /* over content*/
  1417  
  1418          width: 100%;
  1419          /* min-height:       var(--nav-height); */  /* mobile view horizontal  */
  1420          background-color: var(--clr-sec);
  1421  
  1422          display: grid;
  1423          grid-template-columns: 4fr 4fr 0.7fr 2fr [col-menu] 1fr;
  1424          grid-template-columns: [col-img] 6fr [col-title] 4fr [col-menu] 1fr ;
  1425  
  1426  
  1427          justify-content: right;
  1428  
  1429          align-content: space-around;
  1430          align-items:   center;
  1431  
  1432      }
  1433  
  1434      .login-icon {
  1435          width: 1.4rem;
  1436          grid-column: col-menu/span 1;
  1437          justify-self: center;
  1438      }
  1439  
  1440      .burger {
  1441          display: none;
  1442      }
  1443  
  1444      ul.mnu-2nd-lvl    {
  1445  
  1446          /* all: unset; */
  1447          visibility: visible;
  1448  
  1449          transform:    translateX(0);
  1450          transition: none;
  1451  
  1452          grid-column: col-menu/span 1;
  1453  
  1454          width: 100%;
  1455  
  1456          position: relative;
  1457          top:      0;
  1458          right:    0;
  1459  
  1460          display:        flex;
  1461          flex-direction: row;
  1462  
  1463          /*
  1464              css-tricks.com/snippets/css/a-guide-to-flexbox/
  1465              css-tricks.com/wp-content/uploads/2018/10/justify-content.svg
  1466              justify-content: center plus using up all width: space-around
  1467          */
  1468          justify-content:   space-between;
  1469          align-content:     space-around;
  1470          align-items:       center;
  1471          /* justify-items: center;    this property is ignored */
  1472          padding-bottom:    0;
  1473          border-left:       none;
  1474          border-bottom:     none;
  1475      }
  1476  
  1477      li.nde-2nd-lvl::before {
  1478          content: none !important;
  1479      }
  1480  
  1481      ul.mnu-3rd-lvl {
  1482  
  1483          position: absolute !important;    /* otherwise selector is not strong enough*/
  1484  
  1485          top:            100%;
  1486          left:             0%;
  1487          right: inherit;    /* reset */
  1488  
  1489          /* needs being wider than the 2nd lvl menu item => align right last child    */
  1490          width: 160%;
  1491      }
  1492  
  1493      ul.mnu-2nd-lvl li:last-child    ul.mnu-3rd-lvl {
  1494          width: 140%;
  1495          left:    inherit;
  1496          /* => align right last child */
  1497          right:             -1.4em;
  1498          /* background-color: red;    */
  1499      }
  1500  
  1501      ul.mnu-2nd-lvl a {
  1502          visibility: visible;
  1503          opacity: 1;
  1504  
  1505          padding: 0.2em 0.4em;
  1506          top:           0.05em; /* compensate for focus ::after */
  1507  
  1508          box-shadow: none; /* for focus instead animated ::after underline*/
  1509  
  1510      }
  1511  
  1512      /* hover for links 1: animated underline for the links */
  1513      ul.mnu-2nd-lvl a::after {
  1514          content: '';
  1515          display: block;
  1516          background-color: var(--clr-pri-hov);
  1517  
  1518          /* position: absolute; */
  1519          position: relative;
  1520          left:     0;
  1521          right:    0;
  1522  
  1523          height:     0.1em;
  1524          bottom:    -0.11em;
  1525  
  1526          transform:  scale(0, 1);
  1527          transition: transform ease-in-out 110ms;
  1528      }
  1529      /* hover for links 2 */
  1530      ul.mnu-2nd-lvl a:hover::after {
  1531          transform: scale(1,1);
  1532      }
  1533      ul.mnu-2nd-lvl a:focus::after {
  1534          transform: scale(1,1);
  1535          /* focus gets a stronger bar */
  1536          box-shadow: 0 0 0 0.02em var(--clr-pri-hov) ;
  1537      }
  1538      li.nde-2nd-lvl {
  1539          /* restore reserved space for pseudo element icon */
  1540          padding-right: 0.0em;
  1541      }
  1542  
  1543      ul.mnu-3rd-lvl li {
  1544          background-color: var(--clr-sec);
  1545          padding-bottom:   0.4em;
  1546          border-right:     0.15rem solid var(--clr-sec-drk2);
  1547          border-left:      0.15rem solid var(--clr-sec-drk2);
  1548  
  1549      }
  1550  
  1551      ul.mnu-3rd-lvl li:last-child {
  1552          border-bottom: 0.15rem solid var(--clr-sec-drk2);
  1553      }
  1554  
  1555      ul.mnu-3rd-lvl li a:hover,
  1556      ul.mnu-3rd-lvl li a:focus {
  1557          box-shadow: none;
  1558      }
  1559  }
  1560  
  1561  /* nav desktop end */
  1562  
  1563  /* child of body - sibling of nav - parent of hori-center-me */
  1564  .content {
  1565  
  1566      width:        100%;
  1567  
  1568      margin:         0 auto;
  1569      padding:        0;
  1570  
  1571      position:     relative;
  1572      top:          var(--content-top);
  1573  
  1574      /* to test scrolling: min-height: 120vh; */
  1575      /* min-height:    91.6vh;   */
  1576      /* min-height:    calc(100vh - var(--nav-height));   */
  1577  
  1578      background-color: var(--clr-sec-drk1);
  1579      background-color: var(--clr-sec);
  1580      background-color: var(--clr-sec-lgt2);
  1581      background-blend-mode: multiply;
  1582      background-size: cover;
  1583  
  1584  }
  1585  
  1586  
  1587  form[name=frmMain] {
  1588      /*  
  1589          width: 100%;
  1590          margin:  0;
  1591          padding: 0;
  1592          border: none;
  1593      */
  1594  }
  1595  
  1596  .page-static {
  1597      max-width: 50rem;
  1598      margin: 0 auto 
  1599  }
  1600  
  1601  
  1602  
  1603  
  1604  
  1605  /* more helper stuff */
  1606  
  1607  .vspacer-00,
  1608  .vspacer-08,
  1609  .vspacer-16,
  1610  dummy
  1611  {
  1612      margin: 0;
  1613      clear: both;
  1614  }
  1615  
  1616  .vspacer-0,.vspacer-00 {
  1617      height: 0px;
  1618  }
  1619  
  1620  .vspacer-2,.vspacer-02 {
  1621      height: 2px;
  1622  }
  1623  
  1624  .vspacer-8,.vspacer-08 {
  1625      height: 8px;
  1626  }
  1627  
  1628  .vspacer-16 {
  1629      height:16px;
  1630  }
  1631  
  1632  .vspacer-24 {
  1633      height:24px;
  1634  }
  1635  
  1636  .ib {
  1637      display:inline-block;
  1638      vertical-align: middle;
  1639      /*     width:150px;    no width; leave it dynamic*/
  1640      white-space:nowrap; /* forced to div to stretch as wide as it's contents */
  1641  }
  1642  
  1643  .ib-030, .ib-060, .ib-090, .ib-120, .ib-150, .ib-200, .ib-250, .ib-300 {
  1644      display:inline-block;
  1645      vertical-align: middle;
  1646      white-space:nowrap;
  1647  }
  1648  
  1649  .ib-030 {     min-width:030px;    }
  1650  .ib-060 {     min-width:060px;    }
  1651  .ib-090 {     min-width:090px;    }
  1652  .ib-120 {     min-width:120px;    }
  1653  .ib-150 {     min-width:150px;    }
  1654  .ib-200 {     min-width:200px;    }
  1655  .ib-250 {     min-width:250px;    }
  1656  .ib-300 {     min-width:300px;    }
  1657  
  1658  input.ib-060 {     width:060px;    }
  1659  input.ib-090 {     width:090px;    }
  1660  input.ib-120 {     width:120px;    }
  1661  input.ib-150 {     width:150px;    }
  1662  input.ib-200 {     width:200px;    }
  1663  input.ib-250 {     width:250px;    }
  1664  input.ib-300 {     width:300px;    }
  1665  
  1666  
  1667  /* 
  1668      validation bubble messages - start
  1669      validation playground
  1670  */
  1671  .popup-invalid-anchor {
  1672      width:   0px;
  1673      height:  0px;
  1674      margin:  0;
  1675      padding: 0;
  1676  
  1677      /* anchor for content */
  1678      position:       relative; 
  1679  
  1680      /* below input */
  1681      display:        block; /* forcing newline */
  1682      width:          100%;
  1683  }
  1684  
  1685  .popup-invalid-content {
  1686      
  1687      position: absolute; 
  1688      z-index: 212; /* must be greater than nav/menu */ 
  1689  
  1690      border-radius: 0.3rem;
  1691      padding: 0.1rem 0.4rem;
  1692      padding-top: 0;
  1693      border: 1px solid var(--clr-err); 
  1694      border-top: none; 
  1695      
  1696      background-color: var(--clr-bg-invalid);
  1697      color:            var(--clr-err);
  1698      font-size: 90%;
  1699  
  1700      /* parent's parent */
  1701      min-width: 12rem;  /* of smaller, message takes three lines; we want two */ 
  1702      max-width: 100%;
  1703      top:      -0.25rem;
  1704  }
  1705  
  1706  
  1707  
  1708  
  1709  /*
  1710      server side validation styles
  1711  */
  1712  .popup-invalid-anchor-grid-item {
  1713      width:  0;
  1714      height: 0;
  1715      
  1716      /* want 0.8rem here - heightens the page - 
  1717         but better than blanking out question texts - 
  1718         problem is grid-builder: it pushes the first radio down
  1719       */
  1720      height: 0.004rem;  
  1721  
  1722      grid-column-start:    1;
  1723      grid-column-end:     -1;
  1724      /* border: 2px solid red; */
  1725  
  1726      position: relative;  /* so top/left... do work */
  1727  }
  1728  
  1729  /* superset of .error-aura */
  1730  .popup-invalid-content-grid-item {
  1731  
  1732      position: absolute; 
  1733      z-index:   212;
  1734      min-width: 12rem;
  1735  
  1736      /* background-color: var(--clr-bg-invalid); */
  1737      background-color: var(--clr-sec-lgt2);
  1738  
  1739      bottom:  0.09rem; /* fine tuned across all page */
  1740      left:    0;
  1741  
  1742      margin:  0;
  1743      padding: 0.21rem 0.4rem;
  1744      padding-bottom: 0.18rem;
  1745      border: 1px solid var(--clr-err); 
  1746      border-radius: 0.3rem;
  1747  
  1748      outline-color: var(--clr-err);
  1749      outline-color: var(--clr-sec-lgt2);
  1750      outline-style: solid;
  1751      outline-width: 0.2rem;
  1752      outline-offset: 0;
  1753  
  1754  
  1755      font-size:   88%;
  1756      line-height: 90%;
  1757  
  1758  }
  1759  
  1760  
  1761  
  1762  @media screen and (max-width: 800px) {
  1763   
  1764      .popup-invalid-anchor {
  1765      }
  1766  
  1767      .popup-invalid-content {
  1768      }
  1769  
  1770  }
  1771  
  1772  
  1773  /* 
  1774      validation bubble messages - end
  1775  */