Files
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
This MVP release provides a complete full-stack solution for managing action mappings
in Geutebruck's GeViScope and GeViSoft video surveillance systems.

## Features

### Flutter Web Application (Port 8081)
- Modern, responsive UI for managing action mappings
- Action picker dialog with full parameter configuration
- Support for both GSC (GeViScope) and G-Core server actions
- Consistent UI for input and output actions with edit/delete capabilities
- Real-time action mapping creation, editing, and deletion
- Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers)

### FastAPI REST Backend (Port 8000)
- RESTful API for action mapping CRUD operations
- Action template service with comprehensive action catalog (247 actions)
- Server management (G-Core and GeViScope servers)
- Configuration tree reading and writing
- JWT authentication with role-based access control
- PostgreSQL database integration

### C# SDK Bridge (gRPC, Port 50051)
- Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll)
- Action mapping creation with correct binary format
- Support for GSC and G-Core action types
- Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug)
- Action ID lookup table with server-specific action IDs
- Configuration reading/writing via SetupClient

## Bug Fixes
- **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet
- Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)`
- Proper filter flags and VideoInput=0 for action mappings
- Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft)

## Technical Stack
- **Frontend**: Flutter Web, Dart, Dio HTTP client
- **Backend**: Python FastAPI, PostgreSQL, Redis
- **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK
- **Authentication**: JWT tokens
- **Configuration**: GeViSoft .set files (binary format)

## Credentials
- GeViSoft/GeViScope: username=sysadmin, password=masterkey
- Default admin: username=admin, password=admin123

## Deployment
All services run on localhost:
- Flutter Web: http://localhost:8081
- FastAPI: http://localhost:8000
- SDK Bridge gRPC: localhost:50051
- GeViServer: localhost (default port)

Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 18:10:54 +01:00

1678 lines
34 KiB
CSS

/*<meta />*/
/* DEBUG log styles */
#DEBUG_Log
{
background-color: #CCCCCC;
border: solid 2px black;
width: 275px;
top: 50px;
right: 25px;
position: fixed;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
z-index: 99999;
display: none;
}
html.DEBUG #DEBUG_Log
{
display: block;
}
.MCDebugLogHeader
{
border-bottom: solid 1px black;
font-size: 14px;
font-weight: bold;
padding: 1ex;
}
.MCDebugLogBody
{
background-color: #FFFFFF;
font-family: Monospace;
font-size: 11px;
height: 200px;
overflow: auto;
}
.MCDebugLogEntry
{
border-bottom: solid 1px #AAAAAA;
}
.MCDebugLogEntryTime
{
color: #777777;
margin: 0;
}
.MCDebugLogFooter
{
padding: 1ex;
}
/**/
html,
body
{
height: 100%;
}
html
{
overflow: hidden;
/* IE 7: without this, IE 7 displays a scrollbar */
}
body
{
font-family: Arial;
font-size: 12px;
margin: 0;
padding: 0;
background: #000000 url('Images/diagonal_lines.png');
}
#header
{
width: 100%;
position: absolute;
top: 0;
z-index: 1;
/* IE7 z-index bug: positioned elements (#header) generate a new stacking context starting with a z-index value of 0. This causes .search-filter-content's z-index not to work. So set #header's z-index (don't really need to set .search-filter-content's z-index but we'll leave it). http://www.quirksmode.org/bugreports/archives/2006/01/Explorer_z_index_bug.html */
display: block;
height: 60px;
}
#header .logo
{
position: absolute;
top: 50%;
margin-left: 20px;
background: url('Images/logokbhtml5.png') no-repeat center center;
display: block;
width: 250px;
height: 33px;
margin-top: -16px;
}
#body
{
position: fixed;
right: 0;
bottom: 0;
left: 0;
top: 60px;
}
#navigation
{
width: 300px;
position: absolute;
top: 0;
bottom: 0;
}
html.left-layout #navigation
{
left: 0;
}
html.right-layout #navigation
{
right: 0;
}
#navigation.nav-closed
{
display: none;
}
#navigationResizeBar
{
width: 4px;
position: absolute;
top: 0;
bottom: 0;
cursor: col-resize;
z-index: 9999;
}
#navigationResizeBar.nav-closed
{
cursor: default;
}
html.left-layout #navigationResizeBar
{
left: 300px;
}
html.right-layout #navigationResizeBar
{
right: 300px;
}
html.left-layout #navigationResizeBar.nav-closed
{
left: 0;
}
html.right-layout #navigationResizeBar.nav-closed
{
right: 0;
}
#show-hide-navigation
{
background-color: #f7f7f7;
}
html.left-layout #show-hide-navigation
{
-webkit-border-radius: 0 3px 3px 0;
-moz-border-radius: 0 3px 3px 0;
border-radius: 0 3px 3px 0;
-webkit-box-shadow: 2px 0px 3px 0px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 2px 0px 3px 0px rgba(0, 0, 0, 0.3);
box-shadow: 2px 0px 3px 0px rgba(0, 0, 0, 0.3);
width: 10px;
height: 46px;
position: absolute;
top: 50%;
margin-top: -23px;
left: 0px;
cursor: pointer;
}
html.left-layout #show-hide-navigation:after
{
content: "";
border: solid 6px transparent;
border-right-width: 6px;
border-left: none;
position: absolute;
top: 50%;
right: 0;
left: 50%;
margin-top: -6px;
margin-left: -3px;
width: 0;
height: 0;
border-right-color: #898989;
}
html.left-layout .nav-closed #show-hide-navigation:after
{
border-left-style: solid;
border-left-width: 6px;
border-right: none;
border-left-color: #898989;
}
html.right-layout #show-hide-navigation
{
-webkit-border-radius: 3px 0 0 3px;
-moz-border-radius: 3px 0 0 3px;
border-radius: 3px 0 0 3px;
-webkit-box-shadow: -2px 0px 3px 0px rgba(0, 0, 0, 0.3);
-moz-box-shadow: -2px 0px 3px 0px rgba(0, 0, 0, 0.3);
box-shadow: -2px 0px 3px 0px rgba(0, 0, 0, 0.3);
width: 10px;
height: 46px;
position: absolute;
top: 50%;
right: 0;
margin-top: -23px;
cursor: pointer;
}
html.right-layout #show-hide-navigation:after
{
content: "";
border: solid 6px transparent;
border-left-width: 6px;
border-right: none;
position: absolute;
top: 50%;
right: 0;
left: 50%;
margin-top: -6px;
margin-left: -3px;
width: 0;
height: 0;
border-left-color: #898989;
}
html.right-layout .nav-closed #show-hide-navigation:after
{
border-right-style: solid;
border-right-width: 6px;
border-left: none;
border-right-color: #898989;
}
#mousemove-sheet
{
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
cursor: col-resize;
z-index: 10000;
/* IE needs these or else the mouseup event doesn't fire on the mousemove-sheet */
background-color: White;
opacity: 0;
filter: alpha(opacity=0);
/**/
}
.pulse-required,
.feedback-required,
.feedback-topic-required
{
display: none;
}
.pulse-active .pulse-required,
.feedback-active .feedback-required,
.feedback-active.has-topic .feedback-topic-required
{
display: block;
}
/* Tabs */
.tabs
{
}
.tabs-nav .tab-collapsed
{
width: auto;
}
.tab-collapsed .tabs-nav-text
{
display: none;
}
.tabs-nav-icon
{
background-position: center center;
background-repeat: no-repeat;
width: 16px;
height: 16px;
margin: 5px;
}
.image-then-text .tabs-nav-icon
{
float: left;
}
.image-then-text .tabs-nav-text
{
float: left;
}
.text-then-image .tabs-nav-icon
{
float: right;
}
.text-then-image .tabs-nav-text
{
float: right;
}
.text-only .tabs-nav-icon
{
display: none;
}
.text-only .tabs-nav-text
{
display: inline;
padding: 0px 3px;
}
.image-only .tabs-nav-icon
{
display: inline-block;
}
.image-only .tabs-nav-text
{
display: none;
}
#TocTab
{
}
#TocTab.tab-collapsed
{
width: auto;
}
#IndexTab
{
}
#IndexTab.tab-collapsed
{
width: auto;
}
#GlossaryTab
{
}
#GlossaryTab.tab-collapsed
{
width: auto;
}
#BrowseSequencesTab
{
}
#BrowseSequencesTab.tab-collapsed
{
width: auto;
}
#CommunityTab
{
}
#CommunityTab.tab-collapsed
{
width: auto;
}
.tabs-nav-text
{
}
.tabs-nav
{
margin: 0;
padding: 0;
}
.tabs-nav li
{
-webkit-box-shadow: 1px 0px 3px 0px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 1px 0px 3px 0px rgba(0, 0, 0, 0.2);
box-shadow: 1px 0px 3px 0px rgba(0, 0, 0, 0.2);
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
-webkit-border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
cursor: pointer;
list-style: none;
float: left;
text-align: center;
margin-top: 3px;
width: 100px;
height: 28px;
line-height: 28px;
color: #dadada;
border-right: solid 1px #494949;
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li.tabs-nav-active
{
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
margin-top: 0;
color: #000000;
border-right: solid 1px #494949;
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
}
.tabs-panels
{
}
.tabs-panel
{
position: absolute;
right: 0;
bottom: 0;
left: 0;
display: none;
padding: 7px;
top: 28px;
background-color: #f7f7f7;
}
.tabs-panel-active
{
display: block;
}
.tabs-panel-search
{
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
width: 100%;
margin: 0px;
padding: 3px;
}
.tabs-panel-content
{
border: solid 1px #E1E1E1;
border-bottom: none;
position: absolute;
top: 8px;
right: 7px;
bottom: 0;
left: 7px;
padding: 8px 7px 0 7px;
overflow: auto;
background-color: #ffffff;
padding-left: 7px;
padding-right: 7px;
padding-top: 8px;
border-top: solid 1px #e1e1e1;
border-right: solid 1px #e1e1e1;
border-left: solid 1px #e1e1e1;
}
.tabs-panel-content.searchable
{
top: 41px;
}
.tabs-panel-content.loading
{
background: url("Images/loading-32px.gif") no-repeat center center;
}
.login-dialog
{
display: none;
z-index: 10001;
position: absolute;
top: 50%;
left: 50%;
margin-top: -200px;
margin-left: -175px;
width: 350px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 4px 10px #333333;
-moz-box-shadow: 0 4px 10px #333333;
box-shadow: 0 4px 10px #333333;
}
.login-dialog.pulse
{
width: 408px;
height: 428px;
margin-left: -204px;
margin-top: -214px;
}
#pulse-login-frame
{
width: 100%;
height: 100%;
border: none;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 4px 10px #333333;
-moz-box-shadow: 0 4px 10px #333333;
box-shadow: 0 4px 10px #333333;
}
.login-dialog-header
{
height: 36px;
line-height: 36px;
padding-left: 50px;
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
-webkit-border-radius: 3px 3px 0 0;
-moz-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
background: #5a5a5a url('Images/login-dialog-icon.png') no-repeat 18px center;
background: url('Images/login-dialog-icon.png') no-repeat 18px center, -moz-linear-gradient(top, #5a5a5a 0%, #4a4a4a 100%);
background: url('Images/login-dialog-icon.png') no-repeat 18px center, -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5a5a5a), color-stop(100%,#4a4a4a));
background: url('Images/login-dialog-icon.png') no-repeat 18px center, -webkit-linear-gradient(top, #5a5a5a 0%, #4a4a4a 100%);
background: url('Images/login-dialog-icon.png') no-repeat 18px center, -o-linear-gradient(top, #5a5a5a 0%,#4a4a4a 100%);
background: url('Images/login-dialog-icon.png') no-repeat 18px center, -ms-linear-gradient(top, #5a5a5a 0%,#4a4a4a 100%);
background: url('Images/login-dialog-icon.png') no-repeat 18px center, linear-gradient(top, #5a5a5a 0%,#4a4a4a 100%);
-pie-background: url('Skins/Default/Stylesheets/Images/login-dialog-icon.png') no-repeat 18px center, linear-gradient(#5a5a5a, #4a4a4a);
color: #ffffff;
font-size: 13px;
font-weight: bold;
background-color: #5a5a5a;
border-bottom: solid 1px #2b2b2b;
label: Create Profile;
}
.login-dialog-content
{
background: #5A5A5A;
-webkit-border-radius: 0 0 3px 3px;
-moz-border-radius: 0 0 3px 3px;
border-radius: 0 0 3px 3px;
padding: 17px;
background-color: #5a5a5a;
border-top: solid 1px #767676;
}
.login-dialog-content .profile-item-wrapper
{
margin-bottom: 10px;
height: 32px;
line-height: 32px;
color: #cecece;
}
.login-dialog-content .profile-item-wrapper .label-wrapper
{
margin-bottom: 5px;
float: left;
}
.login-dialog-content .profile-item-wrapper .input-wrapper
{
float: right;
}
.login-dialog-content .profile-item-wrapper input[type=text]
{
margin: 0;
padding: 5px;
border: solid 1px #191919;
background: #FFF;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 1px #888;
-moz-box-shadow: 0 1px #888;
box-shadow: 0 1px #888;
outline: none;
}
.login-dialog-content .profile-item-wrapper.email-notifications-wrapper
{
margin-top: 15px;
height: auto;
line-height: normal;
}
.login-dialog-content .profile-item-wrapper.email-notifications-wrapper .label-wrapper
{
float: none;
}
.login-dialog-content .profile-item-wrapper.email-notifications-wrapper .email-notifications-group
{
margin-right: 0;
padding: 12px;
background-color: #4A4A4A;
border: solid 1px #2B2B2B;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 0 1px #888;
-moz-box-shadow: 0 1px #888;
box-shadow: 0 1px #888;
}
.login-dialog-content .profile-item-wrapper.error input,
.login-dialog-content .profile-item-wrapper.error select
{
border: solid 1px #F00;
background-color: #FEE7E7;
}
.login-dialog-buttons
{
text-align: right;
}
.login-dialog button
{
margin-left: 5px;
margin-right: 0;
padding: 8px 26px;
border: solid 1px #2B2B2B;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
cursor: pointer;
background: #595959;
background: -moz-linear-gradient(top, #595959 0%, #4a4a4a 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#595959), color-stop(100%,#4a4a4a));
background: -webkit-linear-gradient(top, #595959 0%, #4a4a4a 100%);
background: -o-linear-gradient(top, #595959 0%,#4a4a4a 100%);
background: -ms-linear-gradient(top, #595959 0%,#4a4a4a 100%);
background: linear-gradient(top, #595959 0%,#4a4a4a 100%);
-pie-background: linear-gradient(#595959, #4a4a4a);
color: #ffffff;
font-weight: bold;
background-color: #595959;
border-top: solid 1px #2b2b2b;
border-right: solid 1px #2b2b2b;
border-bottom: solid 1px #2b2b2b;
border-left: solid 1px #2b2b2b;
}
.login-dialog button.close-dialog
{
position: absolute;
top: 8px;
right: 8px;
background: none;
background-image: url('images/close.png');
height: 16px;
width: 16px;
margin: 0;
padding: 0;
border: 0;
}
.login-dialog .status-message-box
{
display: none;
color: #0F0;
text-align: center;
margin-top: 16px;
padding: 12px;
background-color: #DCFEDC;
border: solid 1px #0F0;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.login-dialog .status-message-box.error
{
color: #F00;
border: solid 1px #F00;
background-color: #FEE7E7;
}
.login-dialog .status-message-box .message
{
display: none;
}
/* TOC */
#toc
{
}
ul.tree.inner
{
padding-left: 19px;
}
ul.tree
{
margin: 0;
padding: 0;
list-style-image: none;
list-style-type: none;
color: #707070;
}
.tree-node-expanded > ul
{
display: block;
}
.tree-node-collapsed > ul
{
display: none;
}
.tree-node div
{
line-height: 1.9em;
cursor: pointer;
background-repeat: no-repeat;
background-position: 0 3px;
padding-left: 16px;
position: relative;
}
.tree-node div .label
{
margin-left: 3px;
}
.tree-node .new-indicator
{
position: absolute;
top: 0;
left: 0;
margin-top: 3px;
background: url('Images/new-indicator.png');
width: 7px;
height: 7px;
}
.tree-node
{
white-space: nowrap;
}
.tree-node-inner > div
{
}
.tree-node-collapsed > div
{
background: url('Images/book.png') no-repeat 0 3px;
padding-left: 16px;
}
.tree-node-expanded > div
{
background: url('Images/book-open.png') no-repeat 0 3px;
padding-left: 16px;
}
.tree-node-leaf > div
{
background: url('Images/topic.png') no-repeat 0 3px;
padding-left: 16px;
}
.tree-node.tree-node-selected > div,
.tree-node.tree-node-selected > div:hover
{
background-color: #cce0f0;
}
.tree-node > div:hover
{
background-repeat: no-repeat;
background-color: #e5eff7;
}
.tree-node a
{
color: inherit;
text-decoration: none;
}
.tree-node.tree-node-selected
{
color: #000000;
}
/* Index */
#index
{
}
#index .index-wrapper
{
position: relative;
}
#index ul
{
}
#index .tree-node
{
}
#index .tree-node div
{
}
#index .tree-node-collapsed > div
{
background: url('Images/index-collapsed.png') no-repeat 0 3px;
padding-left: 10px;
}
#index .tree-node-expanded > div
{
background: url('Images/index-expanded.png') no-repeat 0 3px;
padding-left: 10px;
}
#index .tree-node-leaf > div
{
background: url('Images/index.png') no-repeat 0 3px;
padding-left: 10px;
}
#index .tree-node.tree-node-selected > div,
#index .tree-node.tree-node-selected > div:hover
{
background-color: #cce0f0;
}
#index .tree-node > div:hover
{
background-color: #e5eff7;
}
#index .tree-node a
{
color: inherit;
text-decoration: none;
}
#index .tree-node.tree-node-selected
{
}
.see,
.see-also
{
font-style: italic;
}
/* Glossary */
#glossary
{
}
#glossary .tree-node
{
}
#glossary .tree-node div
{
background-image: none;
padding-left: 0;
}
#glossary .GlossaryPageDefinition
{
background-color: inherit;
cursor: inherit;
white-space: normal;
color: #707070;
}
#glossary .tree-node a
{
color: inherit;
text-decoration: none;
}
/* Community */
#community
{
/*padding: 0;*/
overflow: hidden;
height: 100%;
}
#community-frame-html5
{
width: 100%;
height: 100%;
border: none;
}
/* Topic */
#contentBody
{
-webkit-border-radius: 4px 4px 0 0;
-moz-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
position: absolute;
top: 0;
right: 5px;
bottom: 0;
left: 5px;
background-color: #f7f7f7;
}
html.left-layout #contentBody
{
-webkit-border-radius: 4px 0 0 0;
-moz-border-radius: 4px 0 0 0;
border-radius: 4px 0 0 0;
left: 305px;
right: 0;
}
html.left-layout #contentBody.nav-closed
{
left: 5px;
}
html.right-layout #contentBody
{
-webkit-border-radius: 0 4px 0 0;
-moz-border-radius: 0 4px 0 0;
border-radius: 0 4px 0 0;
left: 0;
right: 305px;
}
html.right-layout #contentBody.nav-closed
{
right: 5px;
}
html.left-layout #contentBody.no-buttons,
html.right-layout #contentBody.no-buttons
{
top: 28px;
}
#contentBodyInner
{
background-color: #FFF;
border-top: solid 1px #E1E1E1;
border-right: solid 1px #E1E1E1;
border-left: solid 1px #E1E1E1;
position: absolute;
right: 9px;
bottom: 0;
left: 9px;
overflow: auto;
-webkit-overflow-scrolling: touch;
top: 38px;
}
#contentBody.no-buttons #contentBodyInner
{
top: 9px;
}
iframe.content
{
position: absolute;
/* need this for IE 7 otherwise it'll treat width/height as "auto" */
border: none;
width: 100%;
height: 100%;
}
/* Search */
#searchPane
{
margin: 8px;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: none;
}
.search-bar
{
border: solid 1px #363636;
-webkit-border-radius: 15px;
-moz-border-radius: 15px;
border-radius: 15px;
position: absolute;
top: 50%;
right: 14px;
display: block;
border-top: solid 1px #363636;
border-right: solid 1px #363636;
border-bottom: solid 1px #363636;
border-left: solid 1px #363636;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
margin-top: -15px;
box-shadow: 0px 1px 0px #7d7d7d;
-webkit-box-shadow: 0px 1px 0px #7d7d7d;
-moz-box-shadow: 0px 1px 0px #7d7d7d;
}
#search-field
{
border: none;
-webkit-border-radius: 15px 0 0 15px;
-moz-border-radius: 15px 0 0 15px;
border-radius: 15px 0 0 15px;
color: #DADADA;
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
position: relative;
/* need this to workaround CSS3PIE known issue: http://css3pie.com/documentation/known-issues/#z-index */
width: 187px;
padding: 0 2px 0 14px;
float: left;
outline: none;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
height: 28px;
line-height: 28px;
background: #6F6F6F;
background: -moz-linear-gradient(top, #6F6F6F 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6F6F6F), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #6F6F6F 0%, #555555 100%);
background: -o-linear-gradient(top, #6F6F6F 0%,#555555 100%);
background: -ms-linear-gradient(top, #6F6F6F 0%,#555555 100%);
background: linear-gradient(top, #6F6F6F 0%,#555555 100%);
-pie-background: linear-gradient(#6F6F6F, #555555);
background-color: #6F6F6F;
placeholder: Search;
}
.search-filter-wrapper
{
display: none;
float: left;
}
.search-filter
{
font-size: 11px;
text-align: center;
background: #6F6F6F;
/* Old browsers */
background: -moz-linear-gradient(top, #6F6F6F 0%, #555555 100%);
/* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6F6F6F), color-stop(100%,#555555));
/* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #6F6F6F 0%,#555555 100%);
/* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #6F6F6F 0%,#555555 100%);
/* Opera11.10+ */
background: -ms-linear-gradient(top, #6F6F6F 0%,#555555 100%);
/* IE10+ */
background: linear-gradient(top, #6F6F6F 0%,#555555 100%);
/* W3C */
/*PIE*/
padding-right: 5px;
cursor: pointer;
height: 28px;
line-height: 28px;
color: #dadada;
border-left: solid 1px #363636;
background: -moz-linear-gradient(top, #6F6F6F 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6F6F6F), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #6F6F6F 0%, #555555 100%);
background: -o-linear-gradient(top, #6F6F6F 0%,#555555 100%);
background: -ms-linear-gradient(top, #6F6F6F 0%,#555555 100%);
background: linear-gradient(top, #6F6F6F 0%,#555555 100%);
-pie-background: linear-gradient(#6F6F6F, #555555);
}
.search-filter.open
{
background: #3f3f3f;
}
.search-filter span
{
padding-left: 15px;
padding-right: 15px;
}
.search-filter span:after
{
content: "";
border: solid 3px transparent;
border-top-width: 6px;
border-bottom: none;
position: absolute;
top: 50%;
right: 42px;
/* .search-submit width + 8px padding: 34px + 8px */
margin-top: -3px;
width: 0;
height: 0;
border-top-color: #dadada;
}
.search-filter-content
{
display: none;
-webkit-border-radius: 0 0 4px 4px;
-moz-border-radius: 0 0 4px 4px;
border-radius: 0 0 4px 4px;
position: absolute;
right: 34px;
line-height: normal;
text-align: left;
overflow: auto;
z-index: 1;
background-color: #3f3f3f;
}
.search-filter-content ul
{
list-style: none;
margin: 0;
padding: 6px;
}
.search-filter-content ul li
{
padding: 5px;
}
.search-filter-content ul li:hover
{
color: #f7f7f7;
background-color: #6f6f6f;
}
.search-submit-wrapper
{
-webkit-border-radius: 0 15px 15px 0;
-moz-border-radius: 0 15px 15px 0;
border-radius: 0 15px 15px 0;
/* Old browsers */
/* FF3.6+ */
/* Chrome,Safari4+ */
/* Chrome10+,Safari5.1+ */
/* Opera11.10+ */
/* IE10+ */
/* W3C */
/*PIE*/
position: relative;
/* need this to workaround CSS3PIE known issue: http://css3pie.com/documentation/known-issues/#z-index */
float: left;
cursor: pointer;
border-top-right-radius: 15px;
border-bottom-right-radius: 15px;
background: #626262 url('Images/magnifying_glass.png') no-repeat center center;
background: url('Images/magnifying_glass.png') no-repeat center center, -moz-linear-gradient(top, #626262 0%, #373737 100%);
background: url('Images/magnifying_glass.png') no-repeat center center, -webkit-gradient(linear, left top, left bottom, color-stop(0%,#626262), color-stop(100%,#373737));
background: url('Images/magnifying_glass.png') no-repeat center center, -webkit-linear-gradient(top, #626262 0%, #373737 100%);
background: url('Images/magnifying_glass.png') no-repeat center center, -o-linear-gradient(top, #626262 0%,#373737 100%);
background: url('Images/magnifying_glass.png') no-repeat center center, -ms-linear-gradient(top, #626262 0%,#373737 100%);
background: url('Images/magnifying_glass.png') no-repeat center center, linear-gradient(top, #626262 0%,#373737 100%);
-pie-background: url('Skins/Default/Stylesheets/Images/magnifying_glass.png') no-repeat center center, linear-gradient(#626262, #373737);
border-left: solid 1px #363636;
background-color: #626262;
tooltip: Search;
}
.search-submit
{
width: 16px;
padding-left: 6px;
padding-right: 10px;
height: 28px;
}
/* placeholder */
/*#search-field::-webkit-input-placeholder { font-style: italic; }*/
/* webkit */
/*#search-field:-moz-placeholder { font-style: italic; }*/
/* mozilla */
#results-heading
{
padding-bottom: 10px;
color: #393f45;
font-size: 20px;
border-bottom: solid 1px #ebebeb;
format: 'Your search for {query} returned {total_results} result(s).';
}
#resultList,
#communityResultList
{
font-family: Arial;
margin: 0;
padding: 0;
list-style-image: none;
list-style-type: none;
}
#resultList li
{
margin-bottom: 16px;
}
#communityResultList
{
padding-left: 20px;
}
#communityResultList li
{
margin: 10px 0px;
}
#communityResultList a
{
text-decoration: none;
}
.title a:visited
{
color: #2200c1;
text-decoration: underline;
}
.title a:focus
{
color: #2200c1;
text-decoration: underline;
}
#communityResultList a:hover
{
text-decoration: underline;
}
.title a:hover
{
color: #2200c1;
text-decoration: underline;
}
.title a:active
{
color: #2200c1;
text-decoration: underline;
}
#resultList.communitySearch .title
{
display: none;
}
#resultList.communitySearch #communityResultList
{
padding: 0px;
}
.activityInfo
{
color: #666;
}
.activityInfo a
{
color: #666;
}
a.activityText
{
color: #000;
}
.activityTime
{
font-style: italic;
font-size: 11px;
color: #999;
margin-left: 3px;
}
.title
{
font-size: 16px;
font-weight: normal;
margin: 0 0 2px 0;
}
.title a
{
color: #2200c1;
text-decoration: underline;
}
.description
{
font-size: 13px;
}
.url cite
{
font-style: normal;
color: #0e774a;
font-size: 13px;
}
.ratingStarsContainer
{
color: #9C9C9C;
font-size: 13px;
}
.ratingStar
{
font-size: 0px;
background-image: url("Images/RatingStars.png");
padding: 12px 12px 0 0;
display: inline;
}
.ratingStarEmpty
{
}
.ratingStarFilled
{
background-position: -24px 0;
}
/**/
.needs-pie
{
behavior: url('Resources/Scripts/PIE.htc');
}
.tab-icon #TocTab.tabs-nav-active .tabs-nav-icon
{
background: url('Images/tocActive.png');
}
.tab-icon #TocTab .tabs-nav-icon
{
background: url('Images/tocInactive.png');
}
.tabs-nav li#TocTab
{
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li#TocTab.tabs-nav-active
{
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
text-shadow: 0px 1px 0px #ffffff;
}
.tab-icon #IndexTab.tabs-nav-active .tabs-nav-icon
{
background: url('Images/indexActive.png');
}
.tab-icon #IndexTab .tabs-nav-icon
{
background: url('Images/indexInactive.png');
}
.tabs-nav li#IndexTab
{
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li#IndexTab.tabs-nav-active
{
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
text-shadow: 0px 1px 0px #ffffff;
}
.tab-icon #GlossaryTab.tabs-nav-active .tabs-nav-icon
{
background: url('Images/glossaryActive.png');
}
.tab-icon #GlossaryTab .tabs-nav-icon
{
background: url('Images/glossaryInactive.png');
}
.tabs-nav li#GlossaryTab
{
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li#GlossaryTab.tabs-nav-active
{
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
text-shadow: 0px 1px 0px #ffffff;
}
.tab-icon #BrowseSequencesTab.tabs-nav-active .tabs-nav-icon
{
background: url('Images/browseActive.png');
}
.tab-icon #BrowseSequencesTab .tabs-nav-icon
{
background: url('Images/browseInactive.png');
}
.tabs-nav li#BrowseSequencesTab
{
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li#BrowseSequencesTab.tabs-nav-active
{
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
text-shadow: 0px 1px 0px #ffffff;
}
.tab-icon #CommunityTab.tabs-nav-active .tabs-nav-icon
{
background: url('Images/communityActive.png');
}
.tab-icon #CommunityTab .tabs-nav-icon
{
background: url('Images/communityInactive.png');
}
.tabs-nav li#CommunityTab
{
background: #707070;
background: -moz-linear-gradient(top, #707070 0%, #555555 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#707070), color-stop(100%,#555555));
background: -webkit-linear-gradient(top, #707070 0%, #555555 100%);
background: -o-linear-gradient(top, #707070 0%,#555555 100%);
background: -ms-linear-gradient(top, #707070 0%,#555555 100%);
background: linear-gradient(top, #707070 0%,#555555 100%);
-pie-background: linear-gradient(#707070, #555555);
}
.tabs-nav li#CommunityTab.tabs-nav-active
{
background: #f7f7f7;
background: -moz-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#f7f7f7));
background: -webkit-linear-gradient(top, #ffffff 0%, #f7f7f7 100%);
background: -o-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: -ms-linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
background: linear-gradient(top, #ffffff 0%,#f7f7f7 100%);
-pie-background: linear-gradient(#ffffff, #f7f7f7);
text-shadow: 0px 1px 0px #ffffff;
}
#toc.tabs-panel-content
{
background-color: #ffffff;
}
#index.tabs-panel-content
{
background-color: #ffffff;
}
#glossary.tabs-panel-content
{
background-color: #ffffff;
}
#browseSequences.tabs-panel-content
{
background-color: #ffffff;
}
#community.tabs-panel-content
{
background-color: #ffffff;
}
#search-glossary
{
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
#search-index
{
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.login-dialog-content input[type=text]
{
}
.login-dialog-content .profile-item-wrapper .email-notifications-group
{
background-color: #4a4a4a;
}