doctype html
html(ng-app='app')
  head
    script.
      window.stfConfig = JSON.parse('!{stfConfig}');
    meta(charset='utf-8')
    base(href='/')
    meta(name='viewport', content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no')
    meta(name='mobile-web-app-capable', content='yes')
    meta(name='apple-mobile-web-app-capable', content='yes')
    meta(name='apple-mobile-web-app-title', content='STF')
    meta(name='format-detection', content='telephone=no')
    meta(name='apple-mobile-web-app-status-bar-style', content='black-translucent')
    link(href='static/logo/exports/STF-128.png', rel='apple-touch-icon')

    title CrowdSTF
  body(ng-cloak).bg-1.fill-height.unselectable
    div(ng-controller='LayoutCtrl', basic-mode, admin-mode, standalone, landscape).fill-height
      .pane-top.fill-height(fa-pane)
        .pane-center(fa-pane, pane-id='main', pane-anchor='center').fill-height
          socket-state
          div(growl)
          div(ng-view).fill-height

    script(src='/app/api/v1/state.js')
    script(src='static/app/build/entry/commons.entry.js')
    script(src='static/app/build/entry/app.entry.js')
