From 8088872b92cdd9b32c9c95649dab235955bf412d Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Wed, 16 Jan 2013 16:39:42 -0800 Subject: [PATCH] adding bootstrap layout. --- NzbDrone.Web/CassetteConfiguration.cs | 62 + NzbDrone.Web/Content2/ActionButton.css | 22 + .../Content2/Bootstrap/accordion.less | 34 + NzbDrone.Web/Content2/Bootstrap/alerts.less | 63 + .../Content2/Bootstrap/bootstrap.less | 62 + .../Content2/Bootstrap/breadcrumbs.less | 24 + NzbDrone.Web/Content2/Bootstrap/bundle.txt | 1 + .../Content2/Bootstrap/button-groups.less | 245 + NzbDrone.Web/Content2/Bootstrap/buttons.less | 231 + NzbDrone.Web/Content2/Bootstrap/carousel.less | 131 + NzbDrone.Web/Content2/Bootstrap/close.less | 31 + NzbDrone.Web/Content2/Bootstrap/code.less | 58 + .../Bootstrap/component-animations.less | 22 + .../Content2/Bootstrap/dropdowns.less | 210 + .../Content2/Bootstrap/font-awesome-ie7.less | 245 + .../Content2/Bootstrap/font-awesome.less | 329 + NzbDrone.Web/Content2/Bootstrap/forms.less | 650 + NzbDrone.Web/Content2/Bootstrap/grid.less | 21 + .../Content2/Bootstrap/hero-unit.less | 24 + .../Content2/Bootstrap/labels-badges.less | 72 + NzbDrone.Web/Content2/Bootstrap/layouts.less | 16 + NzbDrone.Web/Content2/Bootstrap/mixins.css | 27 + NzbDrone.Web/Content2/Bootstrap/mixins.less | 677 + NzbDrone.Web/Content2/Bootstrap/modals.less | 98 + NzbDrone.Web/Content2/Bootstrap/navbar.less | 475 + NzbDrone.Web/Content2/Bootstrap/navs.less | 383 + NzbDrone.Web/Content2/Bootstrap/pager.less | 40 + .../Content2/Bootstrap/pagination.less | 64 + NzbDrone.Web/Content2/Bootstrap/popovers.less | 117 + .../Content2/Bootstrap/progress-bars.less | 122 + NzbDrone.Web/Content2/Bootstrap/reset.less | 137 + .../Bootstrap/responsive-1200px-min.less | 28 + .../Bootstrap/responsive-767px-max.less | 174 + .../Bootstrap/responsive-768px-979px.less | 19 + .../Content2/Bootstrap/responsive-navbar.less | 177 + .../Bootstrap/responsive-utilities.less | 43 + .../Content2/Bootstrap/responsive.less | 48 + .../Content2/Bootstrap/scaffolding.less | 52 + NzbDrone.Web/Content2/Bootstrap/sprites.less | 193 + NzbDrone.Web/Content2/Bootstrap/tables.less | 245 + .../Content2/Bootstrap/thumbnails.less | 52 + NzbDrone.Web/Content2/Bootstrap/tooltip.less | 70 + NzbDrone.Web/Content2/Bootstrap/type.less | 221 + .../Content2/Bootstrap/utilities.less | 30 + NzbDrone.Web/Content2/Bootstrap/variables.css | 1 + .../Content2/Bootstrap/variables.less | 280 + .../Content2/Bootstrap/variables.min.css | 1 + NzbDrone.Web/Content2/Bootstrap/wells.less | 29 + .../media/css/jquery.dataTables.css | 318 + .../DataTables-NzbDrone/media/images/back.png | Bin 0 -> 210 bytes .../media/images/forward.png | Bin 0 -> 207 bytes .../media/images/sort_asc.png | Bin 0 -> 268 bytes .../media/images/sort_asc_disabled.png | Bin 0 -> 268 bytes .../media/images/sort_both.png | Bin 0 -> 1136 bytes .../media/images/sort_desc.png | Bin 0 -> 275 bytes .../media/images/sort_desc_disabled.png | Bin 0 -> 1045 bytes .../Content2/FancyBox/jquery.fancybox.css | 246 + .../Content2/FancyBox/jquery.fancybox.js | 1921 +++ NzbDrone.Web/Content2/Grid.css | 126 + .../Images/Indexers/FileSharingTalk.png | Bin 0 -> 152 bytes .../Content2/Images/Indexers/Newznab.png | Bin 0 -> 172 bytes .../Images/Indexers/Newznab_Nzbs.org.png | Bin 0 -> 198 bytes .../Images/Indexers/Newznab_dognzb.cr.png | Bin 0 -> 250 bytes .../Images/Indexers/Newznab_nzb.su.png | Bin 0 -> 136 bytes .../Content2/Images/Indexers/NzbClub.png | Bin 0 -> 603 bytes .../Content2/Images/Indexers/NzbIndex.png | Bin 0 -> 260 bytes .../Content2/Images/Indexers/NzbsRus.png | Bin 0 -> 264 bytes .../Content2/Images/Indexers/Unknown.png | Bin 0 -> 816 bytes .../Content2/Images/Indexers/WomblesIndex.png | Bin 0 -> 385 bytes .../Content2/Images/Indexers/nzbx.png | Bin 0 -> 665 bytes .../Content2/Images/Indexers/omgwtfnzbs.png | Bin 0 -> 491 bytes NzbDrone.Web/Content2/Images/ajax-loader.gif | Bin 0 -> 4782 bytes .../Content2/Images/apple-touch-icon-114.png | Bin 0 -> 2421 bytes .../Content2/Images/apple-touch-icon-144.png | Bin 0 -> 2752 bytes NzbDrone.Web/Content2/Images/azure.gif | Bin 0 -> 64185 bytes NzbDrone.Web/Content2/Images/background.jpg | Bin 0 -> 6462 bytes NzbDrone.Web/Content2/Images/gritter.png | Bin 0 -> 4880 bytes NzbDrone.Web/Content2/Images/icon_source.url | 2 + NzbDrone.Web/Content2/Images/icons.png | Bin 0 -> 2722 bytes NzbDrone.Web/Content2/Images/logo.png | Bin 0 -> 752 bytes NzbDrone.Web/Content2/Images/logo_small.png | Bin 0 -> 6895 bytes NzbDrone.Web/Content2/Images/spinner.gif | Bin 0 -> 60662 bytes NzbDrone.Web/Content2/Images/thetvdb.png | Bin 0 -> 541 bytes NzbDrone.Web/Content2/IndexerSettings.css | 142 + .../Intelisense/bootstrap-responsive.css | 1058 ++ .../Content2/Intelisense/bootstrap.css | 5774 ++++++++ NzbDrone.Web/Content2/Menu.css | 82 + NzbDrone.Web/Content2/Messages.css | 53 + .../New folder/jquery.lhpMegaImgViewer.1.1.js | 1088 ++ .../New folder/jquery.lhpMegaImgViewer.2.0.js | 1831 +++ NzbDrone.Web/Content2/NzbDrone.css | 324 + NzbDrone.Web/Content2/Overrides.css | 69 + NzbDrone.Web/Content2/QualitySettings.css | 140 + NzbDrone.Web/Content2/SeriesEditor.css | 73 + NzbDrone.Web/Content2/Settings.css | 154 + .../Content2/SmothZoomPan/smothzoompan.js | 2451 ++++ NzbDrone.Web/Content2/base.css | 20 + NzbDrone.Web/Content2/bootstrap-metro.css | 833 ++ NzbDrone.Web/Content2/bootstrap-overrides.css | 88 + NzbDrone.Web/Content2/file-browser.css | 19 + NzbDrone.Web/Content2/font-awesome-ie7.css | 645 + NzbDrone.Web/Content2/font-awesome.css | 303 + .../Content2/font/fontawesome-webfont.eot | Bin 0 -> 38708 bytes .../Content2/font/fontawesome-webfont.svg | 255 + .../Content2/font/fontawesome-webfont.ttf | Bin 0 -> 68476 bytes .../Content2/font/fontawesome-webfont.woff | Bin 0 -> 41752 bytes .../ui-bg_diagonals-thick_30_a32d00_40x40.png | Bin 0 -> 261 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_0_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_flat_100__40x100.png | Bin 0 -> 607 bytes .../images/ui-bg_flat_20_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_flat_30_065efe_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_flat_30_616161_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_30_b40404_40x100.png | Bin 0 -> 288 bytes .../images/ui-bg_flat_40_065efe_40x100.png | Bin 0 -> 182 bytes .../ui-bg_white-lines_10_000000_40x100.png | Bin 0 -> 202 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../jQueryUI/jquery-ui-1.8.16.custom.css | 568 + NzbDrone.Web/Content2/jquery.gritter.css | 134 + NzbDrone.Web/Content2/metro.blue.css | 830 ++ NzbDrone.Web/Content2/metro.css | 160 + NzbDrone.Web/Content2/stats.css | 36 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../Content2/themes/base/jquery-ui.css | 563 + .../themes/base/jquery.ui.accordion.css | 19 + .../Content2/themes/base/jquery.ui.all.css | 11 + .../themes/base/jquery.ui.autocomplete.css | 53 + .../Content2/themes/base/jquery.ui.base.css | 21 + .../Content2/themes/base/jquery.ui.button.css | 38 + .../Content2/themes/base/jquery.ui.core.css | 38 + .../themes/base/jquery.ui.datepicker.css | 68 + .../Content2/themes/base/jquery.ui.dialog.css | 21 + .../Content2/themes/base/jquery.ui.menu.css | 30 + .../themes/base/jquery.ui.progressbar.css | 11 + .../themes/base/jquery.ui.resizable.css | 20 + .../themes/base/jquery.ui.selectable.css | 10 + .../Content2/themes/base/jquery.ui.slider.css | 24 + .../themes/base/jquery.ui.spinner.css | 24 + .../Content2/themes/base/jquery.ui.tabs.css | 18 + .../Content2/themes/base/jquery.ui.theme.css | 247 + .../themes/base/jquery.ui.tooltip.css | 22 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../themes/base/minified/jquery-ui.min.css | 10 + .../base/minified/jquery.ui.accordion.min.css | 10 + .../base/minified/jquery.ui.all.min.css | 10 + .../minified/jquery.ui.autocomplete.min.css | 10 + .../base/minified/jquery.ui.base.min.css | 10 + .../base/minified/jquery.ui.button.min.css | 10 + .../base/minified/jquery.ui.core.min.css | 10 + .../minified/jquery.ui.datepicker.min.css | 10 + .../base/minified/jquery.ui.dialog.min.css | 10 + .../base/minified/jquery.ui.menu.min.css | 5 + .../minified/jquery.ui.progressbar.min.css | 10 + .../base/minified/jquery.ui.resizable.min.css | 10 + .../minified/jquery.ui.selectable.min.css | 10 + .../base/minified/jquery.ui.slider.min.css | 10 + .../base/minified/jquery.ui.spinner.min.css | 5 + .../base/minified/jquery.ui.tabs.min.css | 10 + .../base/minified/jquery.ui.theme.min.css | 12 + .../base/minified/jquery.ui.tooltip.min.css | 5 + .../Controllers/AddSeriesController.cs | 7 + NzbDrone.Web/NzbDrone.Web.csproj | 231 +- NzbDrone.Web/Scripts2/Metro/jquery.metro.js | 162 + NzbDrone.Web/Scripts2/Metro/tilt.js | 60 + NzbDrone.Web/Scripts2/MicrosoftAjax.debug.js | 7117 ++++++++++ NzbDrone.Web/Scripts2/MicrosoftAjax.js | 6 + .../Scripts2/MicrosoftMvcAjax.debug.js | 408 + NzbDrone.Web/Scripts2/MicrosoftMvcAjax.js | 25 + .../Scripts2/MicrosoftMvcValidation.debug.js | 883 ++ .../Scripts2/MicrosoftMvcValidation.js | 55 + NzbDrone.Web/Scripts2/bootstrap-mvc.js | 33 + NzbDrone.Web/Scripts2/bootstrap.js | 2027 +++ .../Scripts2/jquery-1.8.2.intellisense.js | 2494 ++++ NzbDrone.Web/Scripts2/jquery-1.8.2.js | 9440 +++++++++++++ NzbDrone.Web/Scripts2/jquery-ui-1.8.23.js | 11363 ++++++++++++++++ NzbDrone.Web/Scripts2/jquery.livequery.js | 226 + .../Scripts2/jquery.unobtrusive-ajax.js | 165 + .../Scripts2/jquery.validate-vsdoc.js | 1291 ++ NzbDrone.Web/Scripts2/jquery.validate.js | 1248 ++ .../Scripts2/jquery.validate.unobtrusive.js | 365 + NzbDrone.Web/Scripts2/modernizr-2.6.2.js | 1393 ++ NzbDrone.Web/Views/AddSeries/bt.cshtml | 6 + NzbDrone.Web/Views/Shared/_Bootstrap.cshtml | 90 + NzbDrone.Web/Views/Web.config | 5 +- NzbDrone.Web/Web.config | 16 +- NzbDrone.Web/packages.config | 6 + NzbDrone.ncrunchsolution | 1 + 213 files changed, 66623 insertions(+), 4 deletions(-) create mode 100644 NzbDrone.Web/CassetteConfiguration.cs create mode 100644 NzbDrone.Web/Content2/ActionButton.css create mode 100644 NzbDrone.Web/Content2/Bootstrap/accordion.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/alerts.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/bootstrap.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/breadcrumbs.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/bundle.txt create mode 100644 NzbDrone.Web/Content2/Bootstrap/button-groups.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/buttons.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/carousel.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/close.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/code.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/component-animations.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/dropdowns.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/font-awesome-ie7.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/font-awesome.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/forms.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/grid.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/hero-unit.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/labels-badges.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/layouts.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/mixins.css create mode 100644 NzbDrone.Web/Content2/Bootstrap/mixins.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/modals.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/navbar.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/navs.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/pager.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/pagination.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/popovers.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/progress-bars.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/reset.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive-1200px-min.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive-767px-max.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive-768px-979px.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive-navbar.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive-utilities.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/responsive.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/scaffolding.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/sprites.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/tables.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/thumbnails.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/tooltip.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/type.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/utilities.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/variables.css create mode 100644 NzbDrone.Web/Content2/Bootstrap/variables.less create mode 100644 NzbDrone.Web/Content2/Bootstrap/variables.min.css create mode 100644 NzbDrone.Web/Content2/Bootstrap/wells.less create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/css/jquery.dataTables.css create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/back.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/forward.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_asc.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_asc_disabled.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_both.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_desc.png create mode 100644 NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_desc_disabled.png create mode 100644 NzbDrone.Web/Content2/FancyBox/jquery.fancybox.css create mode 100644 NzbDrone.Web/Content2/FancyBox/jquery.fancybox.js create mode 100644 NzbDrone.Web/Content2/Grid.css create mode 100644 NzbDrone.Web/Content2/Images/Indexers/FileSharingTalk.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/Newznab.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/Newznab_Nzbs.org.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/Newznab_dognzb.cr.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/Newznab_nzb.su.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/NzbClub.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/NzbIndex.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/NzbsRus.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/Unknown.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/WomblesIndex.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/nzbx.png create mode 100644 NzbDrone.Web/Content2/Images/Indexers/omgwtfnzbs.png create mode 100644 NzbDrone.Web/Content2/Images/ajax-loader.gif create mode 100644 NzbDrone.Web/Content2/Images/apple-touch-icon-114.png create mode 100644 NzbDrone.Web/Content2/Images/apple-touch-icon-144.png create mode 100644 NzbDrone.Web/Content2/Images/azure.gif create mode 100644 NzbDrone.Web/Content2/Images/background.jpg create mode 100644 NzbDrone.Web/Content2/Images/gritter.png create mode 100644 NzbDrone.Web/Content2/Images/icon_source.url create mode 100644 NzbDrone.Web/Content2/Images/icons.png create mode 100644 NzbDrone.Web/Content2/Images/logo.png create mode 100644 NzbDrone.Web/Content2/Images/logo_small.png create mode 100644 NzbDrone.Web/Content2/Images/spinner.gif create mode 100644 NzbDrone.Web/Content2/Images/thetvdb.png create mode 100644 NzbDrone.Web/Content2/IndexerSettings.css create mode 100644 NzbDrone.Web/Content2/Intelisense/bootstrap-responsive.css create mode 100644 NzbDrone.Web/Content2/Intelisense/bootstrap.css create mode 100644 NzbDrone.Web/Content2/Menu.css create mode 100644 NzbDrone.Web/Content2/Messages.css create mode 100644 NzbDrone.Web/Content2/New folder/jquery.lhpMegaImgViewer.1.1.js create mode 100644 NzbDrone.Web/Content2/New folder/jquery.lhpMegaImgViewer.2.0.js create mode 100644 NzbDrone.Web/Content2/NzbDrone.css create mode 100644 NzbDrone.Web/Content2/Overrides.css create mode 100644 NzbDrone.Web/Content2/QualitySettings.css create mode 100644 NzbDrone.Web/Content2/SeriesEditor.css create mode 100644 NzbDrone.Web/Content2/Settings.css create mode 100644 NzbDrone.Web/Content2/SmothZoomPan/smothzoompan.js create mode 100644 NzbDrone.Web/Content2/base.css create mode 100644 NzbDrone.Web/Content2/bootstrap-metro.css create mode 100644 NzbDrone.Web/Content2/bootstrap-overrides.css create mode 100644 NzbDrone.Web/Content2/file-browser.css create mode 100644 NzbDrone.Web/Content2/font-awesome-ie7.css create mode 100644 NzbDrone.Web/Content2/font-awesome.css create mode 100644 NzbDrone.Web/Content2/font/fontawesome-webfont.eot create mode 100644 NzbDrone.Web/Content2/font/fontawesome-webfont.svg create mode 100644 NzbDrone.Web/Content2/font/fontawesome-webfont.ttf create mode 100644 NzbDrone.Web/Content2/font/fontawesome-webfont.woff create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_diagonals-thick_30_a32d00_40x40.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_0_ffffff_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_100__40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_20_ffffff_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_30_065efe_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_30_616161_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_30_b40404_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_flat_40_065efe_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-bg_white-lines_10_000000_40x100.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-icons_98d2fb_256x240.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-icons_9ccdfc_256x240.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/images/ui-icons_ffffff_256x240.png create mode 100644 NzbDrone.Web/Content2/jQueryUI/jquery-ui-1.8.16.custom.css create mode 100644 NzbDrone.Web/Content2/jquery.gritter.css create mode 100644 NzbDrone.Web/Content2/metro.blue.css create mode 100644 NzbDrone.Web/Content2/metro.css create mode 100644 NzbDrone.Web/Content2/stats.css create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-icons_222222_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-icons_454545_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-icons_888888_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/jquery-ui.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.accordion.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.all.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.autocomplete.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.base.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.button.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.core.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.datepicker.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.dialog.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.menu.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.progressbar.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.resizable.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.selectable.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.slider.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.spinner.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.tabs.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.theme.css create mode 100644 NzbDrone.Web/Content2/themes/base/jquery.ui.tooltip.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-icons_222222_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-icons_2e83ff_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-icons_454545_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-icons_888888_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/images/ui-icons_cd0a0a_256x240.png create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery-ui.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.accordion.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.all.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.autocomplete.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.base.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.button.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.core.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.datepicker.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.dialog.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.menu.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.progressbar.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.resizable.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.selectable.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.slider.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.spinner.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.tabs.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.theme.min.css create mode 100644 NzbDrone.Web/Content2/themes/base/minified/jquery.ui.tooltip.min.css create mode 100644 NzbDrone.Web/Scripts2/Metro/jquery.metro.js create mode 100644 NzbDrone.Web/Scripts2/Metro/tilt.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftAjax.debug.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftAjax.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftMvcAjax.debug.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftMvcAjax.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftMvcValidation.debug.js create mode 100644 NzbDrone.Web/Scripts2/MicrosoftMvcValidation.js create mode 100644 NzbDrone.Web/Scripts2/bootstrap-mvc.js create mode 100644 NzbDrone.Web/Scripts2/bootstrap.js create mode 100644 NzbDrone.Web/Scripts2/jquery-1.8.2.intellisense.js create mode 100644 NzbDrone.Web/Scripts2/jquery-1.8.2.js create mode 100644 NzbDrone.Web/Scripts2/jquery-ui-1.8.23.js create mode 100644 NzbDrone.Web/Scripts2/jquery.livequery.js create mode 100644 NzbDrone.Web/Scripts2/jquery.unobtrusive-ajax.js create mode 100644 NzbDrone.Web/Scripts2/jquery.validate-vsdoc.js create mode 100644 NzbDrone.Web/Scripts2/jquery.validate.js create mode 100644 NzbDrone.Web/Scripts2/jquery.validate.unobtrusive.js create mode 100644 NzbDrone.Web/Scripts2/modernizr-2.6.2.js create mode 100644 NzbDrone.Web/Views/AddSeries/bt.cshtml create mode 100644 NzbDrone.Web/Views/Shared/_Bootstrap.cshtml diff --git a/NzbDrone.Web/CassetteConfiguration.cs b/NzbDrone.Web/CassetteConfiguration.cs new file mode 100644 index 000000000..aefcb167c --- /dev/null +++ b/NzbDrone.Web/CassetteConfiguration.cs @@ -0,0 +1,62 @@ +using Cassette; +using Cassette.Scripts; +using Cassette.Stylesheets; + +namespace NzbDrone.Web +{ + /// + /// Configures the Cassette asset bundles for the web application. + /// + public class CassetteBundleConfiguration : IConfiguration + { + public const string JQUERY_BUNDLE = "jquery"; + public const string BASE_STYLE = "BASE_STYLE"; + public const string BASE_SCRIPT = "BASE_SCRIPT"; + public const string FONTS = "FONTS"; + public const string VALIDATION_SCRIPTS = "VALIDATION_SCRIPTS"; + public const string FILEBROWSER_SCRIPT = "FILEBROWSER_SCRIPT"; + public const string FILEBROWSER_STYLE = "FILEBROWSER_STYLE"; + + public void Configure(BundleCollection bundles) + { + bundles.AddUrlWithAlias("//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,400,600,300'", FONTS); + bundles.AddUrlWithAlias("//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", JQUERY_BUNDLE); + + + bundles.Add(BASE_STYLE, new[]{ + "content2\\Bootstrap\\bootstrap.less", + "content2\\Bootstrap\\responsive.less", + "content2\\bootstrap-metro.css", + "content2\\base.css", + "content2\\bootstrap-overrides.css"}, + bundle => bundle.AddReference("/" + FONTS)); + + bundles.Add(BASE_SCRIPT, new[]{ + "scripts2\\jquery.livequery.js", + "scripts2\\bootstrap-mvc.js", + "scripts2\\metro\\jquery.metro.js"}, + bundle => bundle.AddReference("/" + JQUERY_BUNDLE)); + + + bundles.Add(FILEBROWSER_STYLE, new[]{ + "content2\\stats.css", + "content2\\file-browser.css", + "content2\\FancyBox\\jquery.fancybox.css"}, + bundle => bundle.AddReference("/" + BASE_STYLE)); + + bundles.Add(FILEBROWSER_SCRIPT, new[]{ + "content2\\FancyBox\\jquery.fancybox.js"}, + bundle => bundle.AddReference("/" + BASE_SCRIPT)); + + bundles.Add(VALIDATION_SCRIPTS, new[]{ + "scripts2\\jquery.livequery.js", + "scripts2\\jquery.validate.js", + "scripts2\\jquery.validate.unobtrusive.js", + "scripts2\\bootstrap-mvc.js"}, + bundle => bundle.AddReference("/" + BASE_SCRIPT)); + + + + } + } +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/ActionButton.css b/NzbDrone.Web/Content2/ActionButton.css new file mode 100644 index 000000000..4727720a2 --- /dev/null +++ b/NzbDrone.Web/Content2/ActionButton.css @@ -0,0 +1,22 @@ +.actionButton +{ + margin: 5px; + padding: 2px 5px; + background-repeat: no-repeat; + background-position: 5px center; + background-color: #cccccc; + display: inline-block; + font-size: 15px; +} + +.actionButton img +{ + cursor: pointer; + vertical-align: middle; + position: relative; + bottom: 3px; +} + +.delete +{ +} diff --git a/NzbDrone.Web/Content2/Bootstrap/accordion.less b/NzbDrone.Web/Content2/Bootstrap/accordion.less new file mode 100644 index 000000000..c13c7be26 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/accordion.less @@ -0,0 +1,34 @@ +// +// Accordion +// -------------------------------------------------- + + +// Parent container +.accordion { + margin-bottom: @baseLineHeight; +} + +// Group == heading + body +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + .border-radius(4px); +} +.accordion-heading { + border-bottom: 0; +} +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +// General toggle styles +.accordion-toggle { + cursor: pointer; +} + +// Inner needs the styles because you can't animate properly with any styles on the element +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/alerts.less b/NzbDrone.Web/Content2/Bootstrap/alerts.less new file mode 100644 index 000000000..7fc116ab8 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/alerts.less @@ -0,0 +1,63 @@ +// +// Alerts +// -------------------------------------------------- + + +// Base styles +// ------------------------- + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: @baseLineHeight; + background-color: @warningBackground; + border: 1px solid @warningBorder; + color: @warningText; +} +.alert h4 { + margin: 0; +} + +// Adjust close link position +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: @baseLineHeight; +} + + +// Alternate styles +// ------------------------- + +.alert-success { + background-color: @successBackground; + border-color: @successBorder; + color: @successText; +} +.alert-danger, +.alert-error { + background-color: @errorBackground; + border-color: @errorBorder; + color: @errorText; +} +.alert-info { + background-color: @infoBackground; + border-color: @infoBorder; + color: @infoText; +} + + +// Block alerts +// ------------------------- + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} +.alert-block p + p { + margin-top: 5px; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/bootstrap.less b/NzbDrone.Web/Content2/Bootstrap/bootstrap.less new file mode 100644 index 000000000..30f96a6ca --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/bootstrap.less @@ -0,0 +1,62 @@ +/*! + * Bootstrap v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +// CSS Reset +@import "reset.less"; + +// Core variables and mixins +@import "variables.less"; // Modify this for custom colors, font-sizes, etc +@import "mixins.less"; + +// Grid system and page structure +@import "scaffolding.less"; +@import "grid.less"; +@import "layouts.less"; + +// Base CSS +@import "type.less"; +@import "code.less"; +@import "forms.less"; +@import "tables.less"; + +// Components: common +@import "font-awesome.less"; +@import "dropdowns.less"; +@import "wells.less"; +@import "component-animations.less"; +@import "close.less"; + +// Components: Buttons & Alerts +@import "buttons.less"; +@import "button-groups.less"; +@import "alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less + +// Components: Nav +@import "navs.less"; +@import "navbar.less"; +@import "breadcrumbs.less"; +@import "pagination.less"; +@import "pager.less"; + +// Components: Popovers +@import "modals.less"; +@import "tooltip.less"; +@import "popovers.less"; + +// Components: Misc +@import "thumbnails.less"; +@import "labels-badges.less"; +@import "progress-bars.less"; +@import "accordion.less"; +@import "carousel.less"; +@import "hero-unit.less"; + +// Utility classes +@import "utilities.less"; // Has to be last to override when necessary diff --git a/NzbDrone.Web/Content2/Bootstrap/breadcrumbs.less b/NzbDrone.Web/Content2/Bootstrap/breadcrumbs.less new file mode 100644 index 000000000..fd269b31a --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/breadcrumbs.less @@ -0,0 +1,24 @@ +// +// Breadcrumbs +// -------------------------------------------------- + + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 @baseLineHeight; + list-style: none; + background-color: #f5f5f5; + .border-radius(4px); + li { + display: inline-block; + .ie7-inline-block(); + text-shadow: 0 1px 0 @white; + } + .divider { + padding: 0 5px; + color: #ccc; + } + .active { + color: @grayLight; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/bundle.txt b/NzbDrone.Web/Content2/Bootstrap/bundle.txt new file mode 100644 index 000000000..a6ea4c21e --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/bundle.txt @@ -0,0 +1 @@ +bootstrap.less \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/button-groups.less b/NzbDrone.Web/Content2/Bootstrap/button-groups.less new file mode 100644 index 000000000..62e53f373 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/button-groups.less @@ -0,0 +1,245 @@ +// +// Button groups +// -------------------------------------------------- + + +// Make the div behave like a button +.btn-group { + position: relative; + font-size: 0; // remove as part 1 of font-size inline-block hack + vertical-align: middle; // match .btn alignment given font-size hack above + white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) + .ie7-restore-left-whitespace(); +} + +// Space out series of button groups +.btn-group + .btn-group { + margin-left: 5px; +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + font-size: 0; // Hack to remove whitespace that results from using inline-block + margin-top: @baseLineHeight / 2; + margin-bottom: @baseLineHeight / 2; + .btn-group { + display: inline-block; + .ie7-inline-block(); + } + .btn + .btn, + .btn-group + .btn, + .btn + .btn-group { + margin-left: 5px; + } +} + +// Float them, remove border radius, then re-add to first and last elements +.btn-group > .btn { + position: relative; + .border-radius(0); +} +.btn-group > .btn + .btn { + margin-left: -1px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu { + font-size: @baseFontSize; // redeclare as part 2 of font-size inline-block hack +} + +// Reset fonts for other sizes +.btn-group > .btn-mini { + font-size: 11px; +} +.btn-group > .btn-small { + font-size: 12px; +} +.btn-group > .btn-large { + font-size: 16px; +} + +// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +// Reset corners for large buttons +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 6px; +} + +// On hover/focus/active, bring the proper btn to front +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +// On active and open, don't show outline +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + + + +// Split button dropdowns +// ---------------------- + +// Give the line between buttons some depth +.btn-group > .btn + .dropdown-toggle { + padding-left: 8px; + padding-right: 8px; + .box-shadow(inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group > .btn-mini + .dropdown-toggle { + padding-left: 5px; + padding-right: 5px; + *padding-top: 2px; + *padding-bottom: 2px; +} +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} +.btn-group > .btn-large + .dropdown-toggle { + padding-left: 12px; + padding-right: 12px; + *padding-top: 7px; + *padding-bottom: 7px; +} + +.btn-group.open { + + // The clickable button for toggling the menu + // Remove the gradient and set the same inset shadow as the :active state + .dropdown-toggle { + background-image: none; + .box-shadow(inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)); + } + + // Keep the hover's background when dropdown is open + .btn.dropdown-toggle { + background-color: @btnBackgroundHighlight; + } + .btn-primary.dropdown-toggle { + background-color: @btnPrimaryBackgroundHighlight; + } + .btn-warning.dropdown-toggle { + background-color: @btnWarningBackgroundHighlight; + } + .btn-danger.dropdown-toggle { + background-color: @btnDangerBackgroundHighlight; + } + .btn-success.dropdown-toggle { + background-color: @btnSuccessBackgroundHighlight; + } + .btn-info.dropdown-toggle { + background-color: @btnInfoBackgroundHighlight; + } + .btn-inverse.dropdown-toggle { + background-color: @btnInverseBackgroundHighlight; + } +} + + +// Reposition the caret +.btn .caret { + margin-top: 8px; + margin-left: 0; +} +// Carets in other button sizes +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} +.btn-large .caret { + border-left-width: 5px; + border-right-width: 5px; + border-top-width: 5px; +} +// Upside down carets for .dropup +.dropup .btn-large .caret { + border-bottom: 5px solid @black; + border-top: 0; +} + + + +// Account for other colors +.btn-primary, +.btn-warning, +.btn-danger, +.btn-info, +.btn-success, +.btn-inverse { + .caret { + border-top-color: @white; + border-bottom-color: @white; + } +} + + + +// Vertical button groups +// ---------------------- + +.btn-group-vertical { + display: inline-block; // makes buttons only take up the width they need + .ie7-inline-block(); +} +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + .border-radius(0); +} +.btn-group-vertical .btn + .btn { + margin-left: 0; + margin-top: -1px; +} +.btn-group-vertical .btn:first-child { + .border-radius(4px 4px 0 0); +} +.btn-group-vertical .btn:last-child { + .border-radius(0 0 4px 4px); +} +.btn-group-vertical .btn-large:first-child { + .border-radius(6px 6px 0 0); +} +.btn-group-vertical .btn-large:last-child { + .border-radius(0 0 6px 6px); +} diff --git a/NzbDrone.Web/Content2/Bootstrap/buttons.less b/NzbDrone.Web/Content2/Bootstrap/buttons.less new file mode 100644 index 000000000..3fd1e95f5 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/buttons.less @@ -0,0 +1,231 @@ +// +// Buttons +// -------------------------------------------------- + + +// Base styles +// -------------------------------------------------- + +// Core +.btn { + display: inline-block; + .ie7-inline-block(); + padding: 4px 14px; + margin-bottom: 0; // For input.btn + font-size: @baseFontSize; + line-height: @baseLineHeight; + *line-height: @baseLineHeight; + text-align: center; + vertical-align: middle; + cursor: pointer; + .buttonBackground(@btnBackground, @btnBackgroundHighlight, @grayDark, 0 1px 1px rgba(255,255,255,.75)); + border: 1px solid @btnBorder; + *border: 0; // Remove the border to prevent IE7's black border on input:focus + border-bottom-color: darken(@btnBorder, 10%); + .border-radius(4px); + .ie7-restore-left-whitespace(); // Give IE7 some love + .box-shadow(inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)); + + // Hover state + &:hover { + color: @grayDark; + text-decoration: none; + background-color: darken(@white, 10%); + *background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */ + background-position: 0 -15px; + + // transition is only when going to hover, otherwise the background + // behind the gradient (there for IE<=9 fallback) gets mismatched + .transition(background-position .1s linear); + } + + // Focus state for keyboard and accessibility + &:focus { + .tab-focus(); + } + + // Active state + &.active, + &:active { + background-color: darken(@white, 10%); + background-color: darken(@white, 15%) e("\9"); + background-image: none; + outline: 0; + .box-shadow(inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)); + } + + // Disabled state + &.disabled, + &[disabled] { + cursor: default; + background-color: darken(@white, 10%); + background-image: none; + .opacity(65); + .box-shadow(none); + } + +} + + + +// Button Sizes +// -------------------------------------------------- + +// Large +.btn-large { + padding: 9px 14px; + font-size: @baseFontSize + 2px; + line-height: normal; + .border-radius(5px); +} +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +// Small +.btn-small { + padding: 3px 9px; + font-size: @baseFontSize - 2px; + line-height: @baseLineHeight - 2px; +} +.btn-small [class^="icon-"] { + margin-top: 0; +} + +// Mini +.btn-mini { + padding: 2px 6px; + font-size: @baseFontSize - 3px; + line-height: @baseLineHeight - 3px; +} + + +// Block button +// ------------------------- + +.btn-block { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + .box-sizing(border-box); +} + +// Vertically space out multiple block buttons +.btn-block + .btn-block { + margin-top: 5px; +} + +// Specificity overrides +input[type="submit"], +input[type="reset"], +input[type="button"] { + &.btn-block { + width: 100%; + } +} + + + +// Alternate buttons +// -------------------------------------------------- + +// Provide *some* extra contrast for those who can get it +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255,255,255,.75); +} + +// Set the backgrounds +// ------------------------- +.btn { + // reset here as of 2.0.3 due to Recess property order + border-color: #c5c5c5; + border-color: rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25); +} +.btn-primary { + .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight); +} +// Warning appears are orange +.btn-warning { + .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight); +} +// Danger and error appear as red +.btn-danger { + .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight); +} +// Success appears as green +.btn-success { + .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight); +} +// Info appears as a neutral blue +.btn-info { + .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight); +} +// Inverse appears as dark gray +.btn-inverse { + .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight); +} + + +// Cross-browser Jank +// -------------------------------------------------- + +button.btn, +input[type="submit"].btn { + + // Firefox 3.6 only I believe + &::-moz-focus-inner { + padding: 0; + border: 0; + } + + // IE7 has some default padding on button controls + *padding-top: 3px; + *padding-bottom: 3px; + + &.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; + } + &.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; + } + &.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; + } +} + + +// Link buttons +// -------------------------------------------------- + +// Make a button look and behave like a link +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + .box-shadow(none); +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: @linkColor; + .border-radius(0); +} +.btn-link:hover { + color: @linkColorHover; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover { + color: @grayDark; + text-decoration: none; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/carousel.less b/NzbDrone.Web/Content2/Bootstrap/carousel.less new file mode 100644 index 000000000..33f98ac4d --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/carousel.less @@ -0,0 +1,131 @@ +// +// Carousel +// -------------------------------------------------- + + +.carousel { + position: relative; + margin-bottom: @baseLineHeight; + line-height: 1; +} + +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} + +.carousel { + + .item { + display: none; + position: relative; + .transition(.6s ease-in-out left); + } + + // Account for jankitude on images + .item > img { + display: block; + line-height: 1; + } + + .active, + .next, + .prev { display: block; } + + .active { + left: 0; + } + + .next, + .prev { + position: absolute; + top: 0; + width: 100%; + } + + .next { + left: 100%; + } + .prev { + left: -100%; + } + .next.left, + .prev.right { + left: 0; + } + + .active.left { + left: -100%; + } + .active.right { + left: 100%; + } + +} + +// Left/right controls for nav +// --------------------------- + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: @white; + text-align: center; + background: @grayDarker; + border: 3px solid @white; + .border-radius(23px); + .opacity(50); + + // we can't have this transition here + // because webkit cancels the carousel + // animation if you trip this while + // in the middle of another animation + // ;_; + // .transition(opacity .2s linear); + + // Reposition the right one + &.right { + left: auto; + right: 15px; + } + + // Hover state + &:hover { + color: @white; + text-decoration: none; + .opacity(90); + } +} + + +// Caption for text below images +// ----------------------------- + +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 15px; + background: @grayDark; + background: rgba(0,0,0,.75); +} +.carousel-caption h4, +.carousel-caption p { + color: @white; + line-height: @baseLineHeight; +} +.carousel-caption h4 { + margin: 0 0 5px; +} +.carousel-caption p { + margin-bottom: 0; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/close.less b/NzbDrone.Web/Content2/Bootstrap/close.less new file mode 100644 index 000000000..c71a508f3 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/close.less @@ -0,0 +1,31 @@ +// +// Close icons +// -------------------------------------------------- + + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: @baseLineHeight; + color: @black; + text-shadow: 0 1px 0 rgba(255,255,255,1); + .opacity(20); + &:hover { + color: @black; + text-decoration: none; + cursor: pointer; + .opacity(40); + } +} + +// Additional properties for button version +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/code.less b/NzbDrone.Web/Content2/Bootstrap/code.less new file mode 100644 index 000000000..f1851a074 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/code.less @@ -0,0 +1,58 @@ +// +// Code (inline and blocK) +// -------------------------------------------------- + + +// Inline and block code styles +code, +pre { + padding: 0 3px 2px; + #font > #family > .monospace; + font-size: @baseFontSize - 2; + color: @grayDark; + .border-radius(3px); +} + +// Inline code +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +// Blocks of code +pre { + display: block; + padding: (@baseLineHeight - 1) / 2; + margin: 0 0 @baseLineHeight / 2; + font-size: @baseFontSize - 1; // 14px to 13px + line-height: @baseLineHeight; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; // fallback for IE7-8 + border: 1px solid rgba(0,0,0,.15); + .border-radius(4px); + + // Make prettyprint styles more spaced out for readability + &.prettyprint { + margin-bottom: @baseLineHeight; + } + + // Account for some code outputs that place code tags in pre tags + code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; + } +} + +// Enable scrollable blocks of code +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/component-animations.less b/NzbDrone.Web/Content2/Bootstrap/component-animations.less new file mode 100644 index 000000000..d614263a7 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/component-animations.less @@ -0,0 +1,22 @@ +// +// Component animations +// -------------------------------------------------- + + +.fade { + opacity: 0; + .transition(opacity .15s linear); + &.in { + opacity: 1; + } +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + .transition(height .35s ease); + &.in { + height: auto; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/dropdowns.less b/NzbDrone.Web/Content2/Bootstrap/dropdowns.less new file mode 100644 index 000000000..390c37497 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/dropdowns.less @@ -0,0 +1,210 @@ +// +// Dropdown menus +// -------------------------------------------------- + + +// Use the .menu class on any
  • element within the topbar or ul.tabs and you'll get some superfancy dropdowns +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle { + // The caret makes the toggle a bit too tall in IE7 + *margin-bottom: -3px; +} +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +// Dropdown arrow/caret +// -------------------- +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid @black; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +// Place the caret +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +// The dropdown menu (ul) +// ---------------------- +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: @zindexDropdown; + display: none; // none by default, but block on "open" of the menu + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; // override default ul + list-style: none; + background-color: @dropdownBackground; + border: 1px solid #ccc; // Fallback for IE7-8 + border: 1px solid @dropdownBorder; + *border-right-width: 2px; + *border-bottom-width: 2px; + .border-radius(6px); + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + + // Aligns the dropdown menu to right + &.pull-right { + right: 0; + left: auto; + } + + // Dividers (basically an hr) within the dropdown + .divider { + .nav-divider(@dropdownDividerTop, @dropdownDividerBottom); + } + + // Links within the dropdown menu + a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: @baseLineHeight; + color: @dropdownLinkColor; + white-space: nowrap; + } +} + +// Hover state +// ----------- +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + text-decoration: none; + color: @dropdownLinkColorHover; + background-color: @dropdownLinkBackgroundHover; + #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%)); +} + +// Active state +// ------------ +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: @dropdownLinkColorHover; + text-decoration: none; + outline: 0; + background-color: @dropdownLinkBackgroundActive; + #gradient > .vertical(@dropdownLinkBackgroundActive, darken(@dropdownLinkBackgroundActive, 5%)); +} + +// Disabled state +// -------------- +// Gray out text and ensure the hover state remains gray +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: @grayLight; +} +// Nuke hover effects +.dropdown-menu .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} + +// Open state for the dropdown +// --------------------------- +.open { + // IE7's z-index only goes to the nearest positioned ancestor, which would + // make the menu appear below buttons that appeared later on the page + *z-index: @zindexDropdown; + + & > .dropdown-menu { + display: block; + } +} + +// Right aligned dropdowns +// --------------------------- +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// ------------------------------------------------------ +// Just add .dropup after the standard .dropdown class and you're set, bro. +// TODO: abstract this so that the navbar fixed styles are not placed here? +.dropup, +.navbar-fixed-bottom .dropdown { + // Reverse the caret + .caret { + border-top: 0; + border-bottom: 4px solid @black; + content: ""; + } + // Different positioning for bottom up menu + .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; + } +} + +// Sub menus +// --------------------------- +.dropdown-submenu { + position: relative; +} +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: darken(@dropdownBackground, 20%); + margin-top: 5px; + margin-right: -10px; +} +.dropdown-submenu:hover > a:after { + border-left-color: @dropdownLinkColorHover; +} + + +// Tweak nav headers +// ----------------- +// Increase padding from 15px to 20px on sides +.dropdown .dropdown-menu .nav-header { + padding-left: 20px; + padding-right: 20px; +} + +// Typeahead +// --------- +.typeahead { + margin-top: 2px; // give it some space to breathe + .border-radius(4px); +} diff --git a/NzbDrone.Web/Content2/Bootstrap/font-awesome-ie7.less b/NzbDrone.Web/Content2/Bootstrap/font-awesome-ie7.less new file mode 100644 index 000000000..c1a7084c8 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/font-awesome-ie7.less @@ -0,0 +1,245 @@ +[class^="icon-"], +[class*=" icon-"] { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; +} + +.btn.dropdown-toggle [class^="icon-"], .btn.dropdown-toggle [class*=" icon-"] { +/* keeps button heights with and without icons the same */ + line-height: 1.4em; +} + +.icon-large { + font-size: 1.3333em; +} + +.ie7icon(@inner) { + *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner} ')"; +} + +.icon-glass { .ie7icon(''); } +.icon-music { .ie7icon(''); } +.icon-search { .ie7icon(''); } +.icon-envelope { .ie7icon(''); } +.icon-heart { .ie7icon(''); } +.icon-star { .ie7icon(''); } +.icon-star-empty { .ie7icon(''); } +.icon-user { .ie7icon(''); } +.icon-film { .ie7icon(''); } +.icon-th-large { .ie7icon(''); } +.icon-th { .ie7icon(''); } +.icon-th-list { .ie7icon(''); } +.icon-ok { .ie7icon(''); } +.icon-remove { .ie7icon(''); } +.icon-zoom-in { .ie7icon(''); } + +.icon-zoom-out { .ie7icon(''); } +.icon-off { .ie7icon(''); } +.icon-signal { .ie7icon(''); } +.icon-cog { .ie7icon(''); } +.icon-trash { .ie7icon(''); } +.icon-home { .ie7icon(''); } +.icon-file { .ie7icon(''); } +.icon-time { .ie7icon(''); } +.icon-road { .ie7icon(''); } +.icon-download-alt { .ie7icon(''); } +.icon-download { .ie7icon(''); } +.icon-upload { .ie7icon(''); } +.icon-inbox { .ie7icon(''); } +.icon-play-circle { .ie7icon(''); } +.icon-repeat { .ie7icon(''); } + +.icon-refresh { .ie7icon(''); } +.icon-list-alt { .ie7icon(''); } +.icon-lock { .ie7icon(''); } +.icon-flag { .ie7icon(''); } +.icon-headphones { .ie7icon(''); } +.icon-volume-off { .ie7icon(''); } +.icon-volume-down { .ie7icon(''); } +.icon-volume-up { .ie7icon(''); } +.icon-qrcode { .ie7icon(''); } +.icon-barcode { .ie7icon(''); } +.icon-tag { .ie7icon(''); } +.icon-tags { .ie7icon(''); } +.icon-book { .ie7icon(''); } +.icon-bookmark { .ie7icon(''); } +.icon-print { .ie7icon(''); } + +.icon-camera { .ie7icon(''); } +.icon-font { .ie7icon(''); } +.icon-bold { .ie7icon(''); } +.icon-italic { .ie7icon(''); } +.icon-text-height { .ie7icon(''); } +.icon-text-width { .ie7icon(''); } +.icon-align-left { .ie7icon(''); } +.icon-align-center { .ie7icon(''); } +.icon-align-right { .ie7icon(''); } +.icon-align-justify { .ie7icon(''); } +.icon-list { .ie7icon(''); } +.icon-indent-left { .ie7icon(''); } +.icon-indent-right { .ie7icon(''); } +.icon-facetime-video { .ie7icon(''); } +.icon-picture { .ie7icon(''); } + +.icon-pencil { .ie7icon(''); } +.icon-map-marker { .ie7icon(''); } +.icon-adjust { .ie7icon(''); } +.icon-tint { .ie7icon(''); } +.icon-edit { .ie7icon(''); } +.icon-share { .ie7icon(''); } +.icon-check { .ie7icon(''); } +.icon-move { .ie7icon(''); } +.icon-step-backward { .ie7icon(''); } +.icon-fast-backward { .ie7icon(''); } +.icon-backward { .ie7icon(''); } +.icon-play { .ie7icon(''); } +.icon-pause { .ie7icon(''); } +.icon-stop { .ie7icon(''); } +.icon-forward { .ie7icon(''); } + +.icon-fast-forward { .ie7icon(''); } +.icon-step-forward { .ie7icon(''); } +.icon-eject { .ie7icon(''); } +.icon-chevron-left { .ie7icon(''); } +.icon-chevron-right { .ie7icon(''); } +.icon-plus-sign { .ie7icon(''); } +.icon-minus-sign { .ie7icon(''); } +.icon-remove-sign { .ie7icon(''); } +.icon-ok-sign { .ie7icon(''); } +.icon-question-sign { .ie7icon(''); } +.icon-info-sign { .ie7icon(''); } +.icon-screenshot { .ie7icon(''); } +.icon-remove-circle { .ie7icon(''); } +.icon-ok-circle { .ie7icon(''); } +.icon-ban-circle { .ie7icon(''); } + +.icon-arrow-left { .ie7icon(''); } +.icon-arrow-right { .ie7icon(''); } +.icon-arrow-up { .ie7icon(''); } +.icon-arrow-down { .ie7icon(''); } +.icon-share-alt { .ie7icon(''); } +.icon-resize-full { .ie7icon(''); } +.icon-resize-small { .ie7icon(''); } +.icon-plus { .ie7icon(''); } +.icon-minus { .ie7icon(''); } +.icon-asterisk { .ie7icon(''); } +.icon-exclamation-sign { .ie7icon(''); } +.icon-gift { .ie7icon(''); } +.icon-leaf { .ie7icon(''); } +.icon-fire { .ie7icon(''); } +.icon-eye-open { .ie7icon(''); } + +.icon-eye-close { .ie7icon(''); } +.icon-warning-sign { .ie7icon(''); } +.icon-plane { .ie7icon(''); } +.icon-calendar { .ie7icon(''); } +.icon-random { .ie7icon(''); } +.icon-comment { .ie7icon(''); } +.icon-magnet { .ie7icon(''); } +.icon-chevron-up { .ie7icon(''); } +.icon-chevron-down { .ie7icon(''); } +.icon-retweet { .ie7icon(''); } +.icon-shopping-cart { .ie7icon(''); } +.icon-folder-close { .ie7icon(''); } +.icon-folder-open { .ie7icon(''); } +.icon-resize-vertical { .ie7icon(''); } +.icon-resize-horizontal { .ie7icon(''); } + +.icon-bar-chart { .ie7icon(''); } +.icon-twitter-sign { .ie7icon(''); } +.icon-facebook-sign { .ie7icon(''); } +.icon-camera-retro { .ie7icon(''); } +.icon-key { .ie7icon(''); } +.icon-cogs { .ie7icon(''); } +.icon-comments { .ie7icon(''); } +.icon-thumbs-up { .ie7icon(''); } +.icon-thumbs-down { .ie7icon(''); } +.icon-star-half { .ie7icon(''); } +.icon-heart-empty { .ie7icon(''); } +.icon-signout { .ie7icon(''); } +.icon-linkedin-sign { .ie7icon(''); } +.icon-pushpin { .ie7icon(''); } +.icon-external-link { .ie7icon(''); } + +.icon-signin { .ie7icon(''); } +.icon-trophy { .ie7icon(''); } +.icon-github-sign { .ie7icon(''); } +.icon-upload-alt { .ie7icon(''); } +.icon-lemon { .ie7icon(''); } +.icon-phone { .ie7icon(''); } +.icon-check-empty { .ie7icon(''); } +.icon-bookmark-empty { .ie7icon(''); } +.icon-phone-sign { .ie7icon(''); } +.icon-twitter { .ie7icon(''); } +.icon-facebook { .ie7icon(''); } +.icon-github { .ie7icon(''); } +.icon-unlock { .ie7icon(''); } +.icon-credit-card { .ie7icon(''); } +.icon-rss { .ie7icon(''); } + +.icon-hdd { .ie7icon(''); } +.icon-bullhorn { .ie7icon(''); } +.icon-bell { .ie7icon(''); } +.icon-certificate { .ie7icon(''); } +.icon-hand-right { .ie7icon(''); } +.icon-hand-left { .ie7icon(''); } +.icon-hand-up { .ie7icon(''); } +.icon-hand-down { .ie7icon(''); } +.icon-circle-arrow-left { .ie7icon(''); } +.icon-circle-arrow-right { .ie7icon(''); } +.icon-circle-arrow-up { .ie7icon(''); } +.icon-circle-arrow-down { .ie7icon(''); } +.icon-globe { .ie7icon(''); } +.icon-wrench { .ie7icon(''); } +.icon-tasks { .ie7icon(''); } + +.icon-filter { .ie7icon(''); } +.icon-briefcase { .ie7icon(''); } +.icon-fullscreen { .ie7icon(''); } + +.icon-group { .ie7icon(''); } +.icon-link { .ie7icon(''); } +.icon-cloud { .ie7icon(''); } +.icon-beaker { .ie7icon(''); } +.icon-cut { .ie7icon(''); } +.icon-copy { .ie7icon(''); } +.icon-paper-clip { .ie7icon(''); } +.icon-save { .ie7icon(''); } +.icon-sign-blank { .ie7icon(''); } +.icon-reorder { .ie7icon(''); } +.icon-list-ul { .ie7icon(''); } +.icon-list-ol { .ie7icon(''); } +.icon-strikethrough { .ie7icon(''); } +.icon-underline { .ie7icon(''); } +.icon-table { .ie7icon(''); } + +.icon-magic { .ie7icon(''); } +.icon-truck { .ie7icon(''); } +.icon-pinterest { .ie7icon(''); } +.icon-pinterest-sign { .ie7icon(''); } +.icon-google-plus-sign { .ie7icon(''); } +.icon-google-plus { .ie7icon(''); } +.icon-money { .ie7icon(''); } +.icon-caret-down { .ie7icon(''); } +.icon-caret-up { .ie7icon(''); } +.icon-caret-left { .ie7icon(''); } +.icon-caret-right { .ie7icon(''); } +.icon-columns { .ie7icon(''); } +.icon-sort { .ie7icon(''); } +.icon-sort-down { .ie7icon(''); } +.icon-sort-up { .ie7icon(''); } + +.icon-envelope-alt { .ie7icon(''); } +.icon-linkedin { .ie7icon(''); } +.icon-undo { .ie7icon(''); } +.icon-legal { .ie7icon(''); } +.icon-dashboard { .ie7icon(''); } +.icon-comment-alt { .ie7icon(''); } +.icon-comments-alt { .ie7icon(''); } +.icon-bolt { .ie7icon(''); } +.icon-sitemap { .ie7icon(''); } +.icon-umbrella { .ie7icon(''); } +.icon-paste { .ie7icon(''); } + +.icon-user-md { .ie7icon(''); } diff --git a/NzbDrone.Web/Content2/Bootstrap/font-awesome.less b/NzbDrone.Web/Content2/Bootstrap/font-awesome.less new file mode 100644 index 000000000..45f69edb6 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/font-awesome.less @@ -0,0 +1,329 @@ +/* Font Awesome + the iconic font designed for use with Twitter Bootstrap + ------------------------------------------------------- + The full suite of pictographic icons, examples, and documentation + can be found at: http://fortawesome.github.com/Font-Awesome/ + + License + ------------------------------------------------------- + The Font Awesome webfont, CSS, and LESS files are licensed under CC BY 3.0: + http://creativecommons.org/licenses/by/3.0/ A mention of + 'Font Awesome - http://fortawesome.github.com/Font-Awesome' in human-readable + source code is considered acceptable attribution (most common on the web). + If human readable source code is not available to the end user, a mention in + an 'About' or 'Credits' screen is considered acceptable (most common in desktop + or mobile software). + + Contact + ------------------------------------------------------- + Email: dave@davegandy.com + Twitter: http://twitter.com/fortaweso_me + Work: Lead Product Designer @ http://kyruus.com + + */ + +@fontAwesomePath: '../font'; + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fontAwesomePath}/fontawesome-webfont.eot'); + src: url('@{fontAwesomePath}/fontawesome-webfont.eot?#iefix') format('embedded-opentype'), + url('@{fontAwesomePath}/fontawesome-webfont.woff') format('woff'), + url('@{fontAwesomePath}/fontawesome-webfont.ttf') format('truetype'), + url('@{fontAwesomePath}/fontawesome-webfont.svg#FontAwesome') format('svg'); + font-weight: normal; + font-style: normal; +} + +/* Font Awesome styles + ------------------------------------------------------- */ +[class^="icon-"]:before, +[class*=" icon-"]:before { + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + display: inline-block; + text-decoration: inherit; +} + +a [class^="icon-"], +a [class*=" icon-"] { + display: inline-block; + text-decoration: inherit; +} + +/* makes the font 33% larger relative to the icon container */ +.icon-large:before { + vertical-align: middle; + font-size: 4/3em; +} + +.btn, .nav-tabs { + [class^="icon-"], + [class*=" icon-"] { + /* keeps button heights with and without icons the same */ + line-height: .9em; + } +} + +li { + [class^="icon-"], + [class*=" icon-"] { + display: inline-block; + width: 1.25em; + text-align: center; + } + .icon-large:before, + .icon-large:before { + /* 1.5 increased font size for icon-large * 1.25 width */ + width: 1.5*1.25em; + } +} + +ul.icons { + list-style-type: none; + margin-left: 2em; + text-indent: -.8em; + + li { + [class^="icon-"], + [class*=" icon-"] { + width: .8em; + } + .icon-large:before, + .icon-large:before { + /* 1.5 increased font size for icon-large * 1.25 width */ + vertical-align: initial; +// width: 1.5*1.25em; + } + } +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.icon-glass:before { content: "\f000"; } +.icon-music:before { content: "\f001"; } +.icon-search:before { content: "\f002"; } +.icon-envelope:before { content: "\f003"; } +.icon-heart:before { content: "\f004"; } +.icon-star:before { content: "\f005"; } +.icon-star-empty:before { content: "\f006"; } +.icon-user:before { content: "\f007"; } +.icon-film:before { content: "\f008"; } +.icon-th-large:before { content: "\f009"; } +.icon-th:before { content: "\f00a"; } +.icon-th-list:before { content: "\f00b"; } +.icon-ok:before { content: "\f00c"; } +.icon-remove:before { content: "\f00d"; } +.icon-zoom-in:before { content: "\f00e"; } + +.icon-zoom-out:before { content: "\f010"; } +.icon-off:before { content: "\f011"; } +.icon-signal:before { content: "\f012"; } +.icon-cog:before { content: "\f013"; } +.icon-trash:before { content: "\f014"; } +.icon-home:before { content: "\f015"; } +.icon-file:before { content: "\f016"; } +.icon-time:before { content: "\f017"; } +.icon-road:before { content: "\f018"; } +.icon-download-alt:before { content: "\f019"; } +.icon-download:before { content: "\f01a"; } +.icon-upload:before { content: "\f01b"; } +.icon-inbox:before { content: "\f01c"; } +.icon-play-circle:before { content: "\f01d"; } +.icon-repeat:before { content: "\f01e"; } + +/* \f020 doesn't work in Safari. all shifted one down */ +.icon-refresh:before { content: "\f021"; } +.icon-list-alt:before { content: "\f022"; } +.icon-lock:before { content: "\f023"; } +.icon-flag:before { content: "\f024"; } +.icon-headphones:before { content: "\f025"; } +.icon-volume-off:before { content: "\f026"; } +.icon-volume-down:before { content: "\f027"; } +.icon-volume-up:before { content: "\f028"; } +.icon-qrcode:before { content: "\f029"; } +.icon-barcode:before { content: "\f02a"; } +.icon-tag:before { content: "\f02b"; } +.icon-tags:before { content: "\f02c"; } +.icon-book:before { content: "\f02d"; } +.icon-bookmark:before { content: "\f02e"; } +.icon-print:before { content: "\f02f"; } + +.icon-camera:before { content: "\f030"; } +.icon-font:before { content: "\f031"; } +.icon-bold:before { content: "\f032"; } +.icon-italic:before { content: "\f033"; } +.icon-text-height:before { content: "\f034"; } +.icon-text-width:before { content: "\f035"; } +.icon-align-left:before { content: "\f036"; } +.icon-align-center:before { content: "\f037"; } +.icon-align-right:before { content: "\f038"; } +.icon-align-justify:before { content: "\f039"; } +.icon-list:before { content: "\f03a"; } +.icon-indent-left:before { content: "\f03b"; } +.icon-indent-right:before { content: "\f03c"; } +.icon-facetime-video:before { content: "\f03d"; } +.icon-picture:before { content: "\f03e"; } + +.icon-pencil:before { content: "\f040"; } +.icon-map-marker:before { content: "\f041"; } +.icon-adjust:before { content: "\f042"; } +.icon-tint:before { content: "\f043"; } +.icon-edit:before { content: "\f044"; } +.icon-share:before { content: "\f045"; } +.icon-check:before { content: "\f046"; } +.icon-move:before { content: "\f047"; } +.icon-step-backward:before { content: "\f048"; } +.icon-fast-backward:before { content: "\f049"; } +.icon-backward:before { content: "\f04a"; } +.icon-play:before { content: "\f04b"; } +.icon-pause:before { content: "\f04c"; } +.icon-stop:before { content: "\f04d"; } +.icon-forward:before { content: "\f04e"; } + +.icon-fast-forward:before { content: "\f050"; } +.icon-step-forward:before { content: "\f051"; } +.icon-eject:before { content: "\f052"; } +.icon-chevron-left:before { content: "\f053"; } +.icon-chevron-right:before { content: "\f054"; } +.icon-plus-sign:before { content: "\f055"; } +.icon-minus-sign:before { content: "\f056"; } +.icon-remove-sign:before { content: "\f057"; } +.icon-ok-sign:before { content: "\f058"; } +.icon-question-sign:before { content: "\f059"; } +.icon-info-sign:before { content: "\f05a"; } +.icon-screenshot:before { content: "\f05b"; } +.icon-remove-circle:before { content: "\f05c"; } +.icon-ok-circle:before { content: "\f05d"; } +.icon-ban-circle:before { content: "\f05e"; } + +.icon-arrow-left:before { content: "\f060"; } +.icon-arrow-right:before { content: "\f061"; } +.icon-arrow-up:before { content: "\f062"; } +.icon-arrow-down:before { content: "\f063"; } +.icon-share-alt:before { content: "\f064"; } +.icon-resize-full:before { content: "\f065"; } +.icon-resize-small:before { content: "\f066"; } +.icon-plus:before { content: "\f067"; } +.icon-minus:before { content: "\f068"; } +.icon-asterisk:before { content: "\f069"; } +.icon-exclamation-sign:before { content: "\f06a"; } +.icon-gift:before { content: "\f06b"; } +.icon-leaf:before { content: "\f06c"; } +.icon-fire:before { content: "\f06d"; } +.icon-eye-open:before { content: "\f06e"; } + +.icon-eye-close:before { content: "\f070"; } +.icon-warning-sign:before { content: "\f071"; } +.icon-plane:before { content: "\f072"; } +.icon-calendar:before { content: "\f073"; } +.icon-random:before { content: "\f074"; } +.icon-comment:before { content: "\f075"; } +.icon-magnet:before { content: "\f076"; } +.icon-chevron-up:before { content: "\f077"; } +.icon-chevron-down:before { content: "\f078"; } +.icon-retweet:before { content: "\f079"; } +.icon-shopping-cart:before { content: "\f07a"; } +.icon-folder-close:before { content: "\f07b"; } +.icon-folder-open:before { content: "\f07c"; } +.icon-resize-vertical:before { content: "\f07d"; } +.icon-resize-horizontal:before { content: "\f07e"; } + +.icon-bar-chart:before { content: "\f080"; } +.icon-twitter-sign:before { content: "\f081"; } +.icon-facebook-sign:before { content: "\f082"; } +.icon-camera-retro:before { content: "\f083"; } +.icon-key:before { content: "\f084"; } +.icon-cogs:before { content: "\f085"; } +.icon-comments:before { content: "\f086"; } +.icon-thumbs-up:before { content: "\f087"; } +.icon-thumbs-down:before { content: "\f088"; } +.icon-star-half:before { content: "\f089"; } +.icon-heart-empty:before { content: "\f08a"; } +.icon-signout:before { content: "\f08b"; } +.icon-linkedin-sign:before { content: "\f08c"; } +.icon-pushpin:before { content: "\f08d"; } +.icon-external-link:before { content: "\f08e"; } + +.icon-signin:before { content: "\f090"; } +.icon-trophy:before { content: "\f091"; } +.icon-github-sign:before { content: "\f092"; } +.icon-upload-alt:before { content: "\f093"; } +.icon-lemon:before { content: "\f094"; } +.icon-phone:before { content: "\f095"; } +.icon-check-empty:before { content: "\f096"; } +.icon-bookmark-empty:before { content: "\f097"; } +.icon-phone-sign:before { content: "\f098"; } +.icon-twitter:before { content: "\f099"; } +.icon-facebook:before { content: "\f09a"; } +.icon-github:before { content: "\f09b"; } +.icon-unlock:before { content: "\f09c"; } +.icon-credit-card:before { content: "\f09d"; } +.icon-rss:before { content: "\f09e"; } + +.icon-hdd:before { content: "\f0a0"; } +.icon-bullhorn:before { content: "\f0a1"; } +.icon-bell:before { content: "\f0a2"; } +.icon-certificate:before { content: "\f0a3"; } +.icon-hand-right:before { content: "\f0a4"; } +.icon-hand-left:before { content: "\f0a5"; } +.icon-hand-up:before { content: "\f0a6"; } +.icon-hand-down:before { content: "\f0a7"; } +.icon-circle-arrow-left:before { content: "\f0a8"; } +.icon-circle-arrow-right:before { content: "\f0a9"; } +.icon-circle-arrow-up:before { content: "\f0aa"; } +.icon-circle-arrow-down:before { content: "\f0ab"; } +.icon-globe:before { content: "\f0ac"; } +.icon-wrench:before { content: "\f0ad"; } +.icon-tasks:before { content: "\f0ae"; } + +.icon-filter:before { content: "\f0b0"; } +.icon-briefcase:before { content: "\f0b1"; } +.icon-fullscreen:before { content: "\f0b2"; } + +.icon-group:before { content: "\f0c0"; } +.icon-link:before { content: "\f0c1"; } +.icon-cloud:before { content: "\f0c2"; } +.icon-beaker:before { content: "\f0c3"; } +.icon-cut:before { content: "\f0c4"; } +.icon-copy:before { content: "\f0c5"; } +.icon-paper-clip:before { content: "\f0c6"; } +.icon-save:before { content: "\f0c7"; } +.icon-sign-blank:before { content: "\f0c8"; } +.icon-reorder:before { content: "\f0c9"; } +.icon-list-ul:before { content: "\f0ca"; } +.icon-list-ol:before { content: "\f0cb"; } +.icon-strikethrough:before { content: "\f0cc"; } +.icon-underline:before { content: "\f0cd"; } +.icon-table:before { content: "\f0ce"; } + +.icon-magic:before { content: "\f0d0"; } +.icon-truck:before { content: "\f0d1"; } +.icon-pinterest:before { content: "\f0d2"; } +.icon-pinterest-sign:before { content: "\f0d3"; } +.icon-google-plus-sign:before { content: "\f0d4"; } +.icon-google-plus:before { content: "\f0d5"; } +.icon-money:before { content: "\f0d6"; } +.icon-caret-down:before { content: "\f0d7"; } +.icon-caret-up:before { content: "\f0d8"; } +.icon-caret-left:before { content: "\f0d9"; } +.icon-caret-right:before { content: "\f0da"; } +.icon-columns:before { content: "\f0db"; } +.icon-sort:before { content: "\f0dc"; } +.icon-sort-down:before { content: "\f0dd"; } +.icon-sort-up:before { content: "\f0de"; } + +.icon-envelope-alt:before { content: "\f0e0"; } +.icon-linkedin:before { content: "\f0e1"; } +.icon-undo:before { content: "\f0e2"; } +.icon-legal:before { content: "\f0e3"; } +.icon-dashboard:before { content: "\f0e4"; } +.icon-comment-alt:before { content: "\f0e5"; } +.icon-comments-alt:before { content: "\f0e6"; } +.icon-bolt:before { content: "\f0e7"; } +.icon-sitemap:before { content: "\f0e8"; } +.icon-umbrella:before { content: "\f0e9"; } +.icon-paste:before { content: "\f0ea"; } + +.icon-user-md:before { content: "\f200"; } diff --git a/NzbDrone.Web/Content2/Bootstrap/forms.less b/NzbDrone.Web/Content2/Bootstrap/forms.less new file mode 100644 index 000000000..3d24432a3 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/forms.less @@ -0,0 +1,650 @@ +// +// Forms +// -------------------------------------------------- + + +// GENERAL STYLES +// -------------- + +// Make all forms have space below them +form { + margin: 0 0 @baseLineHeight; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +// Groups of fields with labels on top (legends) +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: @baseLineHeight; + font-size: @baseFontSize * 1.5; + line-height: @baseLineHeight * 2; + color: @grayDark; + border: 0; + border-bottom: 1px solid #e5e5e5; + + // Small + small { + font-size: @baseLineHeight * .75; + color: @grayLight; + } +} + +// Set font for forms +label, +input, +button, +select, +textarea { + #font > .shorthand(@baseFontSize,normal,@baseLineHeight); // Set size, weight, line-height here +} +input, +button, +select, +textarea { + font-family: @baseFontFamily; // And only set font-family here for those that need it (note the missing label element) +} + +// Identify controls by their labels +label { + display: block; + margin-bottom: 5px; +} + +// Form controls +// ------------------------- + +// Shared size and type resets +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: @baseLineHeight; + padding: 4px 6px; + margin-bottom: 9px; + font-size: @baseFontSize; + line-height: @baseLineHeight; + color: @gray; + .border-radius(@inputBorderRadius); +} + +// Reset appearance properties for textual inputs and textarea +// Declare width for legacy (can't be on input[type=*] selectors or it's too specific) +input, +textarea, +.uneditable-input { + width: 206px; // plus 12px padding and 2px border +} +// Reset height since textareas have rows +textarea { + height: auto; +} +// Everything else +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: @inputBackground; + border: 1px solid @inputBorder; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); + .transition(~"border linear .2s, box-shadow linear .2s"); + + // Focus state + &:focus { + border-color: rgba(82,168,236,.8); + outline: 0; + outline: thin dotted \9; /* IE6-9 */ + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6)); + } +} + +// Position radios and checkboxes better +input[type="radio"], +input[type="checkbox"] { + margin: 0; + *margin-top: 0; /* IE7 */ + margin-top: 1px \9; /* IE8-9 */ + line-height: normal; + cursor: pointer; +} + +// Reset width of input images, buttons, radios, checkboxes +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; // Override of generic input selector +} + +// Set the height of select and file controls to match text inputs +select, +input[type="file"] { + height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ + *margin-top: 4px; /* For IE7, add top margin to align select with labels */ + line-height: 30px; +} + +// Make select elements obey height by applying a border +select { + width: 220px; // default input width + 10px of padding that doesn't get applied + border: 1px solid @inputBorder; + background-color: @inputBackground; // Chrome on Linux and Mobile Safari need background-color +} + +// Make multiple select elements height not fixed +select[multiple], +select[size] { + height: auto; +} + +// Focus for select, file, radio, and checkbox +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + .tab-focus(); +} + + +// Uneditable inputs +// ------------------------- + +// Make uneditable inputs look inactive +.uneditable-input, +.uneditable-textarea { + color: @grayLight; + background-color: darken(@inputBackground, 1%); + border-color: @inputBorder; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.025)); + cursor: not-allowed; +} + +// For text that needs to appear as an input but should not be an input +.uneditable-input { + overflow: hidden; // prevent text from wrapping, but still cut it off like an input does + white-space: nowrap; +} + +// Make uneditable textareas behave like a textarea +.uneditable-textarea { + width: auto; + height: auto; +} + + +// Placeholder +// ------------------------- + +// Placeholder text gets special styles because when browsers invalidate entire lines if it doesn’t understand a selector +input, +textarea { + .placeholder(); +} + + +// CHECKBOXES & RADIOS +// ------------------- + +// Indent the labels to position radios/checkboxes as hanging +.radio, +.checkbox { + min-height: 18px; // clear the floating input if there is no label text + padding-left: 18px; +} +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +// Move the options list down to align with labels +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; // has to be padding because margin collaspes +} + +// Radios and checkboxes on same line +// TODO v3: Convert .inline to .control-inline +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; // space out consecutive inline controls +} + + + +// INPUT SIZES +// ----------- + +// General classes for quick sizes +.input-mini { width: 60px; } +.input-small { width: 90px; } +.input-medium { width: 150px; } +.input-large { width: 210px; } +.input-xlarge { width: 270px; } +.input-xxlarge { width: 530px; } + +// Grid style input sizes +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +// Redeclare since the fluid row class is more specific +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} +// Ensure input-prepend/append never wraps +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + + + +// GRID SIZING FOR INPUTS +// ---------------------- + +// Grid sizes +#grid > .input(@gridColumnWidth, @gridGutterWidth); + +// Control row for multiple inputs per line +.controls-row { + .clearfix(); // Clear the float from controls +} +.controls-row [class*="span"] { + float: left; // Float to collapse white-space for proper grid alignment +} + + + + +// DISABLED STATE +// -------------- + +// Disabled and read-only inputs +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: @inputDisabledBackground; +} +// Explicitly reset the colors here +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + + + + +// FORM FIELD FEEDBACK STATES +// -------------------------- + +// Warning +.control-group.warning { + .formFieldState(@warningText, @warningText, @warningBackground); +} +// Error +.control-group.error { + .formFieldState(@errorText, @errorText, @errorBackground); +} +// Success +.control-group.success { + .formFieldState(@successText, @successText, @successBackground); +} +// Success +.control-group.info { + .formFieldState(@infoText, @infoText, @infoBackground); +} + +// HTML5 invalid states +// Shares styles with the .control-group.error above +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; + &:focus { + border-color: darken(#ee5f5b, 10%); + .box-shadow(0 0 6px lighten(#ee5f5b, 20%)); + } +} + + + +// FORM ACTIONS +// ------------ + +.form-actions { + padding: (@baseLineHeight - 1) 20px @baseLineHeight; + margin-top: @baseLineHeight; + margin-bottom: @baseLineHeight; + background-color: @formActionsBackground; + border-top: 1px solid #e5e5e5; + .clearfix(); // Adding clearfix to allow for .pull-right button containers +} + + + +// HELP TEXT +// --------- + +.help-block, +.help-inline { + color: lighten(@textColor, 15%); // lighten the text some for contrast +} + +.help-block { + display: block; // account for any element using help-block + margin-bottom: @baseLineHeight / 2; +} + +.help-inline { + display: inline-block; + .ie7-inline-block(); + vertical-align: middle; + padding-left: 5px; +} + + + +// INPUT GROUPS +// ------------ + +// Allow us to put symbols and text within the input field for a cleaner look +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; // Prevent span and input from separating + + input, + select, + .uneditable-input { + position: relative; // placed here by default so that on :focus we can place the input above the .add-on for full border and box-shadow goodness + margin-bottom: 0; // prevent bottom margin from screwing up alignment in stacked forms + *margin-left: 0; + font-size: @baseFontSize; + vertical-align: top; + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + // Make input on top when focused so blue border and shadow always show + &:focus { + z-index: 2; + } + } + .add-on { + display: inline-block; + width: auto; + height: @baseLineHeight; + min-width: 16px; + padding: 4px 5px; + font-size: @baseFontSize; + font-weight: normal; + line-height: @baseLineHeight; + text-align: center; + text-shadow: 0 1px 0 @white; + background-color: @grayLighter; + border: 1px solid #ccc; + } + .add-on, + .btn { + vertical-align: top; + .border-radius(0); + } + .active { + background-color: lighten(@green, 30); + border-color: @green; + } +} +.input-prepend { + .add-on, + .btn { + margin-right: -1px; + } + .add-on:first-child, + .btn:first-child { + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + } +} +.input-append { + input, + select, + .uneditable-input { + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + } + .add-on, + .btn { + margin-left: -1px; + } + .add-on:last-child, + .btn:last-child { + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } +} +// Remove all border-radius for inputs with both prepend and append +.input-prepend.input-append { + input, + select, + .uneditable-input { + .border-radius(0); + } + .add-on:first-child, + .btn:first-child { + margin-right: -1px; + .border-radius(@inputBorderRadius 0 0 @inputBorderRadius); + } + .add-on:last-child, + .btn:last-child { + margin-left: -1px; + .border-radius(0 @inputBorderRadius @inputBorderRadius 0); + } +} + + + +// SEARCH FORM +// ----------- + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ + margin-bottom: 0; // Remove the default margin on all inputs + .border-radius(15px); +} + +/* Allow for input prepend/append in search forms */ +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + .border-radius(0); // Override due to specificity +} +.form-search .input-append .search-query { + .border-radius(14px 0 0 14px); +} +.form-search .input-append .btn { + .border-radius(0 14px 14px 0); +} +.form-search .input-prepend .search-query { + .border-radius(0 14px 14px 0); +} +.form-search .input-prepend .btn { + .border-radius(14px 0 0 14px); +} + + + + +// HORIZONTAL & VERTICAL FORMS +// --------------------------- + +// Common properties +// ----------------- + +.form-search, +.form-inline, +.form-horizontal { + input, + textarea, + select, + .help-inline, + .uneditable-input, + .input-prepend, + .input-append { + display: inline-block; + .ie7-inline-block(); + margin-bottom: 0; + vertical-align: middle; + } + // Re-hide hidden elements due to specifity + .hide { + display: none; + } +} +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} +// Remove margin for input-prepend/-append +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} +// Inline checkbox/radio labels (remove padding on left) +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} +// Remove float and margin, set to inline-block +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + + +// Margin to space out fieldsets +.control-group { + margin-bottom: @baseLineHeight / 2; +} + +// Legend collapses margin, so next element is responsible for spacing +legend + .control-group { + margin-top: @baseLineHeight; + -webkit-margin-top-collapse: separate; +} + +// Horizontal-specific styles +// -------------------------- + +.form-horizontal { + // Increase spacing between groups + .control-group { + margin-bottom: @baseLineHeight; + .clearfix(); + } + // Float the labels left + .control-label { + float: left; + width: @horizontalComponentOffset - 20; + padding-top: 5px; + text-align: right; + } + // Move over all input controls and content + .controls { + // Super jank IE7 fix to ensure the inputs in .input-append and input-prepend + // don't inherit the margin of the parent, in this case .controls + *display: inline-block; + *padding-left: 20px; + margin-left: @horizontalComponentOffset; + *margin-left: 0; + &:first-child { + *padding-left: @horizontalComponentOffset; + } + } + // Remove bottom margin on block level help text since that's accounted for on .control-group + .help-block { + margin-bottom: 0; + } + // And apply it only to .help-block instances that follow a form control + input, + select, + textarea { + + .help-block { + margin-top: @baseLineHeight / 2; + } + } + // Move over buttons in .form-actions to align with .controls + .form-actions { + padding-left: @horizontalComponentOffset; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/grid.less b/NzbDrone.Web/Content2/Bootstrap/grid.less new file mode 100644 index 000000000..750d20351 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/grid.less @@ -0,0 +1,21 @@ +// +// Grid system +// -------------------------------------------------- + + +// Fixed (940px) +#grid > .core(@gridColumnWidth, @gridGutterWidth); + +// Fluid (940px) +#grid > .fluid(@fluidGridColumnWidth, @fluidGridGutterWidth); + +// Reset utility classes due to specificity +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/hero-unit.less b/NzbDrone.Web/Content2/Bootstrap/hero-unit.less new file mode 100644 index 000000000..672b7d7c7 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/hero-unit.less @@ -0,0 +1,24 @@ +// +// Hero unit +// -------------------------------------------------- + + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: @heroUnitBackground; + .border-radius(6px); + h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + color: @heroUnitHeadingColor; + letter-spacing: -1px; + } + p { + font-size: 18px; + font-weight: 200; + line-height: @baseLineHeight * 1.5; + color: @heroUnitLeadColor; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/labels-badges.less b/NzbDrone.Web/Content2/Bootstrap/labels-badges.less new file mode 100644 index 000000000..43c800d6b --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/labels-badges.less @@ -0,0 +1,72 @@ +// +// Labels and badges +// -------------------------------------------------- + + +// Base classes +.label, +.badge { + font-size: @baseFontSize * .846; + font-weight: bold; + line-height: 14px; // ensure proper line-height if floated + color: @white; + vertical-align: baseline; + white-space: nowrap; + //text-shadow: 0 -1px 0 rgba(0,0,0,.25); + background-color: @grayLight; +} +// Set unique padding and border-radii +.label { + padding: 1px 4px 2px; + .border-radius(3px); +} +.badge { + padding: 1px 9px 2px; + .border-radius(9px); +} + +// Hover state, but only for links +a { + &.label:hover, + &.badge:hover { + color: @white; + text-decoration: none; + cursor: pointer; + } +} + +// Colors +// Only give background-color difference to links (and to simplify, we don't qualifty with `a` but [href] attribute) +.label, +.badge { + // Important (red) + &-important { background-color: @errorText; } + &-important[href] { background-color: darken(@errorText, 10%); } + // Warnings (orange) + &-warning { background-color: @orange; } + &-warning[href] { background-color: darken(@orange, 10%); } + // Success (green) + &-success { background-color: @successText; } + &-success[href] { background-color: darken(@successText, 10%); } + // Info (turquoise) + &-info { background-color: @infoText; } + &-info[href] { background-color: darken(@infoText, 10%); } + // Inverse (black) + &-inverse { background-color: @grayDark; } + &-inverse[href] { background-color: darken(@grayDark, 10%); } +} + +// Quick fix for labels/badges in buttons +.btn { + .label, + .badge { + position: relative; + top: -1px; + } +} +.btn-mini { + .label, + .badge { + top: 0; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/layouts.less b/NzbDrone.Web/Content2/Bootstrap/layouts.less new file mode 100644 index 000000000..24a206211 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/layouts.less @@ -0,0 +1,16 @@ +// +// Layouts +// -------------------------------------------------- + + +// Container (centered, fixed-width layouts) +.container { + .container-fixed(); +} + +// Fluid layouts (left aligned, with sidebar, min- & max-width content) +.container-fluid { + padding-right: @gridGutterWidth; + padding-left: @gridGutterWidth; + .clearfix(); +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/mixins.css b/NzbDrone.Web/Content2/Bootstrap/mixins.css new file mode 100644 index 000000000..6923f72db --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/mixins.css @@ -0,0 +1,27 @@ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/mixins.less b/NzbDrone.Web/Content2/Bootstrap/mixins.less new file mode 100644 index 000000000..d8532c1f0 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/mixins.less @@ -0,0 +1,677 @@ +// +// Mixins +// -------------------------------------------------- + + +// UTILITY MIXINS +// -------------------------------------------------- + +// Clearfix +// -------- +// For clearing floats like a boss h5bp.com/q +.clearfix { + *zoom: 1; + &:before, + &:after { + display: table; + content: ""; + // Fixes Opera/contenteditable bug: + // http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 + line-height: 0; + } + &:after { + clear: both; + } +} + +// Webkit-style focus +// ------------------ +.tab-focus() { + // Default + outline: thin dotted #333; + // Webkit + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +// Center-align a block level element +// ---------------------------------- +.center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} + +// IE7 inline-block +// ---------------- +.ie7-inline-block() { + *display: inline; /* IE7 inline-block hack */ + *zoom: 1; +} + +// IE7 likes to collapse whitespace on either side of the inline-block elements. +// Ems because we're attempting to match the width of a space character. Left +// version is for form buttons, which typically come after other elements, and +// right version is for icons, which come before. Applying both is ok, but it will +// mean that space between those elements will be .6em (~2 space characters) in IE7, +// instead of the 1 space in other browsers. +.ie7-restore-left-whitespace() { + *margin-left: .3em; + + &:first-child { + *margin-left: 0; + } +} + +.ie7-restore-right-whitespace() { + *margin-right: .3em; +} + +// Sizing shortcuts +// ------------------------- +.size(@height, @width) { + width: @width; + height: @height; +} +.square(@size) { + .size(@size, @size); +} + +// Placeholder text +// ------------------------- +.placeholder(@color: @placeholderText) { + &:-moz-placeholder { + color: @color; + } + &:-ms-input-placeholder { + color: @color; + } + &::-webkit-input-placeholder { + color: @color; + } +} + +// Text overflow +// ------------------------- +// Requires inline-block or block for proper styling +.text-overflow() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +// CSS image replacement +// ------------------------- +// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + + +// FONTS +// -------------------------------------------------- + +#font { + #family { + .serif() { + font-family: @serifFontFamily; + } + .sans-serif() { + font-family: @sansFontFamily; + } + .monospace() { + font-family: @monoFontFamily; + } + } + .shorthand(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + font-size: @size; + font-weight: @weight; + line-height: @lineHeight; + } + .serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .serif; + #font > .shorthand(@size, @weight, @lineHeight); + } + .sans-serif(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .sans-serif; + #font > .shorthand(@size, @weight, @lineHeight); + } + .monospace(@size: @baseFontSize, @weight: normal, @lineHeight: @baseLineHeight) { + #font > #family > .monospace; + #font > .shorthand(@size, @weight, @lineHeight); + } +} + + +// FORMS +// -------------------------------------------------- + +// Block level inputs +.input-block-level { + display: block; + width: 100%; + min-height: 30px; // Make inputs at least the height of their button counterpart + .box-sizing(border-box); // Makes inputs behave like true block-level elements +} + + + +// Mixin for form field states +.formFieldState(@textColor: #555, @borderColor: #ccc, @backgroundColor: #f5f5f5) { + // Set the text color + > label, + .help-block, + .help-inline { + color: @textColor; + } + // Style inputs accordingly + .checkbox, + .radio, + input, + select, + textarea { + color: @textColor; + } + input, + select, + textarea { + border-color: @borderColor; + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + &:focus { + border-color: darken(@borderColor, 10%); + .box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@borderColor, 20%)); + } + } + // Give a small background color for input-prepend/-append + .input-prepend .add-on, + .input-append .add-on { + color: @textColor; + background-color: @backgroundColor; + border-color: @textColor; + } +} + + + +// CSS3 PROPERTIES +// -------------------------------------------------- + +// Border Radius +.border-radius(@radius) { + -webkit-border-radius: @radius; + -moz-border-radius: @radius; + border-radius: @radius; +} + +// Single Corner Border Radius +.border-top-left-radius(@radius) { + -webkit-border-top-left-radius: @radius; + -moz-border-radius-topleft: @radius; + border-top-left-radius: @radius; +} +.border-top-right-radius(@radius) { + -webkit-border-top-right-radius: @radius; + -moz-border-radius-topright: @radius; + border-top-right-radius: @radius; +} +.border-bottom-right-radius(@radius) { + -webkit-border-bottom-right-radius: @radius; + -moz-border-radius-bottomright: @radius; + border-bottom-right-radius: @radius; +} +.border-bottom-left-radius(@radius) { + -webkit-border-bottom-left-radius: @radius; + -moz-border-radius-bottomleft: @radius; + border-bottom-left-radius: @radius; +} + +// Single Side Border Radius +.border-top-radius(@radius) { + .border-top-right-radius(@radius); + .border-top-left-radius(@radius); +} +.border-right-radius(@radius) { + .border-top-right-radius(@radius); + .border-bottom-right-radius(@radius); +} +.border-bottom-radius(@radius) { + .border-bottom-right-radius(@radius); + .border-bottom-left-radius(@radius); +} +.border-left-radius(@radius) { + .border-top-left-radius(@radius); + .border-bottom-left-radius(@radius); +} + +// Drop shadows +.box-shadow(@shadowA, @shadowB:X, ...){ + +} + +// Transitions +.transition(@transition) { + -webkit-transition: @transition; + -moz-transition: @transition; + -o-transition: @transition; + transition: @transition; +} +.transition-delay(@transition-delay) { + -webkit-transition-delay: @transition-delay; + -moz-transition-delay: @transition-delay; + -o-transition-delay: @transition-delay; + transition-delay: @transition-delay; +} + +// Transformations +.rotate(@degrees) { + -webkit-transform: rotate(@degrees); + -moz-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + -o-transform: rotate(@degrees); + transform: rotate(@degrees); +} +.scale(@ratio) { + -webkit-transform: scale(@ratio); + -moz-transform: scale(@ratio); + -ms-transform: scale(@ratio); + -o-transform: scale(@ratio); + transform: scale(@ratio); +} +.translate(@x, @y) { + -webkit-transform: translate(@x, @y); + -moz-transform: translate(@x, @y); + -ms-transform: translate(@x, @y); + -o-transform: translate(@x, @y); + transform: translate(@x, @y); +} +.skew(@x, @y) { + -webkit-transform: skew(@x, @y); + -moz-transform: skew(@x, @y); + -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twitter/bootstrap/issues/4885 + -o-transform: skew(@x, @y); + transform: skew(@x, @y); +} +.translate3d(@x, @y, @z) { + -webkit-transform: translate3d(@x, @y, @z); + -moz-transform: translate3d(@x, @y, @z); + -o-transform: translate3d(@x, @y, @z); + transform: translate3d(@x, @y, @z); +} + +// Backface visibility +// Prevent browsers from flickering when using CSS 3D transforms. +// Default value is `visible`, but can be changed to `hidden +// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples +.backface-visibility(@visibility){ + -webkit-backface-visibility: @visibility; + -moz-backface-visibility: @visibility; + backface-visibility: @visibility; +} + +// Background clipping +// Heads up: FF 3.6 and under need "padding" instead of "padding-box" +.background-clip(@clip) { + -webkit-background-clip: @clip; + -moz-background-clip: @clip; + background-clip: @clip; +} + +// Background sizing +.background-size(@size){ + -webkit-background-size: @size; + -moz-background-size: @size; + -o-background-size: @size; + background-size: @size; +} + + +// Box sizing +.box-sizing(@boxmodel) { + -webkit-box-sizing: @boxmodel; + -moz-box-sizing: @boxmodel; + box-sizing: @boxmodel; +} + +// User select +// For selecting text on the page +.user-select(@select) { + -webkit-user-select: @select; + -moz-user-select: @select; + -ms-user-select: @select; + -o-user-select: @select; + user-select: @select; +} + +// Resize anything +.resizable(@direction) { + resize: @direction; // Options: horizontal, vertical, both + overflow: auto; // Safari fix +} + +// CSS3 Content Columns +.content-columns(@columnCount, @columnGap: @gridGutterWidth) { + -webkit-column-count: @columnCount; + -moz-column-count: @columnCount; + column-count: @columnCount; + -webkit-column-gap: @columnGap; + -moz-column-gap: @columnGap; + column-gap: @columnGap; +} + +// Optional hyphenation +.hyphens(@mode: auto) { + word-wrap: break-word; + -webkit-hyphens: @mode; + -moz-hyphens: @mode; + -ms-hyphens: @mode; + -o-hyphens: @mode; + hyphens: @mode; +} + +// Opacity +.opacity(@opacity) { + opacity: @opacity / 100; + filter: ~"alpha(opacity=@{opacity})"; +} + + + +// BACKGROUNDS +// -------------------------------------------------- + +// Add an alphatransparency value to any background or border color (via Elyse Holladay) +#translucent { + .background(@color: @white, @alpha: 1) { + background-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); + } + .border(@color: @white, @alpha: 1) { + border-color: hsla(hue(@color), saturation(@color), lightness(@color), @alpha); + .background-clip(padding-box); + } +} + +// Gradient Bar Colors for buttons and alerts +.gradientBar(@primaryColor, @secondaryColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { + color: @textColor; + text-shadow: @textShadow; + #gradient > .vertical(@primaryColor, @secondaryColor); + border-color: @secondaryColor @secondaryColor darken(@secondaryColor, 15%); + border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%); +} + +// Gradients +#gradient { + .horizontal(@startColor: #555, @endColor: #333) { + background-color: @endColor; + background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+ + background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10 + background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10 + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down + } + .vertical(@startColor: #555, @endColor: #333) { + background-color: mix(@startColor, @endColor, 60%); + background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ + background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 + background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10 + background-repeat: repeat-x; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down + } + .directional(@startColor: #555, @endColor: #333, @deg: 45deg) { + background-color: @endColor; + background-repeat: repeat-x; + background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+ + background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+ + background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10 + background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10 + } + .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { + background-color: mix(@midColor, @endColor, 80%); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); + background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor); + background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); + background-repeat: no-repeat; + filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback + } + .radial(@innerColor: #555, @outerColor: #333) { + background-color: @outerColor; + background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor)); + background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor); + background-image: -moz-radial-gradient(circle, @innerColor, @outerColor); + background-image: -o-radial-gradient(circle, @innerColor, @outerColor); + background-repeat: no-repeat; + } + .striped(@color: #555, @angle: 45deg) { + background-color: @color; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); + } +} +// Reset filters for IE +.reset-filter() { + filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); +} + + + +// COMPONENT MIXINS +// -------------------------------------------------- + +// Horizontal dividers +// ------------------------- +// Dividers (basically an hr) within dropdowns and nav lists +.nav-divider(@top: #e5e5e5, @bottom: @white) { + // IE7 needs a set width since we gave a height. Restricting just + // to IE7 to keep the 1px left/right space in other browsers. + // It is unclear where IE is getting the extra space that we need + // to negative-margin away, but so it goes. + *width: 100%; + height: 1px; + margin: ((@baseLineHeight / 2) - 1) 1px; // 8px 1px + *margin: -5px 0 5px; + overflow: hidden; + background-color: @top; + border-bottom: 1px solid @bottom; +} + +// Button backgrounds +// ------------------ +.buttonBackground(@startColor, @endColor, @textColor: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) { + // gradientBar will set the background to a pleasing blend of these, to support IE<=9 + .gradientBar(@startColor, @endColor, @textColor, @textShadow); + *background-color: @endColor; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + .reset-filter(); + + // in these cases the gradient won't cover the background, so we override + &:hover, &:active, &.active, &.disabled, &[disabled] { + color: @textColor; + background-color: @endColor; + *background-color: darken(@endColor, 5%); + } + + // IE 7 + 8 can't handle box-shadow to show active, so we darken a bit ourselves + &:active, + &.active { + background-color: darken(@endColor, 10%) e("\9"); + } +} + +// Navbar vertical align +// ------------------------- +// Vertically center elements in the navbar. +// Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. +.navbarVerticalAlign(@elementHeight) { + margin-top: (@navbarHeight - @elementHeight) / 2; +} + + + +// Grid System +// ----------- + +// Centered container element +.container-fixed() { + margin-right: auto; + margin-left: auto; + .clearfix(); +} + +// Table columns +.tableColumns(@columnSpan: 1) { + float: none; // undo default grid column styles + width: ((@gridColumnWidth) * @columnSpan) + (@gridGutterWidth * (@columnSpan - 1)) - 16; // 16 is total padding on left and right of table cells + margin-left: 0; // undo default grid column styles +} + +// Make a Grid +// Use .makeRow and .makeColumn to assign semantic layouts grid system behavior +.makeRow() { + margin-left: @gridGutterWidth * -1; + .clearfix(); +} +.makeColumn(@columns: 1, @offset: 0) { + float: left; + margin-left: (@gridColumnWidth * @offset) + (@gridGutterWidth * (@offset - 1)) + (@gridGutterWidth * 2); + width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)); +} + +// The Grid +#grid { + + .core (@gridColumnWidth, @gridGutterWidth) { + + .spanX (@index) when (@index > 0) { + (~".span@{index}") { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .offsetX (@index) when (@index > 0) { + (~".offset@{index}") { .offset(@index); } + .offsetX(@index - 1); + } + .offsetX (0) {} + + .offset (@columns) { + margin-left: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns + 1)); + } + + .span (@columns) { + width: (@gridColumnWidth * @columns) + (@gridGutterWidth * (@columns - 1)); + } + + .row { + margin-left: @gridGutterWidth * -1; + .clearfix(); + } + + [class*="span"] { + float: left; + min-height: 1px; // prevent collapsing columns + margin-left: @gridGutterWidth; + } + + // Set the container width, and override it for fixed navbars in media queries + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { .span(@gridColumns); } + + // generate .spanX and .offsetX + .spanX (@gridColumns); + .offsetX (@gridColumns); + + } + + .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) { + + .spanX (@index) when (@index > 0) { + (~".span@{index}") { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .offsetX (@index) when (@index > 0) { + (~'.offset@{index}') { .offset(@index); } + (~'.offset@{index}:first-child') { .offsetFirstChild(@index); } + .offsetX(@index - 1); + } + .offsetX (0) {} + + .offset (@columns) { + margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth*2); + *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + (@fluidGridGutterWidth*2) - (.5 / @gridRowWidth * 100 * 1%); + } + + .offsetFirstChild (@columns) { + margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) + (@fluidGridGutterWidth); + *margin-left: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%) + @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); + } + + .span (@columns) { + width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)); + *width: (@fluidGridColumnWidth * @columns) + (@fluidGridGutterWidth * (@columns - 1)) - (.5 / @gridRowWidth * 100 * 1%); + } + + .row-fluid { + width: 100%; + .clearfix(); + [class*="span"] { + .input-block-level(); + float: left; + margin-left: @fluidGridGutterWidth; + *margin-left: @fluidGridGutterWidth - (.5 / @gridRowWidth * 100 * 1%); + } + [class*="span"]:first-child { + margin-left: 0; + } + + // generate .spanX and .offsetX + .spanX (@gridColumns); + .offsetX (@gridColumns); + } + + } + + .input(@gridColumnWidth, @gridGutterWidth) { + + .spanX (@index) when (@index > 0) { + (~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); } + .spanX(@index - 1); + } + .spanX (0) {} + + .span(@columns) { + width: ((@gridColumnWidth) * @columns) + (@gridGutterWidth * (@columns - 1)) - 14; + } + + input, + textarea, + .uneditable-input { + margin-left: 0; // override margin-left from core grid system + } + + // Space grid-sized controls properly if multiple per line + .controls-row [class*="span"] + [class*="span"] { + margin-left: @gridGutterWidth; + } + + // generate .spanX + .spanX (@gridColumns); + + } + +} diff --git a/NzbDrone.Web/Content2/Bootstrap/modals.less b/NzbDrone.Web/Content2/Bootstrap/modals.less new file mode 100644 index 000000000..81cacb7ab --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/modals.less @@ -0,0 +1,98 @@ +// +// Modals +// -------------------------------------------------- + + +// Recalculate z-index where appropriate, +// but only apply to elements within modal +.modal-open .modal { + .dropdown-menu { z-index: @zindexDropdown + @zindexModal; } + .dropdown.open { *z-index: @zindexDropdown + @zindexModal; } + .popover { z-index: @zindexPopover + @zindexModal; } + .tooltip { z-index: @zindexTooltip + @zindexModal; } +} + +// Background +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: @zindexModalBackdrop; + background-color: @black; + // Fade for backdrop + &.fade { opacity: 0; } +} + +.modal-backdrop, +.modal-backdrop.fade.in { + .opacity(80); +} + +// Base modal +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: @zindexModal; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: @white; + border: 1px solid #999; + border: 1px solid rgba(0,0,0,.3); + *border: 1px solid #999; /* IE6-7 */ + .border-radius(6px); + .box-shadow(0 3px 7px rgba(0,0,0,0.3)); + .background-clip(padding-box); + &.fade { + .transition(e('opacity .3s linear, top .3s ease-out')); + top: -25%; + } + &.fade.in { top: 50%; } +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; + // Close icon + .close { margin-top: 2px; } + // Heading + h3 { + margin: 0; + line-height: 30px; + } +} + +// Body (where all modal content resides) +.modal-body { + overflow-y: auto; + max-height: 400px; + padding: 15px; +} +// Remove bottom margin if need be +.modal-form { + margin-bottom: 0; +} + +// Footer (for actions) +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; // right align buttons + background-color: #f5f5f5; + border-top: 1px solid #ddd; + .border-radius(0 0 6px 6px); + .box-shadow(inset 0 1px 0 @white); + .clearfix(); // clear it in case folks use .pull-* classes on buttons + + // Properly space out buttons + .btn + .btn { + margin-left: 5px; + margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs + } + // but override that for button groups + .btn-group .btn + .btn { + margin-left: -1px; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/navbar.less b/NzbDrone.Web/Content2/Bootstrap/navbar.less new file mode 100644 index 000000000..7b4ba90ee --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/navbar.less @@ -0,0 +1,475 @@ +// +// Navbars (Redux) +// -------------------------------------------------- + + +// COMMON STYLES +// ------------- + +// Base class and wrapper +.navbar { + overflow: visible; + margin-bottom: @baseLineHeight; + color: @navbarText; + + // Fix for IE7's bad z-indexing so dropdowns don't appear below content that follows the navbar + *position: relative; + *z-index: 2; +} + +// Inner for background effects +// Gradient is applied to its own element because overflow visible is not honored by IE when filter is present +.navbar-inner { + min-height: @navbarHeight; + padding-left: 20px; + padding-right: 20px; + #gradient > .vertical(@navbarBackgroundHighlight, @navbarBackground); + border: 1px solid @navbarBorder; + .border-radius(4px); + .box-shadow(0 1px 4px rgba(0,0,0,.065)); + + // Prevent floats from breaking the navbar + .clearfix(); +} + +// Set width to auto for default container +// We then reset it for fixed navbars in the #gridSystem mixin +.navbar .container { + width: auto; +} + +// Override the default collapsed state +.nav-collapse.collapse { + height: auto; +} + + +// Brand: website or project name +// ------------------------- +.navbar .brand { + float: left; + display: block; + // Vertically center the text given @navbarHeight + padding: ((@navbarHeight - @baseLineHeight) / 2) 20px ((@navbarHeight - @baseLineHeight) / 2); + margin-left: -20px; // negative indent to left-align the text down the page + font-size:40px; + font-weight: 100; + color: @navbarBrandColor; + //text-shadow: 0 1px 0 @navbarBackgroundHighlight; + &:hover { + text-decoration: none; + } +} + +// Plain text in topbar +// ------------------------- +.navbar-text { + margin-bottom: 0; + line-height: @navbarHeight; +} + +// Janky solution for now to account for links outside the .nav +// ------------------------- +.navbar-link { + color: @navbarLinkColor; + &:hover { + color: @navbarLinkColorHover; + } +} + +// Dividers in navbar +// ------------------------- +.navbar .divider-vertical { + height: @navbarHeight; + margin: 0 9px; + border-left: 1px solid @navbarBackground; + border-right: 1px solid @navbarBackgroundHighlight; +} + +// Buttons in navbar +// ------------------------- +.navbar .btn, +.navbar .btn-group { + .navbarVerticalAlign(30px); // Vertically center in navbar +} +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; // then undo the margin here so we don't accidentally double it +} + +// Navbar forms +// ------------------------- +.navbar-form { + margin-bottom: 0; // remove default bottom margin + .clearfix(); + input, + select, + .radio, + .checkbox { + .navbarVerticalAlign(30px); // Vertically center in navbar + } + input, + select, + .btn { + display: inline-block; + margin-bottom: 0; + } + input[type="image"], + input[type="checkbox"], + input[type="radio"] { + margin-top: 3px; + } + .input-append, + .input-prepend { + margin-top: 6px; + white-space: nowrap; // preven two items from separating within a .navbar-form that has .pull-left + input { + margin-top: 0; // remove the margin on top since it's on the parent + } + } +} + +// Navbar search +// ------------------------- +.navbar-search { + position: relative; + float: left; + .navbarVerticalAlign(30px); // Vertically center in navbar + margin-bottom: 0; + .search-query { + margin-bottom: 0; + padding: 4px 14px; + #font > .sans-serif(13px, normal, 1); + .border-radius(15px); // redeclare because of specificity of the type attribute + } +} + + + +// Static navbar +// ------------------------- + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; // remove 18px margin for default navbar + .navbar-inner { + .border-radius(0); + } +} + + + +// Fixed navbar +// ------------------------- + +// Shared (top/bottom) styles +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: @zindexFixedNavbar; + margin-bottom: 0; // remove 18px margin for default navbar +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-left: 0; + padding-right: 0; + .border-radius(0); +} + +// Reset container width +// Required here as we reset the width earlier on and the grid mixins don't override early enough +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + #grid > .core > .span(@gridColumns); +} + +// Fixed to top +.navbar-fixed-top { + top: 0; +} +.navbar-fixed-top, +.navbar-static-top { + .navbar-inner { + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.1), 0 1px 10px rgba(0,0,0,.1)); + } +} + +// Fixed to bottom +.navbar-fixed-bottom { + bottom: 0; + .navbar-inner { + .box-shadow(inset 0 1px 0 rgba(0,0,0,.1), 0 -1px 10px rgba(0,0,0,.1)); + } +} + + + +// NAVIGATION +// ---------- + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; // redeclare due to specificity + margin-right: 0; // remove margin on float right nav +} +.navbar .nav > li { + float: left; +} + +// Links +.navbar .nav > li > a { + float: none; + // Vertically center the text given @navbarHeight + padding: ((@navbarHeight - @baseLineHeight) / 2) 15px ((@navbarHeight - @baseLineHeight) / 2); + color: @navbarLinkColor; + text-decoration: none; + text-shadow: 0 1px 0 @navbarBackgroundHighlight; +} +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +// Hover +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active + color: @navbarLinkColorHover; + text-decoration: none; +} + +// Active nav items +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: @navbarLinkColorActive; + text-decoration: none; + background-color: @navbarLinkBackgroundActive; + .box-shadow(inset 0 3px 8px rgba(0,0,0,.125)); +} + +// Navbar button for toggling navbar items in responsive layouts +// These definitions need to come after '.navbar .btn' +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + .buttonBackground(darken(@navbarBackgroundHighlight, 5%), darken(@navbarBackground, 5%)); + .box-shadow(inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075)); +} +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + .border-radius(1px); + .box-shadow(0 1px 0 rgba(0,0,0,.25)); +} +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + + + +// Dropdown menus +// -------------- + +// Menu position and menu carets +.navbar .nav > li > .dropdown-menu { + &:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: @dropdownBorder; + position: absolute; + top: -7px; + left: 9px; + } + &:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid @dropdownBackground; + position: absolute; + top: -6px; + left: 10px; + } +} +// Menu position and menu caret support for dropups via extra dropup class +.navbar-fixed-bottom .nav > li > .dropdown-menu { + &:before { + border-top: 7px solid #ccc; + border-top-color: @dropdownBorder; + border-bottom: 0; + bottom: -7px; + top: auto; + } + &:after { + border-top: 6px solid @dropdownBackground; + border-bottom: 0; + bottom: -6px; + top: auto; + } +} + +// Remove background color from open dropdown +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarLinkBackgroundActive; + color: @navbarLinkColorActive; +} +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarLinkColor; + border-bottom-color: @navbarLinkColor; +} +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarLinkColorActive; + border-bottom-color: @navbarLinkColorActive; +} + +// Right aligned menus need alt position +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + left: auto; + right: 0; + &:before { + left: auto; + right: 12px; + } + &:after { + left: auto; + right: 13px; + } + .dropdown-menu { + left: auto; + right: 100%; + margin-left: 0; + margin-right: -1px; + .border-radius(6px 0 6px 6px); + } +} + + +// Inverted navbar +// ------------------------- + +.navbar-inverse { + color: @navbarInverseText; + + .navbar-inner { + #gradient > .vertical(@navbarInverseBackgroundHighlight, @navbarInverseBackground); + border-color: @navbarInverseBorder; + } + + .brand, + .nav > li > a { + color: @navbarInverseLinkColor; + //text-shadow: 0 -1px 0 rgba(0,0,0,.25); + &:hover { + color: @navbarInverseLinkColorHover; + } + } + + .nav > li > a:focus, + .nav > li > a:hover { + background-color: @navbarInverseLinkBackgroundHover; + color: @navbarInverseLinkColorHover; + } + + .nav .active > a, + .nav .active > a:hover, + .nav .active > a:focus { + color: @navbarInverseLinkColorActive; + background-color: @navbarInverseLinkBackgroundActive; + } + + // Inline text links + .navbar-link { + color: @navbarInverseLinkColor; + &:hover { + color: @navbarInverseLinkColorHover; + } + } + + // Dividers in navbar + .divider-vertical { + border-left-color: @navbarInverseBackground; + border-right-color: @navbarInverseBackgroundHighlight; + } + + // Dropdowns + .nav li.dropdown.open > .dropdown-toggle, + .nav li.dropdown.active > .dropdown-toggle, + .nav li.dropdown.open.active > .dropdown-toggle { + background-color: @navbarInverseLinkBackgroundActive; + color: @navbarInverseLinkColorActive; + } + .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColor; + border-bottom-color: @navbarInverseLinkColor; + } + .nav li.dropdown.open > .dropdown-toggle .caret, + .nav li.dropdown.active > .dropdown-toggle .caret, + .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: @navbarInverseLinkColorActive; + border-bottom-color: @navbarInverseLinkColorActive; + } + + // Navbar search + .navbar-search { + .search-query { + color: @white; + background-color: @navbarInverseSearchBackground; + border-color: @navbarInverseSearchBorder; + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15)); + .transition(none); + .placeholder(@navbarInverseSearchPlaceholderColor); + + // Focus states (we use .focused since IE7-8 and down doesn't support :focus) + &:focus, + &.focused { + padding: 5px 15px; + color: @grayDark; + text-shadow: 0 1px 0 @white; + background-color: @navbarInverseSearchBackgroundFocus; + border: 0; + .box-shadow(0 0 3px rgba(0,0,0,.15)); + outline: 0; + } + } + } + + // Navbar collapse button + .btn-navbar { + .buttonBackground(darken(@navbarInverseBackgroundHighlight, 5%), darken(@navbarInverseBackground, 5%)); + } + +} + + + diff --git a/NzbDrone.Web/Content2/Bootstrap/navs.less b/NzbDrone.Web/Content2/Bootstrap/navs.less new file mode 100644 index 000000000..856300d2e --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/navs.less @@ -0,0 +1,383 @@ +// +// Navs +// -------------------------------------------------- + + +// BASE CLASS +// ---------- + +.nav { + margin-left: 0; + margin-bottom: @baseLineHeight; + list-style: none; +} + +// Make links block level +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: @grayLighter; +} + +// Redeclare pull classes because of specifity +.nav > .pull-right { + float: right; +} + +// Nav headers (for dropdowns and lists) +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: @baseLineHeight; + color: @grayLight; + text-shadow: 0 1px 0 rgba(255,255,255,.5); + text-transform: uppercase; +} +// Space them out when they follow another list item (link) +.nav li + .nav-header { + margin-top: 9px; +} + + + +// NAV LIST +// -------- + +.nav-list { + padding-left: 15px; + padding-right: 15px; + margin-bottom: 0; +} +.nav-list > li > a, +.nav-list .nav-header { + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255,255,255,.5); +} +.nav-list > li > a { + padding: 3px 15px; +} +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: @blue; + background-color: @linkColor; +} +.nav-list [class^="icon-"] { + margin-right: 2px; +} +// Dividers (basically an hr) within the dropdown +.nav-list .divider { + .nav-divider(); +} + + + +// TABS AND PILLS +// ------------- + +// Common styles +.nav-tabs, +.nav-pills { + .clearfix(); +} +.nav-tabs > li, +.nav-pills > li { + float: left; +} +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; // keeps the overall height an even number +} + +// TABS +// ---- + +// Give the tabs something to sit on +.nav-tabs { + border-bottom: 1px solid #ddd; +} +// Make the list-items overlay the bottom border +.nav-tabs > li { + margin-bottom: -1px; +} +// Actual tabs (as links) +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: @baseLineHeight; + border: 1px solid transparent; + .border-radius(4px 4px 0 0); + &:hover { + border-color: @grayLighter @grayLighter #ddd; + } +} +// Active state, and it's :hover to override normal :hover +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: @gray; + background-color: @white; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} + + +// PILLS +// ----- + +// Links rendered as pills +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + .border-radius(5px); +} + +// Active state +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: @blue; + background-color: @linkColor; +} + + + +// STACKED NAV +// ----------- + +// Stacked tabs and pills +.nav-stacked > li { + float: none; +} +.nav-stacked > li > a { + margin-right: 0; // no need for the gap between nav items +} + +// Tabs +.nav-tabs.nav-stacked { + border-bottom: 0; +} +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + .border-radius(0); +} +.nav-tabs.nav-stacked > li:first-child > a { + .border-top-radius(4px); +} +.nav-tabs.nav-stacked > li:last-child > a { + .border-bottom-radius(4px); +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} + +// Pills +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; // decrease margin to match sizing of stacked tabs +} + + + +// DROPDOWNS +// --------- + +.nav-tabs .dropdown-menu { + .border-radius(0 0 6px 6px); // remove the top rounded corners here since there is a hard edge above the menu +} +.nav-pills .dropdown-menu { + .border-radius(6px); // make rounded corners match the pills +} + +// Default dropdown links +// ------------------------- +// Make carets use linkColor to start +.nav .dropdown-toggle .caret { + border-top-color: @linkColor; + border-bottom-color: @linkColor; + margin-top: 6px; +} +.nav .dropdown-toggle:hover .caret { + border-top-color: @linkColorHover; + border-bottom-color: @linkColorHover; +} +/* move down carets for tabs */ +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +// Active dropdown links +// ------------------------- +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: @gray; + border-bottom-color: @gray; +} + +// Active:hover dropdown links +// ------------------------- +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +// Open dropdowns +// ------------------------- +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: @blue; + background-color: @grayLight; + border-color: @grayLight; +} +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: @white; + border-bottom-color: @white; + .opacity(100); +} + +// Dropdowns in stacked tabs +.tabs-stacked .open > a:hover { + border-color: @grayLight; +} + + + +// TABBABLE +// -------- + + +// COMMON STYLES +// ------------- + +// Clear any floats +.tabbable { + .clearfix(); +} +.tab-content { + overflow: auto; // prevent content from running below tabs +} + +// Remove border on bottom, left, right +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +// Show/hide tabbable areas +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} +.tab-content > .active, +.pill-content > .active { + display: block; +} + + +// BOTTOM +// ------ + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} +.tabs-below > .nav-tabs > li > a { + .border-radius(0 0 4px 4px); + &:hover { + border-bottom-color: transparent; + border-top-color: #ddd; + } +} +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +// LEFT & RIGHT +// ------------ + +// Common styles +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +// Tabs on the left +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + .border-radius(4px 0 0 4px); +} +.tabs-left > .nav-tabs > li > a:hover { + border-color: @grayLighter #ddd @grayLighter @grayLighter; +} +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: @white; +} + +// Tabs on the right +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + .border-radius(0 4px 4px 0); +} +.tabs-right > .nav-tabs > li > a:hover { + border-color: @grayLighter @grayLighter @grayLighter #ddd; +} +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: @white; +} + + + +// DISABLED STATES +// --------------- + +// Gray out text +.nav > .disabled > a { + color: @grayLight; +} +// Nuke hover effects +.nav > .disabled > a:hover { + text-decoration: none; + background-color: transparent; + cursor: default; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/pager.less b/NzbDrone.Web/Content2/Bootstrap/pager.less new file mode 100644 index 000000000..a7629d3db --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/pager.less @@ -0,0 +1,40 @@ +// +// Pager pagination +// -------------------------------------------------- + + +.pager { + margin: @baseLineHeight 0; + list-style: none; + text-align: center; + .clearfix(); +} +.pager li { + display: inline; +} +.pager a, +.pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + .border-radius(15px); +} +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next a, +.pager .next span { + float: right; +} +.pager .previous a { + float: left; +} +.pager .disabled a, +.pager .disabled a:hover, +.pager .disabled span { + color: @grayLight; + background-color: #fff; + cursor: default; +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/pagination.less b/NzbDrone.Web/Content2/Bootstrap/pagination.less new file mode 100644 index 000000000..61a760be5 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/pagination.less @@ -0,0 +1,64 @@ +// +// Pagination (multiple pages) +// -------------------------------------------------- + + +.pagination { + height: @baseLineHeight * 2; + margin: @baseLineHeight 0; + } +.pagination ul { + display: inline-block; + .ie7-inline-block(); + margin-left: 0; + margin-bottom: 0; + .border-radius(3px); + .box-shadow(0 1px 2px rgba(0,0,0,.05)); +} +.pagination ul > li { + display: inline; +} +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: (@baseLineHeight * 2) - 2; + text-decoration: none; + background-color: @paginationBackground; + border: 1px solid @paginationBorder; + border-left-width: 0; +} +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: @grayLight; + cursor: default; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: @grayLight; + background-color: transparent; + cursor: default; +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + .border-radius(3px 0 0 3px); +} +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + .border-radius(0 3px 3px 0); +} + +// Centered +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/popovers.less b/NzbDrone.Web/Content2/Bootstrap/popovers.less new file mode 100644 index 000000000..2b3f1b059 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/popovers.less @@ -0,0 +1,117 @@ +// +// Popovers +// -------------------------------------------------- + + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: @zindexPopover; + display: none; + width: 236px; + padding: 1px; + background-color: @popoverBackground; + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + .border-radius(6px); + .box-shadow(0 5px 10px rgba(0,0,0,.2)); + + // Offset the popover to account for the popover arrow + &.top { margin-bottom: 10px; } + &.right { margin-left: 10px; } + &.bottom { margin-top: 10px; } + &.left { margin-right: 10px; } + +} + +.popover-title { + margin: 0; // reset heading margin + padding: 8px 14px; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: @popoverTitleBackground; + border-bottom: 1px solid darken(@popoverTitleBackground, 5%); + .border-radius(5px 5px 0 0); +} + +.popover-content { + padding: 9px 14px; + p, ul, ol { + margin-bottom: 0; + } +} + +// Arrows +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover .arrow:after { + content: ""; + z-index: -1; +} + +.popover { + &.top .arrow { + bottom: -@popoverArrowWidth; + left: 50%; + margin-left: -@popoverArrowWidth; + border-width: @popoverArrowWidth @popoverArrowWidth 0; + border-top-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth 0; + border-top-color: @popoverArrowOuterColor; + bottom: -1px; + left: -@popoverArrowOuterWidth; + } + } + &.right .arrow { + top: 50%; + left: -@popoverArrowWidth; + margin-top: -@popoverArrowWidth; + border-width: @popoverArrowWidth @popoverArrowWidth @popoverArrowWidth 0; + border-right-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth @popoverArrowOuterWidth @popoverArrowOuterWidth 0; + border-right-color: @popoverArrowOuterColor; + bottom: -@popoverArrowOuterWidth; + left: -1px; + } + } + &.bottom .arrow { + top: -@popoverArrowWidth; + left: 50%; + margin-left: -@popoverArrowWidth; + border-width: 0 @popoverArrowWidth @popoverArrowWidth; + border-bottom-color: @popoverArrowColor; + &:after { + border-width: 0 @popoverArrowOuterWidth @popoverArrowOuterWidth; + border-bottom-color: @popoverArrowOuterColor; + top: -1px; + left: -@popoverArrowOuterWidth; + } + } + &.left .arrow { + top: 50%; + right: -@popoverArrowWidth; + margin-top: -@popoverArrowWidth; + border-width: @popoverArrowWidth 0 @popoverArrowWidth @popoverArrowWidth; + border-left-color: @popoverArrowColor; + &:after { + border-width: @popoverArrowOuterWidth 0 @popoverArrowOuterWidth @popoverArrowOuterWidth; + border-left-color: @popoverArrowOuterColor; + bottom: -@popoverArrowOuterWidth; + right: -1px; + } + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/progress-bars.less b/NzbDrone.Web/Content2/Bootstrap/progress-bars.less new file mode 100644 index 000000000..5d5a1da7b --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/progress-bars.less @@ -0,0 +1,122 @@ +// +// Progress bars +// -------------------------------------------------- + + +// ANIMATIONS +// ---------- + +// Webkit +@-webkit-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Firefox +@-moz-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// IE9 +@-ms-keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + +// Opera +@-o-keyframes progress-bar-stripes { + from { background-position: 0 0; } + to { background-position: 40px 0; } +} + +// Spec +@keyframes progress-bar-stripes { + from { background-position: 40px 0; } + to { background-position: 0 0; } +} + + + +// THE BARS +// -------- + +// Outer container +.progress { + overflow: hidden; + height: @baseLineHeight; + margin-bottom: @baseLineHeight; + #gradient > .vertical(#f5f5f5, #f9f9f9); + .box-shadow(inset 0 1px 2px rgba(0,0,0,.1)); + .border-radius(4px); +} + +// Bar of progress +.progress .bar { + width: 0%; + height: 100%; + color: @white; + float: left; + font-size: 12px; + text-align: center; + //text-shadow: 0 -1px 0 rgba(0,0,0,.25); + #gradient > .vertical(#149bdf, #0480be); + .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15)); + .box-sizing(border-box); + .transition(width .6s ease); +} +.progress .bar + .bar { + .box-shadow(inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15)); +} + +// Striped bars +.progress-striped .bar { + #gradient > .striped(#149bdf); + .background-size(40px 40px); +} + +// Call animation for the active one +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + + + +// COLORS +// ------ + +// Danger (red) +.progress-danger .bar, .progress .bar-danger { + #gradient > .vertical(#ee5f5b, #c43c35); +} +.progress-danger.progress-striped .bar, .progress-striped .bar-danger { + #gradient > .striped(#ee5f5b); +} + +// Success (green) +.progress-success .bar, .progress .bar-success { + #gradient > .vertical(#62c462, #57a957); +} +.progress-success.progress-striped .bar, .progress-striped .bar-success { + #gradient > .striped(#62c462); +} + +// Info (teal) +.progress-info .bar, .progress .bar-info { + #gradient > .vertical(#5bc0de, #339bb9); +} +.progress-info.progress-striped .bar, .progress-striped .bar-info { + #gradient > .striped(#5bc0de); +} + +// Warning (orange) +.progress-warning .bar, .progress .bar-warning { + #gradient > .vertical(lighten(@orange, 15%), @orange); +} +.progress-warning.progress-striped .bar, .progress-striped .bar-warning { + #gradient > .striped(lighten(@orange, 15%)); +} diff --git a/NzbDrone.Web/Content2/Bootstrap/reset.less b/NzbDrone.Web/Content2/Bootstrap/reset.less new file mode 100644 index 000000000..2901a85c8 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/reset.less @@ -0,0 +1,137 @@ +// +// Modals +// Adapted from http://github.com/necolas/normalize.css +// -------------------------------------------------- + + +// Display in IE6-9 and FF3 +// ------------------------- + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +// Display block in IE6-9 and FF3 +// ------------------------- + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +// Prevents modern browsers from displaying 'audio' without controls +// ------------------------- + +audio:not([controls]) { + display: none; +} + +// Base settings +// ------------------------- + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +// Focus states +a:focus { + .tab-focus(); +} +// Hover & Active +a:hover, +a:active { + outline: 0; +} + +// Prevents sub and sup affecting line-height in all browsers +// ------------------------- + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} + +// Img border in a's and image quality +// ------------------------- + +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; /* Part 1: Set a maxium relative to the parent */ + width: auto\9; /* IE7-8 need help adjusting responsive images */ + height: auto; /* Part 2: Scale the height according to the width, otherwise you get stretching */ + + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +// Prevent max-width from affecting Google Maps +#map_canvas img { + max-width: none; +} + +// Forms +// ------------------------- + +// Font size in all browsers, margin changes, misc consistency +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} +button, +input { + *overflow: visible; // Inner spacing ie IE6/7 + line-height: normal; // FF3/4 have !important on line-height in UA stylesheet +} +button::-moz-focus-inner, +input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 + padding: 0; + border: 0; +} +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; // Cursors on all buttons applied consistently + -webkit-appearance: button; // Style clickable inputs in iOS +} +input[type="search"] { // Appearance in Safari/Chrome + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 +} +textarea { + overflow: auto; // Remove vertical scrollbar in IE6-9 + vertical-align: top; // Readability and alignment cross-browser +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive-1200px-min.less b/NzbDrone.Web/Content2/Bootstrap/responsive-1200px-min.less new file mode 100644 index 000000000..4f35ba6ca --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive-1200px-min.less @@ -0,0 +1,28 @@ +// +// Responsive: Large desktop and up +// -------------------------------------------------- + + +@media (min-width: 1200px) { + + // Fixed grid + #grid > .core(@gridColumnWidth1200, @gridGutterWidth1200); + + // Fluid grid + #grid > .fluid(@fluidGridColumnWidth1200, @fluidGridGutterWidth1200); + + // Input grid + #grid > .input(@gridColumnWidth1200, @gridGutterWidth1200); + + // Thumbnails + .thumbnails { + margin-left: -@gridGutterWidth1200; + } + .thumbnails > li { + margin-left: @gridGutterWidth1200; + } + .row-fluid .thumbnails { + margin-left: 0; + } + +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive-767px-max.less b/NzbDrone.Web/Content2/Bootstrap/responsive-767px-max.less new file mode 100644 index 000000000..79c7eaa82 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive-767px-max.less @@ -0,0 +1,174 @@ +// +// Responsive: Landscape phone to desktop/tablet +// -------------------------------------------------- + + +@media (max-width: 767px) { + + // Padding to set content in a bit + body { + padding-left: 20px; + padding-right: 20px; + } + // Negative indent the now static "fixed" navbar + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-left: -20px; + margin-right: -20px; + } + // Remove padding on container given explicit padding set on body + .container-fluid { + padding: 0; + } + + // TYPOGRAPHY + // ---------- + // Reset horizontal dl + .dl-horizontal { + dt { + float: none; + clear: none; + width: auto; + text-align: left; + } + dd { + margin-left: 0; + } + } + + // GRID & CONTAINERS + // ----------------- + // Remove width from containers + .container { + width: auto; + } + // Fluid rows + .row-fluid { + width: 100%; + } + // Undo negative margin on rows and thumbnails + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; // Reset the default margin for all li elements when no .span* classes are present + } + // Make all grid-sized elements block level again + [class*="span"], + .row-fluid [class*="span"] { + float: none; + display: block; + width: 100%; + margin-left: 0; + .box-sizing(border-box); + } + .span12, + .row-fluid .span12 { + width: 100%; + .box-sizing(border-box); + } + + // FORM FIELDS + // ----------- + // Make span* classes full width + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + .input-block-level(); + } + // But don't let it screw up prepend/append inputs + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; // redeclare so they don't wrap to new lines + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + + // Modals + .modal { + position: fixed; + top: 20px; + left: 20px; + right: 20px; + width: auto; + margin: 0; + &.fade.in { top: auto; } + } + +} + + + +// UP TO LANDSCAPE PHONE +// --------------------- + +@media (max-width: 480px) { + + // Smooth out the collapsing/expanding nav + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); // activate the GPU + } + + // Block level the page header small tag for readability + .page-header h1 small { + display: block; + line-height: @baseLineHeight; + } + + // Update checkboxes for iOS + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + + // Remove the horizontal form styles + .form-horizontal { + .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + // Move over all input controls and content + .controls { + margin-left: 0; + } + // Move the options list down to align with labels + .control-list { + padding-top: 0; // has to be padding because margin collaspes + } + // Move over buttons in .form-actions to align with .controls + .form-actions { + padding-left: 10px; + padding-right: 10px; + } + } + + // Modals + .modal { + top: 10px; + left: 10px; + right: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + + // Carousel + .carousel-caption { + position: static; + } + +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive-768px-979px.less b/NzbDrone.Web/Content2/Bootstrap/responsive-768px-979px.less new file mode 100644 index 000000000..8e8c486a0 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive-768px-979px.less @@ -0,0 +1,19 @@ +// +// Responsive: Tablet to desktop +// -------------------------------------------------- + + +@media (min-width: 768px) and (max-width: 979px) { + + // Fixed grid + #grid > .core(@gridColumnWidth768, @gridGutterWidth768); + + // Fluid grid + #grid > .fluid(@fluidGridColumnWidth768, @fluidGridGutterWidth768); + + // Input grid + #grid > .input(@gridColumnWidth768, @gridGutterWidth768); + + // No need to reset .thumbnails here since it's the same @gridGutterWidth + +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive-navbar.less b/NzbDrone.Web/Content2/Bootstrap/responsive-navbar.less new file mode 100644 index 000000000..c454dd5e3 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive-navbar.less @@ -0,0 +1,177 @@ +// +// Responsive: Navbar +// -------------------------------------------------- + + +// TABLETS AND BELOW +// ----------------- +@media (max-width: @navbarCollapseWidth) { + + // UNFIX THE TOPBAR + // ---------------- + // Remove any padding from the body + body { + padding-top: 0; + } + // Unfix the navbars + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: @baseLineHeight; + } + .navbar-fixed-bottom { + margin-top: @baseLineHeight; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + // Account for brand name + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + + // COLLAPSIBLE NAVBAR + // ------------------ + // Nav collapse clears brand + .nav-collapse { + clear: both; + } + // Block-level the nav + .nav-collapse .nav { + float: none; + margin: 0 0 (@baseLineHeight / 2); + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: @navbarText; + text-shadow: none; + } + // Nav and dropdown links in navbar + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: @navbarLinkColor; + .border-radius(3px); + } + // Buttons + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + .border-radius(4px); + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: @navbarBackground; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: @navbarInverseBackground; + } + // Buttons in the navbar + .nav-collapse.in .btn-group { + margin-top: 5px; + padding: 0; + } + // Dropdowns in the navbar + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + .border-radius(0); + .box-shadow(none); + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu { + &:before, + &:after { + display: none; + } + } + // Forms in navbar + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: (@baseLineHeight / 2) 15px; + margin: (@baseLineHeight / 2) 0; + border-top: 1px solid @navbarBackground; + border-bottom: 1px solid @navbarBackground; + .box-shadow(inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1)); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: @navbarInverseBackground; + border-bottom-color: @navbarInverseBackground; + } + // Pull right (secondary) nav content + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + // Hide everything in the navbar save .brand and toggle button */ + .nav-collapse, + .nav-collapse.collapse { + overflow: hidden; + height: 0; + } + // Navbar button + .navbar .btn-navbar { + display: block; + } + + // STATIC NAVBAR + // ------------- + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + + +} + + +// DEFAULT DESKTOP +// --------------- + +@media (min-width: 980px) { + + // Required to make the collapsing navbar work on regular desktops + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } + +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive-utilities.less b/NzbDrone.Web/Content2/Bootstrap/responsive-utilities.less new file mode 100644 index 000000000..2c3f6c15f --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive-utilities.less @@ -0,0 +1,43 @@ +// +// Responsive: Utility classes +// -------------------------------------------------- + + +// Hide from screenreaders and browsers +// Credit: HTML5 Boilerplate +.hidden { + display: none; + visibility: hidden; +} + +// Visibility utilities + +// For desktops +.visible-phone { display: none !important; } +.visible-tablet { display: none !important; } +.hidden-phone { } +.hidden-tablet { } +.hidden-desktop { display: none !important; } +.visible-desktop { display: inherit !important; } + +// Tablets & small desktops only +@media (min-width: 768px) and (max-width: 979px) { + // Hide everything else + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important ; } + // Show + .visible-tablet { display: inherit !important; } + // Hide + .hidden-tablet { display: none !important; } +} + +// Phones only +@media (max-width: 767px) { + // Hide everything else + .hidden-desktop { display: inherit !important; } + .visible-desktop { display: none !important; } + // Show + .visible-phone { display: inherit !important; } // Use inherit to restore previous behavior + // Hide + .hidden-phone { display: none !important; } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/responsive.less b/NzbDrone.Web/Content2/Bootstrap/responsive.less new file mode 100644 index 000000000..87b347085 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/responsive.less @@ -0,0 +1,48 @@ +/*! + * Bootstrap Responsive v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + + +// Responsive.less +// For phone and tablet devices +// ------------------------------------------------------------- + + +// REPEAT VARIABLES & MIXINS +// ------------------------- +// Required since we compile the responsive stuff separately + +@import "variables.less"; // Modify this for custom colors, font-sizes, etc +@import "mixins.less"; + + +// RESPONSIVE CLASSES +// ------------------ + +@import "responsive-utilities.less"; + + +// MEDIA QUERIES +// ------------------ + +// Large desktops +@import "responsive-1200px-min.less"; + +// Tablets to regular desktops +@import "responsive-768px-979px.less"; + +// Phones to portrait tablets and narrow desktops +@import "responsive-767px-max.less"; + + +// RESPONSIVE NAVBAR +// ------------------ + +// From 979px and below, show a button to toggle navbar contents +@import "responsive-navbar.less"; diff --git a/NzbDrone.Web/Content2/Bootstrap/scaffolding.less b/NzbDrone.Web/Content2/Bootstrap/scaffolding.less new file mode 100644 index 000000000..7a7496a64 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/scaffolding.less @@ -0,0 +1,52 @@ +// +// Scaffolding +// -------------------------------------------------- + + +// Body reset +// ------------------------- + +body { + margin: 0; + font-family: @baseFontFamily; + font-size: @baseFontSize; + line-height: @baseLineHeight; + color: @textColor; + background-color: @bodyBackground; +} + + +// Links +// ------------------------- + +a { + color: @linkColor; + text-decoration: none; +} +a:hover { + color: @linkColorHover; + text-decoration: underline; +} + + +// Images +// ------------------------- + +// Rounded corners +.img-rounded { + .border-radius(6px); +} + +// Add polaroid-esque trim +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0,0,0,.2); + .box-shadow(0 1px 3px rgba(0,0,0,.1)); +} + +// Perfect circle +.img-circle { + .border-radius(500px); // crank the border-radius so it works with most reasonably sized images +} diff --git a/NzbDrone.Web/Content2/Bootstrap/sprites.less b/NzbDrone.Web/Content2/Bootstrap/sprites.less new file mode 100644 index 000000000..9bf970fa9 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/sprites.less @@ -0,0 +1,193 @@ +// +// Sprites +// -------------------------------------------------- + + +// ICONS +// ----- + +// All icons receive the styles of the tag with a base class +// of .i and are then given a unique class to add width, height, +// and background-position. Your resulting HTML will look like +// . + +// For the white version of the icons, just add the .icon-white class: +// + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + .ie7-restore-right-whitespace(); + line-height: 14px; + vertical-align: text-top; + background-image: url("@{iconSpritePath}"); + background-position: 14px 14px; + background-repeat: no-repeat; + margin-top: 1px; +} + +/* White icons with optional class, or on hover/active states of certain elements */ +.icon-white, +.nav-tabs > .active > a > [class^="icon-"], +.nav-tabs > .active > a > [class*=" icon-"], +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("@{iconWhiteSpritePath}"); +} + +.icon-glass { background-position: 0 0; } +.icon-music { background-position: -24px 0; } +.icon-search { background-position: -48px 0; } +.icon-envelope { background-position: -72px 0; } +.icon-heart { background-position: -96px 0; } +.icon-star { background-position: -120px 0; } +.icon-star-empty { background-position: -144px 0; } +.icon-user { background-position: -168px 0; } +.icon-film { background-position: -192px 0; } +.icon-th-large { background-position: -216px 0; } +.icon-th { background-position: -240px 0; } +.icon-th-list { background-position: -264px 0; } +.icon-ok { background-position: -288px 0; } +.icon-remove { background-position: -312px 0; } +.icon-zoom-in { background-position: -336px 0; } +.icon-zoom-out { background-position: -360px 0; } +.icon-off { background-position: -384px 0; } +.icon-signal { background-position: -408px 0; } +.icon-cog { background-position: -432px 0; } +.icon-trash { background-position: -456px 0; } + +.icon-home { background-position: 0 -24px; } +.icon-file { background-position: -24px -24px; } +.icon-time { background-position: -48px -24px; } +.icon-road { background-position: -72px -24px; } +.icon-download-alt { background-position: -96px -24px; } +.icon-download { background-position: -120px -24px; } +.icon-upload { background-position: -144px -24px; } +.icon-inbox { background-position: -168px -24px; } +.icon-play-circle { background-position: -192px -24px; } +.icon-repeat { background-position: -216px -24px; } +.icon-refresh { background-position: -240px -24px; } +.icon-list-alt { background-position: -264px -24px; } +.icon-lock { background-position: -287px -24px; } // 1px off +.icon-flag { background-position: -312px -24px; } +.icon-headphones { background-position: -336px -24px; } +.icon-volume-off { background-position: -360px -24px; } +.icon-volume-down { background-position: -384px -24px; } +.icon-volume-up { background-position: -408px -24px; } +.icon-qrcode { background-position: -432px -24px; } +.icon-barcode { background-position: -456px -24px; } + +.icon-tag { background-position: 0 -48px; } +.icon-tags { background-position: -25px -48px; } // 1px off +.icon-book { background-position: -48px -48px; } +.icon-bookmark { background-position: -72px -48px; } +.icon-print { background-position: -96px -48px; } +.icon-camera { background-position: -120px -48px; } +.icon-font { background-position: -144px -48px; } +.icon-bold { background-position: -167px -48px; } // 1px off +.icon-italic { background-position: -192px -48px; } +.icon-text-height { background-position: -216px -48px; } +.icon-text-width { background-position: -240px -48px; } +.icon-align-left { background-position: -264px -48px; } +.icon-align-center { background-position: -288px -48px; } +.icon-align-right { background-position: -312px -48px; } +.icon-align-justify { background-position: -336px -48px; } +.icon-list { background-position: -360px -48px; } +.icon-indent-left { background-position: -384px -48px; } +.icon-indent-right { background-position: -408px -48px; } +.icon-facetime-video { background-position: -432px -48px; } +.icon-picture { background-position: -456px -48px; } + +.icon-pencil { background-position: 0 -72px; } +.icon-map-marker { background-position: -24px -72px; } +.icon-adjust { background-position: -48px -72px; } +.icon-tint { background-position: -72px -72px; } +.icon-edit { background-position: -96px -72px; } +.icon-share { background-position: -120px -72px; } +.icon-check { background-position: -144px -72px; } +.icon-move { background-position: -168px -72px; } +.icon-step-backward { background-position: -192px -72px; } +.icon-fast-backward { background-position: -216px -72px; } +.icon-backward { background-position: -240px -72px; } +.icon-play { background-position: -264px -72px; } +.icon-pause { background-position: -288px -72px; } +.icon-stop { background-position: -312px -72px; } +.icon-forward { background-position: -336px -72px; } +.icon-fast-forward { background-position: -360px -72px; } +.icon-step-forward { background-position: -384px -72px; } +.icon-eject { background-position: -408px -72px; } +.icon-chevron-left { background-position: -432px -72px; } +.icon-chevron-right { background-position: -456px -72px; } + +.icon-plus-sign { background-position: 0 -96px; } +.icon-minus-sign { background-position: -24px -96px; } +.icon-remove-sign { background-position: -48px -96px; } +.icon-ok-sign { background-position: -72px -96px; } +.icon-question-sign { background-position: -96px -96px; } +.icon-info-sign { background-position: -120px -96px; } +.icon-screenshot { background-position: -144px -96px; } +.icon-remove-circle { background-position: -168px -96px; } +.icon-ok-circle { background-position: -192px -96px; } +.icon-ban-circle { background-position: -216px -96px; } +.icon-arrow-left { background-position: -240px -96px; } +.icon-arrow-right { background-position: -264px -96px; } +.icon-arrow-up { background-position: -289px -96px; } // 1px off +.icon-arrow-down { background-position: -312px -96px; } +.icon-share-alt { background-position: -336px -96px; } +.icon-resize-full { background-position: -360px -96px; } +.icon-resize-small { background-position: -384px -96px; } +.icon-plus { background-position: -408px -96px; } +.icon-minus { background-position: -433px -96px; } +.icon-asterisk { background-position: -456px -96px; } + +.icon-exclamation-sign { background-position: 0 -120px; } +.icon-gift { background-position: -24px -120px; } +.icon-leaf { background-position: -48px -120px; } +.icon-fire { background-position: -72px -120px; } +.icon-eye-open { background-position: -96px -120px; } +.icon-eye-close { background-position: -120px -120px; } +.icon-warning-sign { background-position: -144px -120px; } +.icon-plane { background-position: -168px -120px; } +.icon-calendar { background-position: -192px -120px; } +.icon-random { background-position: -216px -120px; width: 16px; } +.icon-comment { background-position: -240px -120px; } +.icon-magnet { background-position: -264px -120px; } +.icon-chevron-up { background-position: -288px -120px; } +.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off +.icon-retweet { background-position: -336px -120px; } +.icon-shopping-cart { background-position: -360px -120px; } +.icon-folder-close { background-position: -384px -120px; } +.icon-folder-open { background-position: -408px -120px; width: 16px; } +.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off +.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off + +.icon-hdd { background-position: 0 -144px; } +.icon-bullhorn { background-position: -24px -144px; } +.icon-bell { background-position: -48px -144px; } +.icon-certificate { background-position: -72px -144px; } +.icon-thumbs-up { background-position: -96px -144px; } +.icon-thumbs-down { background-position: -120px -144px; } +.icon-hand-right { background-position: -144px -144px; } +.icon-hand-left { background-position: -168px -144px; } +.icon-hand-up { background-position: -192px -144px; } +.icon-hand-down { background-position: -216px -144px; } +.icon-circle-arrow-right { background-position: -240px -144px; } +.icon-circle-arrow-left { background-position: -264px -144px; } +.icon-circle-arrow-up { background-position: -288px -144px; } +.icon-circle-arrow-down { background-position: -312px -144px; } +.icon-globe { background-position: -336px -144px; } +.icon-wrench { background-position: -360px -144px; } +.icon-tasks { background-position: -384px -144px; } +.icon-filter { background-position: -408px -144px; } +.icon-briefcase { background-position: -432px -144px; } +.icon-fullscreen { background-position: -456px -144px; } diff --git a/NzbDrone.Web/Content2/Bootstrap/tables.less b/NzbDrone.Web/Content2/Bootstrap/tables.less new file mode 100644 index 000000000..13c37c6e8 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/tables.less @@ -0,0 +1,245 @@ +// +// Tables +// -------------------------------------------------- + + +// BASE TABLES +// ----------------- + +table { + max-width: 100%; + background-color: @tableBackground; + border-collapse: collapse; + border-spacing: 0; +} + +// BASELINE STYLES +// --------------- + +.table { + width: 100%; + margin-bottom: @baseLineHeight; + // Cells + th, + td { + padding: 8px; + line-height: @baseLineHeight; + text-align: left; + vertical-align: top; + border-top: 1px solid @tableBorder; + } + th { + font-weight: bold; + } + // Bottom align for column headings + thead th { + vertical-align: bottom; + } + // Remove top border from thead by default + caption + thead tr:first-child th, + caption + thead tr:first-child td, + colgroup + thead tr:first-child th, + colgroup + thead tr:first-child td, + thead:first-child tr:first-child th, + thead:first-child tr:first-child td { + border-top: 0; + } + // Account for multiple tbody instances + tbody + tbody { + border-top: 2px solid @tableBorder; + } +} + + + +// CONDENSED TABLE W/ HALF PADDING +// ------------------------------- + +.table-condensed { + th, + td { + padding: 4px 5px; + } +} + + +// BORDERED VERSION +// ---------------- + +.table-bordered { + border: 1px solid @tableBorder; + border-collapse: separate; // Done so we can round those corners! + *border-collapse: collapse; // IE7 can't round corners anyway + border-left: 0; + .border-radius(4px); + th, + td { + border-left: 1px solid @tableBorder; + } + // Prevent a double border + caption + thead tr:first-child th, + caption + tbody tr:first-child th, + caption + tbody tr:first-child td, + colgroup + thead tr:first-child th, + colgroup + tbody tr:first-child th, + colgroup + tbody tr:first-child td, + thead:first-child tr:first-child th, + tbody:first-child tr:first-child th, + tbody:first-child tr:first-child td { + border-top: 0; + } + // For first th or td in the first row in the first thead or tbody + thead:first-child tr:first-child th:first-child, + tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + } + thead:first-child tr:first-child th:last-child, + tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + } + // For first th or td in the first row in the first thead or tbody + thead:last-child tr:last-child th:first-child, + tbody:last-child tr:last-child td:first-child, + tfoot:last-child tr:last-child td:first-child { + .border-radius(0 0 0 4px); + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + } + thead:last-child tr:last-child th:last-child, + tbody:last-child tr:last-child td:last-child, + tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + } + + // Special fixes to round the left border on the first td/th + caption + thead tr:first-child th:first-child, + caption + tbody tr:first-child td:first-child, + colgroup + thead tr:first-child th:first-child, + colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + } + caption + thead tr:first-child th:last-child, + caption + tbody tr:first-child td:last-child, + colgroup + thead tr:first-child th:last-child, + colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; + } + +} + + + + +// ZEBRA-STRIPING +// -------------- + +// Default zebra-stripe styles (alternating gray and transparent backgrounds) +.table-striped { + tbody { + tr:nth-child(odd) td, + tr:nth-child(odd) th { + background-color: @tableBackgroundAccent; + } + } +} + + +// HOVER EFFECT +// ------------ +// Placed here since it has to come after the potential zebra striping +.table-hover { + tbody { + tr:hover td, + tr:hover th { + background-color: @tableBackgroundHover; + } + } +} + + +// TABLE CELL SIZING +// ----------------- + +// Reset default grid behavior +table [class*=span], +.row-fluid table [class*=span] { + display: table-cell; + float: none; // undo default grid column styles + margin-left: 0; // undo default grid column styles +} + +// Change the column widths to account for td/th padding +.table { + .span1 { .tableColumns(1); } + .span2 { .tableColumns(2); } + .span3 { .tableColumns(3); } + .span4 { .tableColumns(4); } + .span5 { .tableColumns(5); } + .span6 { .tableColumns(6); } + .span7 { .tableColumns(7); } + .span8 { .tableColumns(8); } + .span9 { .tableColumns(9); } + .span10 { .tableColumns(10); } + .span11 { .tableColumns(11); } + .span12 { .tableColumns(12); } + .span13 { .tableColumns(13); } + .span14 { .tableColumns(14); } + .span15 { .tableColumns(15); } + .span16 { .tableColumns(16); } + .span17 { .tableColumns(17); } + .span18 { .tableColumns(18); } + .span19 { .tableColumns(19); } + .span20 { .tableColumns(20); } + .span21 { .tableColumns(21); } + .span22 { .tableColumns(22); } + .span23 { .tableColumns(23); } + .span24 { .tableColumns(24); } +} + + + +// TABLE BACKGROUNDS +// ----------------- +// Exact selectors below required to override .table-striped + +.table tbody tr { + &.success td { + background-color: @successBackground; + } + &.error td { + background-color: @errorBackground; + } + &.warning td { + background-color: @warningBackground; + } + &.info td { + background-color: @infoBackground; + } +} + +// Hover states for .table-hover +.table-hover tbody tr { + &.success:hover td { + background-color: darken(@successBackground, 5%); + } + &.error:hover td { + background-color: darken(@errorBackground, 5%); + } + &.warning:hover td { + background-color: darken(@warningBackground, 5%); + } + &.info:hover td { + background-color: darken(@infoBackground, 5%); + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/thumbnails.less b/NzbDrone.Web/Content2/Bootstrap/thumbnails.less new file mode 100644 index 000000000..91b75f785 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/thumbnails.less @@ -0,0 +1,52 @@ +// +// Thumbnails +// -------------------------------------------------- + + +// Note: `.thumbnails` and `.thumbnails > li` are overriden in responsive files + +// Make wrapper ul behave like the grid +.thumbnails { + margin-left: -@gridGutterWidth; + list-style: none; + .clearfix(); +} +// Fluid rows have no left margin +.row-fluid .thumbnails { + margin-left: 0; +} + +// Float li to make thumbnails appear in a row +.thumbnails > li { + float: left; // Explicity set the float since we don't require .span* classes + margin-bottom: @baseLineHeight; + margin-left: @gridGutterWidth; +} + +// The actual thumbnail (can be `a` or `div`) +.thumbnail { + display: block; + padding: 4px; + line-height: @baseLineHeight; + border: 1px solid #ddd; + .border-radius(4px); + .box-shadow(0 1px 3px rgba(0,0,0,.055)); + .transition(all .2s ease-in-out); +} +// Add a hover state for linked versions only +a.thumbnail:hover { + border-color: @linkColor; + .box-shadow(0 1px 4px rgba(0,105,214,.25)); +} + +// Images and captions +.thumbnail > img { + display: block; + max-width: 100%; + margin-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; + color: @gray; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/tooltip.less b/NzbDrone.Web/Content2/Bootstrap/tooltip.less new file mode 100644 index 000000000..fba1856f5 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/tooltip.less @@ -0,0 +1,70 @@ +// +// Tooltips +// -------------------------------------------------- + + +// Base class +.tooltip { + position: absolute; + z-index: @zindexTooltip; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + .opacity(0); + &.in { .opacity(80); } + &.top { margin-top: -3px; } + &.right { margin-left: 3px; } + &.bottom { margin-top: 3px; } + &.left { margin-left: -3px; } +} + +// Wrapper for the tooltip content +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: @tooltipColor; + text-align: center; + text-decoration: none; + background-color: @tooltipBackground; + .border-radius(4px); +} + +// Arrows +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip { + &.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth 0; + border-top-color: @tooltipArrowColor; + } + &.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth @tooltipArrowWidth @tooltipArrowWidth 0; + border-right-color: @tooltipArrowColor; + } + &.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -@tooltipArrowWidth; + border-width: @tooltipArrowWidth 0 @tooltipArrowWidth @tooltipArrowWidth; + border-left-color: @tooltipArrowColor; + } + &.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -@tooltipArrowWidth; + border-width: 0 @tooltipArrowWidth @tooltipArrowWidth; + border-bottom-color: @tooltipArrowColor; + } +} diff --git a/NzbDrone.Web/Content2/Bootstrap/type.less b/NzbDrone.Web/Content2/Bootstrap/type.less new file mode 100644 index 000000000..2e0f386ee --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/type.less @@ -0,0 +1,221 @@ +// +// Typography +// -------------------------------------------------- + + +// Body text +// ------------------------- + +p { + margin: 0 0 @baseLineHeight / 2; +} +.lead { + margin-bottom: @baseLineHeight; + font-size: @baseFontSize * 1.5; + font-weight: 200; + line-height: @baseLineHeight * 1.5; +} + + +// Emphasis & misc +// ------------------------- + +small { + font-size: 85%; // Ex: 14px base font * 85% = about 12px +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +cite { + font-style: normal; +} + +// Utility classes +.muted { + color: @grayLight; +} +.text-warning { + color: @warningText; +} +.text-error { + color: @errorText; +} +.text-info { + color: @infoText; +} +.text-success { + color: @successText; +} + + +// Headings +// ------------------------- + +h1, h2, h3, h4, h5, h6 { + margin: (@baseLineHeight / 2) 0; + font-family: @headingsFontFamily; + font-weight: @headingsFontWeight; + line-height: 1; + color: @headingsColor; + text-rendering: optimizelegibility; // Fix the character spacing for headings + small { + font-weight: normal; + line-height: 1; + color: @grayLight; + } +} +h1 { font-size: 36px; line-height: 40px; } +h2 { font-size: 30px; line-height: 40px; } +h3 { font-size: 24px; line-height: 40px; } +h4 { font-size: 18px; line-height: 20px; } +h5 { font-size: 14px; line-height: 20px; } +h6 { font-size: 12px; line-height: 20px; } + +h1 small { font-size: 24px; } +h2 small { font-size: 18px; } +h3 small { font-size: 14px; } +h4 small { font-size: 14px; } + + +// Page header +// ------------------------- + +.page-header { + padding-bottom: (@baseLineHeight / 2) - 1; + margin: @baseLineHeight 0 (@baseLineHeight * 1.5); + border-bottom: 1px solid @grayLighter; +} + + + +// Lists +// -------------------------------------------------- + +// Unordered and Ordered lists +ul, ol { + padding: 0; + margin: 0 0 @baseLineHeight / 2 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +li { + line-height: @baseLineHeight; +} +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +// Description Lists +dl { + margin-bottom: @baseLineHeight; +} +dt, +dd { + line-height: @baseLineHeight; +} +dt { + font-weight: bold; +} +dd { + margin-left: @baseLineHeight / 2; +} +// Horizontal layout (like forms) +.dl-horizontal { + .clearfix(); // Ensure dl clears floats if empty dd elements present + dt { + float: left; + width: @horizontalComponentOffset - 20; + clear: left; + text-align: right; + .text-overflow(); + } + dd { + margin-left: @horizontalComponentOffset; + } +} + +// MISC +// ---- + +// Horizontal rules +hr { + margin: @baseLineHeight 0; + border: 0; + border-top: 1px solid @hrBorder; + border-bottom: 1px solid @white; +} + +// Abbreviations and acronyms +abbr[title] { + cursor: help; + border-bottom: 1px dotted @grayLight; +} +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +// Blockquotes +blockquote { + padding: 0 0 0 15px; + margin: 0 0 @baseLineHeight; + border-left: 5px solid @grayLighter; + p { + margin-bottom: 0; + #font > .shorthand(16px,300,@baseLineHeight * 1.25); + } + small { + display: block; + line-height: @baseLineHeight; + color: @grayLight; + &:before { + content: '\2014 \00A0'; + } + } + + // Float right with text-align: right + &.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid @grayLighter; + border-left: 0; + p, + small { + text-align: right; + } + small { + &:before { + content: ''; + } + &:after { + content: '\00A0 \2014'; + } + } + } +} + +// Quotes +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +// Addresses +address { + display: block; + margin-bottom: @baseLineHeight; + font-style: normal; + line-height: @baseLineHeight; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/utilities.less b/NzbDrone.Web/Content2/Bootstrap/utilities.less new file mode 100644 index 000000000..314b4ffdb --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/utilities.less @@ -0,0 +1,30 @@ +// +// Utility classes +// -------------------------------------------------- + + +// Quick floats +.pull-right { + float: right; +} +.pull-left { + float: left; +} + +// Toggling content +.hide { + display: none; +} +.show { + display: block; +} + +// Visibility +.invisible { + visibility: hidden; +} + +// For Affix plugin +.affix { + position: fixed; +} diff --git a/NzbDrone.Web/Content2/Bootstrap/variables.css b/NzbDrone.Web/Content2/Bootstrap/variables.css new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/variables.css @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/variables.less b/NzbDrone.Web/Content2/Bootstrap/variables.less new file mode 100644 index 000000000..b55d0a789 --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/variables.less @@ -0,0 +1,280 @@ +// +// Variables +// -------------------------------------------------- + + +// Global values +// -------------------------------------------------- + + +// Grays +// ------------------------- +@black: #57606B; +@grayDarker: #191919 ; +@grayDark: #57606B; +@gray: #57606B; +@grayLight: #999; +@grayLighter: #eee; +@white: #fff; + + +// Accent colors +// ------------------------- +@blue: #065EFE; +@blueDark: #0064cd; +@blueDark: #0064cd; +@green: #46a546; +@red: #9d261d; +@yellow: #ffc40d; +@orange: #f89406; +@pink: #c3325f; +@purple: #7a43b6; + + +// Scaffolding +// ------------------------- +@bodyBackground: @grayDarker; +@textColor: @grayDark; + + +// Links +// ------------------------- +@linkColor: #08c; +@linkColorHover: darken(@linkColor, 15%); + + +// Typography +// ------------------------- +@sansFontFamily: "Open Sans","Segoe UI","Segoe WP", "Helvetica Neue", Helvetica, Arial, sans-serif; +@serifFontFamily: Georgia, "Times New Roman", Times, serif; +@monoFontFamily: Monaco, Menlo, Consolas, "Courier New", monospace; + +@baseFontSize: 20px; +@baseFontFamily: @sansFontFamily; +@baseLineHeight: 30px; +@altFontFamily: @serifFontFamily; + +@headingsFontFamily: inherit; // empty to use BS default, @baseFontFamily +@headingsFontWeight: 100; // instead of browser default, bold +@headingsColor: inherit; // empty to use BS default, @textColor + +// Tables +// ------------------------- +@tableBackground: transparent; // overall background-color +@tableBackgroundAccent: #f9f9f9; // for striping +@tableBackgroundHover: #f5f5f5; // for hover +@tableBorder: #ddd; // table and cell border + +// Buttons +// ------------------------- +@btnBackground: @white; +@btnBackgroundHighlight: darken(@white, 10%); +@btnBorder: #bbb; + +@btnPrimaryBackground: @linkColor; +@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); + +@btnInfoBackground: #5bc0de; +@btnInfoBackgroundHighlight: #2f96b4; + +@btnSuccessBackground: #62c462; +@btnSuccessBackgroundHighlight: #51a351; + +@btnWarningBackground: lighten(@orange, 15%); +@btnWarningBackgroundHighlight: @orange; + +@btnDangerBackground: #ee5f5b; +@btnDangerBackgroundHighlight: #bd362f; + +@btnInverseBackground: #444; +@btnInverseBackgroundHighlight: @grayDarker; + + +// Forms +// ------------------------- +@inputBackground: @white; +@inputBorder: #ccc; +@inputBorderRadius: 0px; +@inputDisabledBackground: @grayLighter; +@formActionsBackground: #f5f5f5; + +// Dropdowns +// ------------------------- +@dropdownBackground: @white; +@dropdownBorder: rgba(0,0,0,.2); +@dropdownDividerTop: #e5e5e5; +@dropdownDividerBottom: @white; + +@dropdownLinkColor: @grayDark; +@dropdownLinkColorHover: @white; +@dropdownLinkColorActive: @dropdownLinkColor; + +@dropdownLinkBackgroundActive: @linkColor; +@dropdownLinkBackgroundHover: @dropdownLinkBackgroundActive; + + + +// COMPONENT VARIABLES +// -------------------------------------------------- + +// Z-index master list +// ------------------------- +// Used for a bird's eye view of components dependent on the z-axis +// Try to avoid customizing these :) +@zindexDropdown: 1000; +@zindexPopover: 1010; +@zindexTooltip: 1030; +@zindexFixedNavbar: 1030; +@zindexModalBackdrop: 1040; +@zindexModal: 1050; + + +// Sprite icons path +// ------------------------- +@iconSpritePath: "../img/glyphicons-halflings.png"; +@iconWhiteSpritePath: "../img/glyphicons-halflings-white.png"; + + +// Input placeholder text color +// ------------------------- +@placeholderText: @grayLight; + + +// Hr border color +// ------------------------- +@hrBorder: @grayLighter; + + +// Horizontal forms & lists +// ------------------------- +@horizontalComponentOffset: 180px; + + +// Wells +// ------------------------- +@wellBackground: #f5f5f5; + + +// Navbar +// ------------------------- +@navbarCollapseWidth: 979px; + +@navbarHeight: 60px; +@navbarBackgroundHighlight: #ffffff; +@navbarBackground: darken(@navbarBackgroundHighlight, 5%); +@navbarBorder: darken(@navbarBackground, 12%); + +@navbarText: #777; +@navbarLinkColor: #777; +@navbarLinkColorHover: @grayDark; +@navbarLinkColorActive: @gray; +@navbarLinkBackgroundHover: transparent; +@navbarLinkBackgroundActive: darken(@navbarBackground, 5%); + +@navbarBrandColor: @navbarLinkColor; + +// Inverted navbar +@navbarInverseBackground: @grayDarker; +@navbarInverseBackgroundHighlight: @grayDarker; +@navbarInverseBorder: @grayDarker; + +@navbarInverseText: @blue; +@navbarInverseLinkColor: @blue; +@navbarInverseLinkColorHover: @blue; +@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; +@navbarInverseLinkBackgroundHover: transparent; +@navbarInverseLinkBackgroundActive: @navbarInverseBackground; + +@navbarInverseSearchBackground: lighten(@navbarInverseBackground, 25%); +@navbarInverseSearchBackgroundFocus: @blue; +@navbarInverseSearchBorder: @navbarInverseBackground; +@navbarInverseSearchPlaceholderColor: #ccc; + +@navbarInverseBrandColor: @navbarInverseLinkColor; + + +// Pagination +// ------------------------- +@paginationBackground: #fff; +@paginationBorder: #ddd; +@paginationActiveBackground: #f5f5f5; + + +// Hero unit +// ------------------------- +@heroUnitBackground: @grayLighter; +@heroUnitHeadingColor: inherit; +@heroUnitLeadColor: inherit; + + +// Form states and alerts +// ------------------------- +@warningText: #c09853; +@warningBackground: #fcf8e3; +@warningBorder: darken(spin(@warningBackground, -10), 3%); + +@errorText: #b94a48; +@errorBackground: #f2dede; +@errorBorder: darken(spin(@errorBackground, -10), 3%); + +@successText: #468847; +@successBackground: #dff0d8; +@successBorder: darken(spin(@successBackground, -10), 5%); + +@infoText: #3a87ad; +@infoBackground: #d9edf7; +@infoBorder: darken(spin(@infoBackground, -10), 7%); + + +// Tooltips and popovers +// ------------------------- +@tooltipColor: #fff; +@tooltipBackground: #000; +@tooltipArrowWidth: 5px; +@tooltipArrowColor: @tooltipBackground; + +@popoverBackground: #fff; +@popoverArrowWidth: 10px; +@popoverArrowColor: #fff; +@popoverTitleBackground: darken(@popoverBackground, 3%); + +// Special enhancement for popovers +@popoverArrowOuterWidth: @popoverArrowWidth + 1; +@popoverArrowOuterColor: rgba(0,0,0,.25); + + + +// GRID +// -------------------------------------------------- + + +// Default 940px grid +// ------------------------- +@gridColumns: 12; +@gridColumnWidth: 60px; +@gridGutterWidth: 20px; +@gridRowWidth: (@gridColumns * @gridColumnWidth) + (@gridGutterWidth * (@gridColumns - 1)); + +// 1200px min +@gridColumnWidth1200: 70px; +@gridGutterWidth1200: 30px; +@gridRowWidth1200: (@gridColumns * @gridColumnWidth1200) + (@gridGutterWidth1200 * (@gridColumns - 1)); + +// 768px-979px +@gridColumnWidth768: 42px; +@gridGutterWidth768: 20px; +@gridRowWidth768: (@gridColumns * @gridColumnWidth768) + (@gridGutterWidth768 * (@gridColumns - 1)); + + +// Fluid grid +// ------------------------- +@fluidGridColumnWidth: percentage(@gridColumnWidth/@gridRowWidth); +@fluidGridGutterWidth: percentage(@gridGutterWidth/@gridRowWidth); + +// 1200px min +@fluidGridColumnWidth1200: percentage(@gridColumnWidth1200/@gridRowWidth1200); +@fluidGridGutterWidth1200: percentage(@gridGutterWidth1200/@gridRowWidth1200); + +// 768px-979px +@fluidGridColumnWidth768: percentage(@gridColumnWidth768/@gridRowWidth768); +@fluidGridGutterWidth768: percentage(@gridGutterWidth768/@gridRowWidth768); diff --git a/NzbDrone.Web/Content2/Bootstrap/variables.min.css b/NzbDrone.Web/Content2/Bootstrap/variables.min.css new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/variables.min.css @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Bootstrap/wells.less b/NzbDrone.Web/Content2/Bootstrap/wells.less new file mode 100644 index 000000000..e4e0a9beb --- /dev/null +++ b/NzbDrone.Web/Content2/Bootstrap/wells.less @@ -0,0 +1,29 @@ +// +// Wells +// -------------------------------------------------- + + +// Base class +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: @wellBackground; + border: 1px solid darken(@wellBackground, 7%); + .border-radius(4px); + .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); + blockquote { + border-color: #ddd; + border-color: rgba(0,0,0,.15); + } +} + +// Sizes +.well-large { + padding: 24px; + .border-radius(6px); +} +.well-small { + padding: 9px; + .border-radius(3px); +} diff --git a/NzbDrone.Web/Content2/DataTables-NzbDrone/media/css/jquery.dataTables.css b/NzbDrone.Web/Content2/DataTables-NzbDrone/media/css/jquery.dataTables.css new file mode 100644 index 000000000..ddd272f9d --- /dev/null +++ b/NzbDrone.Web/Content2/DataTables-NzbDrone/media/css/jquery.dataTables.css @@ -0,0 +1,318 @@ + +/* + * Table + */ +table.dataTable { + margin: 0 auto; + clear: both; + width: 100%; + border-style: none; + border-width: 1px; + border-spacing: 2px; + border-color: white; + border-collapse: collapse; +} + +table.dataTable thead th { + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + border-width: 300; + font-size: 17px; + padding: 2px; + border-style: none; + border-color: #EEEEEE; + padding-left: 7px; + text-align: left; + background-color: white; + font-weight: lighter; + cursor: pointer; + *cursor: hand; +} + +table.dataTable tfoot th { + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + border-width: 300; + font-size: 17px; + padding: 2px; + border-style: none; + border-color: #EEEEEE; + padding-left: 7px; + text-align: left; + background-color: white; + font-weight: lighter; + cursor: pointer; + *cursor: hand; +} + +table.dataTable td { + /*padding: 3px 10px;*/ + border-width: 1px; + border-style: solid; + border-color: #EEEEEE; + padding: 0px 8px 0px 8px; +} + +table.dataTable td.center, +table.dataTable td.dataTables_empty { + text-align: center; +} + +table.dataTable tr.odd { background-color: white; } +table.dataTable tr.even { background-color: #F0F5FF; } + +/* Disable Sorting Highlighting +table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } +table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } +table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } +table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } +table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } +table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } +*/ + + +/* + * Table wrapper + */ +.dataTables_wrapper { + position: relative; + clear: both; + *zoom: 1; +} + + +/* + * Page length menu + */ +.dataTables_length { + float: left; +} + + +/* + * Filter + */ +.dataTables_filter { + float: right; + text-align: right; +} + + +/* + * Table information + */ +.dataTables_info { + clear: both; + float: right; +} + + +/* + * Pagination + */ +.dataTables_paginate { + float: left; + text-align: right; +} + +/* Two button pagination - previous / next */ +/*.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_next, +.paginate_enabled_next { + height: 19px; + float: left; + cursor: pointer; + *cursor: hand; + color: #111 !important; +} +.paginate_disabled_previous:hover, +.paginate_enabled_previous:hover, +.paginate_disabled_next:hover, +.paginate_enabled_next:hover { + text-decoration: none !important; +} +.paginate_disabled_previous:active, +.paginate_enabled_previous:active, +.paginate_disabled_next:active, +.paginate_enabled_next:active { + outline: none; +} + +.paginate_disabled_previous, +.paginate_disabled_next { + color: #666 !important; +} +.paginate_disabled_previous, +.paginate_enabled_previous { + padding-left: 23px; +} +.paginate_disabled_next, +.paginate_enabled_next { + padding-right: 23px; + margin-left: 10px; +} + +.paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } +.paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } +.paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } + +.paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } +.paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } +.paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } +*/ +/* Four button pagination - first / previous / next / last */ +.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_next, +.paginate_enabled_next, +.paginate_disabled_first, +.paginate_enabled_first, +.paginate_disabled_last, +.paginate_enabled_last { + height: 19px; + float: left; + cursor: pointer; + *cursor: hand; + color: #111 !important; +} +.paginate_disabled_previous:hover, +.paginate_enabled_previous:hover, +.paginate_disabled_next:hover, +.paginate_enabled_next:hover, +.paginate_disabled_first:hover, +.paginate_enabled_first:hover, +.paginate_disabled_last:hover, +.paginate_enabled_last:hover { + text-decoration: none !important; +} +.paginate_disabled_previous:active, +.paginate_enabled_previous:active, +.paginate_disabled_next:active, +.paginate_enabled_next:active, +.paginate_disabled_first:active, +.paginate_enabled_first:active, +.paginate_disabled_last:active, +.paginate_enabled_last:active { + outline: none; +} + +.paginate_disabled_previous, +.paginate_disabled_next, +.paginate_disabled_first, +.paginate_disabled_last { + color: #666 !important; +} +.paginate_disabled_previous, +.paginate_enabled_previous, +.paginate_disabled_first, +.paginate_enabled_first { + padding-left: 23px; +} +.paginate_disabled_next, +.paginate_enabled_next, +.paginate_disabled_last, +.paginate_enabled_last { + padding-right: 23px; + margin-left: 10px; +} + +.paginate_enabled_first { background: url('../images/back.png') no-repeat top left; } +.paginate_enabled_first:hover { background: url('../images/back.png') no-repeat top left; } +.paginate_disabled_first { background: url('../images/back.png') no-repeat top left; } + +.paginate_enabled_previous { background: url('../images/back.png') no-repeat top left; } +.paginate_enabled_previous:hover { background: url('../images/back.png') no-repeat top left; } +.paginate_disabled_previous { background: url('../images/back.png') no-repeat top left; } + +.paginate_enabled_next { background: url('../images/forward.png') no-repeat top right; } +.paginate_enabled_next:hover { background: url('../images/forward.png') no-repeat top right; } +.paginate_disabled_next { background: url('../images/forward.png') no-repeat top right; } + +.paginate_enabled_last { background: url('../images/forward.png') no-repeat top right; } +.paginate_enabled_last:hover { background: url('../images/forward.png') no-repeat top right; } +.paginate_disabled_last { background: url('../images/forward.png') no-repeat top right; } + +/* Full number pagination */ +.paging_full_numbers { + height: 22px; + line-height: 22px; +} +.paging_full_numbers a:active { + outline: none +} +.paging_full_numbers a:hover { + text-decoration: none; +} + +.paging_full_numbers a.paginate_button, +.paging_full_numbers a.paginate_active { + border: 1px solid #aaa; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 2px 5px; + margin: 0 3px; + cursor: pointer; + *cursor: hand; + color: #333 !important; +} + +.paging_full_numbers a.paginate_button { + background-color: #ddd; +} + +.paging_full_numbers a.paginate_button:hover { + background-color: #ccc; + text-decoration: none !important; +} + +.paging_full_numbers a.paginate_active { + background-color: #99B3FF; +} + + +/* + * Processing indicator + */ +.dataTables_processing { + position: absolute; + top: 50%; + left: 50%; + width: 250px; + height: 30px; + margin-left: -125px; + margin-top: -15px; + padding: 14px 0 2px 0; + border: 1px solid #ddd; + text-align: center; + color: #999; + font-size: 14px; + background-color: white; +} + + +/* + * Sorting + */ +.sorting { background: url('../images/sort_both.png') no-repeat center right; } +.sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } +.sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } + +.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } +.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } + +table.dataTable th:active { + outline: none; +} + + +/* + * Scrolling + */ +.dataTables_scroll { + clear: both; +} + +.dataTables_scrollBody { + *margin-top: -1px; +} + diff --git a/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/back.png b/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..52f92f914c539607244c02c4a781edb7dc13cdf8 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAd3?%E9GuQzs=3*z$5DpHG+YkL80J;1DJ|V9E z|NlR8=FH5QGmVXnfnw=@)i(nv&H|6fVg?4T4c yqj9K!kNBEJ9$Aft3e+a;eR>)nN?Rc`@xGkCiCxvX-L1;Fyx1 zl&avCS(I9yUzA;};2dniw(0T$pgJQ@7sn8enaK$USbTUDCVga_@rP0Ef78kTya}I} vX8d7LlW*{3-yp@lqe`vg9-B^^Gb6)+XZ)cvZf?i~>SpkC^>bP0l+XkKI@&|C literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_asc.png b/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_asc.png new file mode 100644 index 0000000000000000000000000000000000000000..f50f188ae00fcdd2000adc26fdcadcd689fbe908 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J&NLJ|V8} z-o1PF?AhJBcduT(dgjcTBS((x-o1PC=FO{Cty;8b(af1MCr+H$(b4h$|Nol_dm@0k z_)3EOf`MEFU~oNf=LArOv%n*=n1O*?2!t6g-L3lr6qG4(jVKAuPb(=;EJ|f?Ovz75 zRdCBJN-fVX$}U!L4mM%iba??#ow=urV+hC0O=#0l98WD1Hz^GK+C=e@fhgE~b#2$Ux^~T`1v5)mw1NlIe}zC z+ge9alrMQeN|SYi`>tC{zIG}!O_oO7k;UC8kBf>8sknx65F`zy2d1H-4fel=trX>@ z^-LCL<%6P%3`TJ=Ov$hao1$9VN|vJbLJV@SM>nJN{L>dS(6uOiBq(#Tm4F5Pz>p2Q zhq^NAP_G)%=(c^JwImV&17Zb~j6Ty5OHq1RS0sD)n5Dro1ouYi-$7;N6i6T&f*`~B zRW8JV5YO;|=5RQ?2M8R`v7Es2f}anI0YT(Au=3Evo2})=wA8uci&#;*fUzaAY_V8m ziU9`MJuDxIL|hF)@DqgJ88op{@|#XmML~j&YU>u(kqKNyC5HxZlqQk>PQkENWld+L zOr&6JNwHX-;oOueKw17j)G$`j4o<^A@%~fT$qZVMO+yC_*eYpUzR7iEi3uAj7}*(w z`YKgS6%a;F0a+l?9R#wX>ZWTi<7HV)nhsV>6(*%9O%xbi*F?TK!383rh#(|*p6}q} zd?z25;!?0(hzA2Li3(Rj>VN@FT;Xbexbdo7cN7eZc$T28pMYAYjSR4yvZz;&C0tc+ zg{xJMrKKvDCBd+6WB+P&<%mp=yImbyVyq56G|9BvWUP^I>ms=lb4e+lDSgg;Us`JO zKB6{wH+j~F#-A4FY3K3qm~Z6m@V6}oQ%8?p-E$dw`#0C$PJfmCV8)v}3>Ydha%`fZ zJk~G*M^A3LGk$Td;R`icF67R~`sBOHv)Hlqlc%$jy~9_oZJcNyWxkbb_O9u#|7hLF z-<-NMLzh3S0YA@8gd1Pt(Df|3@16Y-n=aSvsF@AkI`ioeFg>&H3bXU&vBnE6gIChkL+(Ey+0iB4Z$Eze7t_CX>Hq)$ literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_desc.png b/NzbDrone.Web/Content2/DataTables-NzbDrone/media/images/sort_desc.png new file mode 100644 index 0000000000000000000000000000000000000000..d7762422e4b2d741bb5b48a35005ec533d09d8b9 GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^!XV7T3?v)swEqJs=3*z$5DpHG+YkL80J#PMJ|V8} z-@kwL>eZu1kM7;OckSA>OP4O4J9qBr(W5(e?%cX{>(Zr5r%ajB)6>(@(b3Y<^8f#T zyRiK)fO-W=g8YJkTx7uTKsiC#5R5WfrBD=NDxcD>w(6ux+}$0I1H))5S4_V`lOXer9=z7l-~7eSdd%b-=~a z_xIMe8KN??ODrK{#&I!}_Kh{rzS=%m2N%F- zAW={L0VZBJnRrkSCK{q1NKA||(ZmA>6Hgw9o;Z-;>)3_|u*vIt-(X0AeGY5Bm`Mgoq{>2>Xkbiu%Ds= zw2?31f^tL9kQr8eOxQDR!ltPHq-U$zG{j&MP8pU+Z@qp?149?-TQP-IYzdZ(;duv+ z&5z`@`Drbo)5+_g-xG*{39$-1bH;K7Po%550y+EF3=OIfJT20DK^2ryARz~WSeOlI zY%dFXxiA-r#^dp8fM+?DVR?q*LtI>l@B+(%+D8*_j$RaUa;D~sSR!4**cKS3TrP*p zkuY+m7%q`W_!>MPB8ZS%v9RieEVsL^AVXJk3>zEB0=}X;iDt1#lSubcFztq{<<`nX z3dVS<&2VAXPpJ-6l>b9bvw?PT4(`W$ps<^-*pSIV7tJ~vX67YQ8ELa7v~ZoP?{i~^a{W;-ZQ@ymjxh)IjDt*2O<6Dwh=q$vY$VY; zc&J{Ds~-?cjVm3>Wk@iL-`IZ|UB4pJ;~yJiON_?gLyJtiL&kbxZhV_OiPfx}%6s1@ zcXoG^ffrPJ;LQ4(`t<(ickJ1j|E0&fC8lSh8sUh5lwUg=l~QoqsK t`nTanN|e2@a&yVMdhy 0; + }, + isScrollable = function(el) { + return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight))); + }, + getScalar = function(orig, dim) { + var value = parseInt(orig, 10) || 0; + + if (dim && isPercentage(orig)) { + value = F.getViewport()[ dim ] / 100 * value; + } + + return Math.ceil(value); + }, + getValue = function(value, dim) { + return getScalar(value, dim) + 'px'; + }; + + $.extend(F, { + // The current version of fancyBox + version: '2.1.1', + + defaults: { + padding : 15, + margin : 20, + + width : 800, + height : 600, + minWidth : 100, + minHeight : 100, + maxWidth : 9999, + maxHeight : 9999, + + autoSize : true, + autoHeight : false, + autoWidth : false, + + autoResize : !isTouch, + autoCenter : !isTouch, + fitToView : true, + aspectRatio : false, + topRatio : 0.5, + leftRatio : 0.5, + + scrolling : 'auto', // 'auto', 'yes' or 'no' + wrapCSS : '', + + arrows : true, + closeBtn : true, + closeClick : false, + nextClick : false, + mouseWheel : true, + autoPlay : false, + playSpeed : 3000, + preload : 3, + modal : false, + loop : true, + + ajax : { + dataType : 'html', + headers : { 'X-fancyBox': true } + }, + iframe : { + scrolling : 'auto', + preload : true + }, + swf : { + wmode: 'transparent', + allowfullscreen : 'true', + allowscriptaccess : 'always' + }, + + keys : { + next : { + 13 : 'left', // enter + 34 : 'up', // page down + 39 : 'left', // right arrow + 40 : 'up' // down arrow + }, + prev : { + 8 : 'right', // backspace + 33 : 'down', // page up + 37 : 'right', // left arrow + 38 : 'down' // up arrow + }, + close : [27], // escape key + play : [32], // space - start/stop slideshow + toggle : [70] // letter "f" - toggle fullscreen + }, + + direction : { + next : 'left', + prev : 'right' + }, + + scrollOutside : true, + + // Override some properties + index : 0, + type : null, + href : null, + content : null, + title : null, + + // HTML templates + tpl: { + wrap : '
    ', + image : '', + iframe : '', + error : '

    The requested content cannot be loaded.
    Please try again later.

    ', + closeBtn : '', + next : '', + prev : '' + }, + + // Properties for each animation type + // Opening fancyBox + openEffect : 'fade', // 'elastic', 'fade' or 'none' + openSpeed : 250, + openEasing : 'swing', + openOpacity : true, + openMethod : 'zoomIn', + + // Closing fancyBox + closeEffect : 'fade', // 'elastic', 'fade' or 'none' + closeSpeed : 250, + closeEasing : 'swing', + closeOpacity : true, + closeMethod : 'zoomOut', + + // Changing next gallery item + nextEffect : 'elastic', // 'elastic', 'fade' or 'none' + nextSpeed : 250, + nextEasing : 'swing', + nextMethod : 'changeIn', + + // Changing previous gallery item + prevEffect : 'elastic', // 'elastic', 'fade' or 'none' + prevSpeed : 250, + prevEasing : 'swing', + prevMethod : 'changeOut', + + // Enable default helpers + helpers : { + overlay : true, + title : true + }, + + // Callbacks + onCancel : $.noop, // If canceling + beforeLoad : $.noop, // Before loading + afterLoad : $.noop, // After loading + beforeShow : $.noop, // Before changing in current item + afterShow : $.noop, // After opening + beforeChange : $.noop, // Before changing gallery item + beforeClose : $.noop, // Before closing + afterClose : $.noop // After closing + }, + + //Current state + group : {}, // Selected group + opts : {}, // Group options + previous : null, // Previous element + coming : null, // Element being loaded + current : null, // Currently loaded element + isActive : false, // Is activated + isOpen : false, // Is currently open + isOpened : false, // Have been fully opened at least once + + wrap : null, + skin : null, + outer : null, + inner : null, + + player : { + timer : null, + isActive : false + }, + + // Loaders + ajaxLoad : null, + imgPreload : null, + + // Some collections + transitions : {}, + helpers : {}, + + /* + * Static methods + */ + + open: function (group, opts) { + if (!group) { + return; + } + + if (!$.isPlainObject(opts)) { + opts = {}; + } + + // Close if already active + if (false === F.close(true)) { + return; + } + + // Normalize group + if (!$.isArray(group)) { + group = isQuery(group) ? $(group).get() : [group]; + } + + // Recheck if the type of each element is `object` and set content type (image, ajax, etc) + $.each(group, function(i, element) { + var obj = {}, + href, + title, + content, + type, + rez, + hrefParts, + selector; + + if ($.type(element) === "object") { + // Check if is DOM element + if (element.nodeType) { + element = $(element); + } + + if (isQuery(element)) { + obj = { + href : element.data('fancybox-href') || element.attr('href'), + title : element.data('fancybox-title') || element.attr('title'), + isDom : true, + element : element + }; + + if ($.metadata) { + $.extend(true, obj, element.metadata()); + } + + } else { + obj = element; + } + } + + href = opts.href || obj.href || (isString(element) ? element : null); + title = opts.title !== undefined ? opts.title : obj.title || ''; + + content = opts.content || obj.content; + type = content ? 'html' : (opts.type || obj.type); + + if (!type && obj.isDom) { + type = element.data('fancybox-type'); + + if (!type) { + rez = element.prop('class').match(/fancybox\.(\w+)/); + type = rez ? rez[1] : null; + } + } + + if (isString(href)) { + // Try to guess the content type + if (!type) { + if (F.isImage(href)) { + type = 'image'; + + } else if (F.isSWF(href)) { + type = 'swf'; + + } else if (href.charAt(0) === '#') { + type = 'inline'; + + } else if (isString(element)) { + type = 'html'; + content = element; + } + } + + // Split url into two pieces with source url and content selector, e.g, + // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id" + if (type === 'ajax') { + hrefParts = href.split(/\s+/, 2); + href = hrefParts.shift(); + selector = hrefParts.shift(); + } + } + + if (!content) { + if (type === 'inline') { + if (href) { + content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7 + + } else if (obj.isDom) { + content = element; + } + + } else if (type === 'html') { + content = href; + + } else if (!type && !href && obj.isDom) { + type = 'inline'; + content = element; + } + } + + $.extend(obj, { + href : href, + type : type, + content : content, + title : title, + selector : selector + }); + + group[ i ] = obj; + }); + + // Extend the defaults + F.opts = $.extend(true, {}, F.defaults, opts); + + // All options are merged recursive except keys + if (opts.keys !== undefined) { + F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; + } + + F.group = group; + + return F._start(F.opts.index); + }, + + // Cancel image loading or abort ajax request + cancel: function () { + var coming = F.coming; + + if (!coming || false === F.trigger('onCancel')) { + return; + } + + F.hideLoading(); + + if (F.ajaxLoad) { + F.ajaxLoad.abort(); + } + + F.ajaxLoad = null; + + if (F.imgPreload) { + F.imgPreload.onload = F.imgPreload.onerror = null; + } + + // If the first item has been canceled, then clear everything + if (coming.wrap) { + coming.wrap.stop(true).trigger('onReset').remove(); + } + + if (!F.current) { + F.trigger('afterClose'); + } + + F.coming = null; + }, + + // Start closing animation if is open; remove immediately if opening/closing + close: function (immediately) { + F.cancel(); + + if (false === F.trigger('beforeClose')) { + return; + } + + F.unbindEvents(); + + if (!F.isOpen || immediately === true) { + $('.fancybox-wrap').stop(true).trigger('onReset').remove(); + + F._afterZoomOut(); + + } else { + F.isOpen = F.isOpened = false; + F.isClosing = true; + + $('.fancybox-item, .fancybox-nav').remove(); + + F.wrap.stop(true, true).removeClass('fancybox-opened'); + + if (F.wrap.css('position') === 'fixed') { + F.wrap.css(F._getPosition( true )); + } + + F.transitions[ F.current.closeMethod ](); + } + }, + + // Manage slideshow: + // $.fancybox.play(); - toggle slideshow + // $.fancybox.play( true ); - start + // $.fancybox.play( false ); - stop + play: function ( action ) { + var clear = function () { + clearTimeout(F.player.timer); + }, + set = function () { + clear(); + + if (F.current && F.player.isActive) { + F.player.timer = setTimeout(F.next, F.current.playSpeed); + } + }, + stop = function () { + clear(); + + $('body').unbind('.player'); + + F.player.isActive = false; + + F.trigger('onPlayEnd'); + }, + start = function () { + if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { + F.player.isActive = true; + + $('body').bind({ + 'afterShow.player onUpdate.player' : set, + 'onCancel.player beforeClose.player' : stop, + 'beforeLoad.player' : clear + }); + + set(); + + F.trigger('onPlayStart'); + } + }; + + if (action === true || (!F.player.isActive && action !== false)) { + start(); + } else { + stop(); + } + }, + + // Navigate to next gallery item + next: function ( direction ) { + var current = F.current; + + if (current) { + if (!isString(direction)) { + direction = current.direction.next; + } + + F.jumpto(current.index + 1, direction, 'next'); + } + }, + + // Navigate to previous gallery item + prev: function ( direction ) { + var current = F.current; + + if (current) { + if (!isString(direction)) { + direction = current.direction.prev; + } + + F.jumpto(current.index - 1, direction, 'prev'); + } + }, + + // Navigate to gallery item by index + jumpto: function ( index, direction, router ) { + var current = F.current; + + if (!current) { + return; + } + + index = getScalar(index); + + F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ]; + F.router = router || 'jumpto'; + + if (current.loop) { + if (index < 0) { + index = current.group.length + (index % current.group.length); + } + + index = index % current.group.length; + } + + if (current.group[ index ] !== undefined) { + F.cancel(); + + F._start(index); + } + }, + + // Center inside viewport and toggle position type to fixed or absolute if needed + reposition: function (e, onlyAbsolute) { + var pos; + + if (F.isOpen) { + pos = F._getPosition(onlyAbsolute); + + if (e && e.type === 'scroll') { + delete pos.position; + + F.wrap.stop(true, true).animate(pos, 200); + + } else { + F.wrap.css(pos); + } + } + }, + + update: function (e) { + var type = (e && e.type), + anyway = !type || type === 'orientationchange'; + + if (anyway) { + clearTimeout(didUpdate); + + didUpdate = null; + } + + if (!F.isOpen || didUpdate) { + return; + } + + // Help browser to restore document dimensions + if (anyway || isTouch) { + F.wrap.removeAttr('style').addClass('fancybox-tmp'); + + F.trigger('onUpdate'); + } + + didUpdate = setTimeout(function() { + var current = F.current; + + if (!current) { + return; + } + + F.wrap.removeClass('fancybox-tmp'); + + if (type !== 'scroll') { + F._setDimension(); + } + + if (!(type === 'scroll' && current.canShrink)) { + F.reposition(e); + } + + F.trigger('onUpdate'); + + didUpdate = null; + + }, (isTouch ? 500 : (anyway ? 20 : 300))); + }, + + // Shrink content to fit inside viewport or restore if resized + toggle: function ( action ) { + if (F.isOpen) { + F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; + + F.update(); + } + }, + + hideLoading: function () { + D.unbind('keypress.fb'); + + $('#fancybox-loading').remove(); + }, + + showLoading: function () { + var el, viewport; + + F.hideLoading(); + + // If user will press the escape-button, the request will be canceled + D.bind('keypress.fb', function(e) { + if ((e.which || e.keyCode) === 27) { + e.preventDefault(); + F.cancel(); + } + }); + + el = $('
    ').click(F.cancel).appendTo('body'); + + if (!F.defaults.fixed) { + viewport = F.getViewport(); + + el.css({ + position : 'absolute', + top : (viewport.h * 0.5) + viewport.y, + left : (viewport.w * 0.5) + viewport.x + }); + } + }, + + getViewport: function () { + var locked = (F.current && F.current.locked) || false, + rez = { + x: W.scrollLeft(), + y: W.scrollTop() + }; + + if (locked) { + rez.w = locked[0].clientWidth; + rez.h = locked[0].clientHeight; + + } else { + // See http://bugs.jquery.com/ticket/6724 + rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); + rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height(); + } + + return rez; + }, + + // Unbind the keyboard / clicking actions + unbindEvents: function () { + if (F.wrap && isQuery(F.wrap)) { + F.wrap.unbind('.fb'); + } + + D.unbind('.fb'); + W.unbind('.fb'); + }, + + bindEvents: function () { + var current = F.current, + keys; + + if (!current) { + return; + } + + // Changing document height on iOS devices triggers a 'resize' event, + // that can change document height... repeating infinitely + W.bind('orientationchange.fb' + (current.autoResize ? ' resize.fb' : '' ) + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update); + + keys = current.keys; + + if (keys) { + D.bind('keydown.fb', function (e) { + var code = e.which || e.keyCode, + target = e.target || e.srcElement; + + // Ignore key combinations and key events within form elements + if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) { + $.each(keys, function(i, val) { + if (current.group.length > 1 && val[ code ] !== undefined) { + F[ i ]( val[ code ] ); + + e.preventDefault(); + return false; + } + + if ($.inArray(code, val) > -1) { + F[ i ] (); + + e.preventDefault(); + return false; + } + }); + } + }); + } + + if ($.fn.mousewheel && current.mouseWheel) { + F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) { + var target = e.target || null, + parent = $(target), + canScroll = false; + + while (parent.length) { + if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) { + break; + } + + canScroll = isScrollable( parent[0] ); + parent = $(parent).parent(); + } + + if (delta !== 0 && !canScroll) { + if (F.group.length > 1 && !current.canShrink) { + if (deltaY > 0 || deltaX > 0) { + F.prev( deltaY > 0 ? 'down' : 'left' ); + + } else if (deltaY < 0 || deltaX < 0) { + F.next( deltaY < 0 ? 'up' : 'right' ); + } + + e.preventDefault(); + } + } + }); + } + }, + + trigger: function (event, o) { + var ret, obj = o || F.coming || F.current; + + if (!obj) { + return; + } + + if ($.isFunction( obj[event] )) { + ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); + } + + if (ret === false) { + return false; + } + + if (event === 'onCancel' && !F.isOpened) { + F.isActive = false; + } + + if (obj.helpers) { + $.each(obj.helpers, function (helper, opts) { + if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { + opts = $.extend(true, {}, F.helpers[helper].defaults, opts); + + F.helpers[helper][event](opts, obj); + } + }); + } + + $.event.trigger(event + '.fb'); + }, + + isImage: function (str) { + return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i); + }, + + isSWF: function (str) { + return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i); + }, + + _start: function (index) { + var coming = {}, + obj, + href, + type, + margin, + padding; + + index = getScalar( index ); + obj = F.group[ index ] || null; + + if (!obj) { + return false; + } + + coming = $.extend(true, {}, F.opts, obj); + + // Convert margin and padding properties to array - top, right, bottom, left + margin = coming.margin; + padding = coming.padding; + + if ($.type(margin) === 'number') { + coming.margin = [margin, margin, margin, margin]; + } + + if ($.type(padding) === 'number') { + coming.padding = [padding, padding, padding, padding]; + } + + // 'modal' propery is just a shortcut + if (coming.modal) { + $.extend(true, coming, { + closeBtn : false, + closeClick : false, + nextClick : false, + arrows : false, + mouseWheel : false, + keys : null, + helpers: { + overlay : { + closeClick : false + } + } + }); + } + + // 'autoSize' property is a shortcut, too + if (coming.autoSize) { + coming.autoWidth = coming.autoHeight = true; + } + + if (coming.width === 'auto') { + coming.autoWidth = true; + } + + if (coming.height === 'auto') { + coming.autoHeight = true; + } + + /* + * Add reference to the group, so it`s possible to access from callbacks, example: + * afterLoad : function() { + * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); + * } + */ + + coming.group = F.group; + coming.index = index; + + // Give a chance for callback or helpers to update coming item (type, title, etc) + F.coming = coming; + + if (false === F.trigger('beforeLoad')) { + F.coming = null; + + return; + } + + type = coming.type; + href = coming.href; + + if (!type) { + F.coming = null; + + //If we can not determine content type then drop silently or display next/prev item if looping through gallery + if (F.current && F.router && F.router !== 'jumpto') { + F.current.index = index; + + return F[ F.router ]( F.direction ); + } + + return false; + } + + F.isActive = true; + + if (type === 'image' || type === 'swf') { + coming.autoHeight = coming.autoWidth = false; + coming.scrolling = 'visible'; + } + + if (type === 'image') { + coming.aspectRatio = true; + } + + if (type === 'iframe' && isTouch) { + coming.scrolling = 'scroll'; + } + + // Build the neccessary markup + coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' ); + + $.extend(coming, { + skin : $('.fancybox-skin', coming.wrap), + outer : $('.fancybox-outer', coming.wrap), + inner : $('.fancybox-inner', coming.wrap) + }); + + $.each(["Top", "Right", "Bottom", "Left"], function(i, v) { + coming.skin.css('padding' + v, getValue(coming.padding[ i ])); + }); + + F.trigger('onReady'); + + // Check before try to load; 'inline' and 'html' types need content, others - href + if (type === 'inline' || type === 'html') { + if (!coming.content || !coming.content.length) { + return F._error( 'content' ); + } + + } else if (!href) { + return F._error( 'href' ); + } + + if (type === 'image') { + F._loadImage(); + + } else if (type === 'ajax') { + F._loadAjax(); + + } else if (type === 'iframe') { + F._loadIframe(); + + } else { + F._afterLoad(); + } + }, + + _error: function ( type ) { + $.extend(F.coming, { + type : 'html', + autoWidth : true, + autoHeight : true, + minWidth : 0, + minHeight : 0, + scrolling : 'no', + hasError : type, + content : F.coming.tpl.error + }); + + F._afterLoad(); + }, + + _loadImage: function () { + // Reset preload image so it is later possible to check "complete" property + var img = F.imgPreload = new Image(); + + img.onload = function () { + this.onload = this.onerror = null; + + F.coming.width = this.width; + F.coming.height = this.height; + + F._afterLoad(); + }; + + img.onerror = function () { + this.onload = this.onerror = null; + + F._error( 'image' ); + }; + + img.src = F.coming.href; + + if (img.complete === undefined || !img.complete) { + F.showLoading(); + } + }, + + _loadAjax: function () { + var coming = F.coming; + + F.showLoading(); + + F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { + url: coming.href, + error: function (jqXHR, textStatus) { + if (F.coming && textStatus !== 'abort') { + F._error( 'ajax', jqXHR ); + + } else { + F.hideLoading(); + } + }, + success: function (data, textStatus) { + if (textStatus === 'success') { + coming.content = data; + + F._afterLoad(); + } + } + })); + }, + + _loadIframe: function() { + var coming = F.coming, + iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) + .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling) + .attr('src', coming.href); + + // This helps IE + $(coming.wrap).bind('onReset', function () { + try { + $(this).find('iframe').hide().attr('src', '//about:blank').end().empty(); + } catch (e) {} + }); + + if (coming.iframe.preload) { + F.showLoading(); + + iframe.one('load', function() { + $(this).data('ready', 1); + + // iOS will lose scrolling if we resize + if (!isTouch) { + $(this).bind('load.fb', F.update); + } + + // Without this trick: + // - iframe won't scroll on iOS devices + // - IE7 sometimes displays empty iframe + $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show(); + + F._afterLoad(); + }); + } + + coming.content = iframe.appendTo( coming.inner ); + + if (!coming.iframe.preload) { + F._afterLoad(); + } + }, + + _preloadImages: function() { + var group = F.group, + current = F.current, + len = group.length, + cnt = current.preload ? Math.min(current.preload, len - 1) : 0, + item, + i; + + for (i = 1; i <= cnt; i += 1) { + item = group[ (current.index + i ) % len ]; + + if (item.type === 'image' && item.href) { + new Image().src = item.href; + } + } + }, + + _afterLoad: function () { + var coming = F.coming, + previous = F.current, + placeholder = 'fancybox-placeholder', + current, + content, + type, + scrolling, + href, + embed; + + F.hideLoading(); + + if (!coming || F.isActive === false) { + return; + } + + if (false === F.trigger('afterLoad', coming, previous)) { + coming.wrap.stop(true).trigger('onReset').remove(); + + F.coming = null; + + return; + } + + if (previous) { + F.trigger('beforeChange', previous); + + previous.wrap.stop(true).removeClass('fancybox-opened') + .find('.fancybox-item, .fancybox-nav') + .remove(); + + if (previous.wrap.css('position') === 'fixed') { + previous.wrap.css(F._getPosition( true )); + } + } + + F.unbindEvents(); + + current = coming; + content = coming.content; + type = coming.type; + scrolling = coming.scrolling; + + $.extend(F, { + wrap : current.wrap, + skin : current.skin, + outer : current.outer, + inner : current.inner, + current : current, + previous : previous + }); + + href = current.href; + + switch (type) { + case 'inline': + case 'ajax': + case 'html': + if (current.selector) { + content = $('
    ').html(content).find(current.selector); + + } else if (isQuery(content)) { + if (!content.data(placeholder)) { + content.data(placeholder, $('
    ').insertAfter( content ).hide() ); + } + + content = content.show().detach(); + + current.wrap.bind('onReset', function () { + if ($(this).find(content).length) { + content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false); + } + }); + } + break; + + case 'image': + content = current.tpl.image.replace('{href}', href); + break; + + case 'swf': + content = ''; + embed = ''; + + $.each(current.swf, function(name, val) { + content += ''; + embed += ' ' + name + '="' + val + '"'; + }); + + content += ''; + break; + } + + if (!(isQuery(content) && content.parent().is(current.inner))) { + current.inner.append( content ); + } + + // Give a chance for helpers or callbacks to update elements + F.trigger('beforeShow'); + + // Set scrolling before calculating dimensions + current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling)); + + // Set initial dimensions and start position + F._setDimension(); + + current.wrap.removeClass('fancybox-tmp'); + + current.pos = $.extend({}, current.dim, F._getPosition( true )); + + F.isOpen = false; + F.coming = null; + + F.bindEvents(); + + if (!F.isOpened) { + $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove(); + + } else if (previous.prevMethod) { + F.transitions[ previous.prevMethod ](); + } + + F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ](); + + F._preloadImages(); + }, + + _setDimension: function () { + var viewport = F.getViewport(), + steps = 0, + canShrink = false, + canExpand = false, + wrap = F.wrap, + skin = F.skin, + inner = F.inner, + current = F.current, + width = current.width, + height = current.height, + minWidth = current.minWidth, + minHeight = current.minHeight, + maxWidth = current.maxWidth, + maxHeight = current.maxHeight, + scrolling = current.scrolling, + scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, + margin = current.margin, + wMargin = margin[1] + margin[3], + hMargin = margin[0] + margin[2], + wPadding, + hPadding, + wSpace, + hSpace, + origWidth, + origHeight, + origMaxWidth, + origMaxHeight, + ratio, + width_, + height_, + maxWidth_, + maxHeight_, + iframe, + body; + + // Reset dimensions so we could re-check actual size + wrap.add(skin).add(inner).width('auto').height('auto'); + + wPadding = skin.outerWidth(true) - skin.width(); + hPadding = skin.outerHeight(true) - skin.height(); + + // Any space between content and viewport (margin, padding, border, title) + wSpace = wMargin + wPadding; + hSpace = hMargin + hPadding; + + origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; + origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height; + + if (current.type === 'iframe') { + iframe = current.content; + + if (current.autoHeight && iframe.data('ready') === 1) { + try { + if (iframe[0].contentWindow.document.location) { + inner.width( origWidth ).height(9999); + + body = iframe.contents().find('body'); + + if (scrollOut) { + body.css('overflow-x', 'hidden'); + } + + origHeight = body.height(); + } + + } catch (e) {} + } + + } else if (current.autoWidth || current.autoHeight) { + inner.addClass( 'fancybox-tmp' ); + + // Set width or height in case we need to calculate only one dimension + if (!current.autoWidth) { + inner.width( origWidth ); + } + + if (!current.autoHeight) { + inner.height( origHeight ); + } + + if (current.autoWidth) { + origWidth = inner.width(); + } + + if (current.autoHeight) { + origHeight = inner.height(); + } + + inner.removeClass( 'fancybox-tmp' ); + } + + width = getScalar( origWidth ); + height = getScalar( origHeight ); + + ratio = origWidth / origHeight; + + // Calculations for the content + minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth); + maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth); + + minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight); + maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight); + + // These will be used to determine if wrap can fit in the viewport + origMaxWidth = maxWidth; + origMaxHeight = maxHeight; + + maxWidth_ = viewport.w - wMargin; + maxHeight_ = viewport.h - hMargin; + + if (current.aspectRatio) { + if (width > maxWidth) { + width = maxWidth; + height = width / ratio; + } + + if (height > maxHeight) { + height = maxHeight; + width = height * ratio; + } + + if (width < minWidth) { + width = minWidth; + height = width / ratio; + } + + if (height < minHeight) { + height = minHeight; + width = height * ratio; + } + + } else { + width = Math.max(minWidth, Math.min(width, maxWidth)); + height = Math.max(minHeight, Math.min(height, maxHeight)); + } + + // Try to fit inside viewport (including the title) + if (current.fitToView) { + maxWidth = Math.min(viewport.w - wSpace, maxWidth); + maxHeight = Math.min(viewport.h - hSpace, maxHeight); + + inner.width( getScalar( width ) ).height( getScalar( height ) ); + + wrap.width( getScalar( width + wPadding ) ); + + // Real wrap dimensions + width_ = wrap.width(); + height_ = wrap.height(); + + if (current.aspectRatio) { + while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { + if (steps++ > 19) { + break; + } + + height = Math.max(minHeight, Math.min(maxHeight, height - 10)); + width = height * ratio; + + if (width < minWidth) { + width = minWidth; + height = width / ratio; + } + + if (width > maxWidth) { + width = maxWidth; + height = width / ratio; + } + + inner.width( getScalar( width ) ).height( getScalar( height ) ); + + wrap.width( getScalar( width + wPadding ) ); + + width_ = wrap.width(); + height_ = wrap.height(); + } + + } else { + width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); + height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))); + } + } + + if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) { + width += scrollOut; + } + + inner.width( getScalar( width ) ).height( getScalar( height ) ); + + wrap.width( getScalar( width + wPadding ) ); + + width_ = wrap.width(); + height_ = wrap.height(); + + canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; + canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight)); + + $.extend(current, { + dim : { + width : getValue( width_ ), + height : getValue( height_ ) + }, + origWidth : origWidth, + origHeight : origHeight, + canShrink : canShrink, + canExpand : canExpand, + wPadding : wPadding, + hPadding : hPadding, + wrapSpace : height_ - skin.outerHeight(true), + skinSpace : skin.height() - height + }); + + if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) { + inner.height('auto'); + } + }, + + _getPosition: function (onlyAbsolute) { + var current = F.current, + viewport = F.getViewport(), + margin = current.margin, + width = F.wrap.width() + margin[1] + margin[3], + height = F.wrap.height() + margin[0] + margin[2], + rez = { + position: 'absolute', + top : margin[0], + left : margin[3] + }; + + if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) { + rez.position = 'fixed'; + + } else if (!current.locked) { + rez.top += viewport.y; + rez.left += viewport.x; + } + + rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))); + rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio))); + + return rez; + }, + + _afterZoomIn: function () { + var current = F.current; + + if (!current) { + return; + } + + F.isOpen = F.isOpened = true; + + F.wrap.addClass('fancybox-opened').css('overflow', 'visible'); + + F.reposition(); + + // Assign a click event + if (current.closeClick || current.nextClick) { + F.inner.css('cursor', 'pointer').bind('click.fb', function(e) { + if (!$(e.target).is('a') && !$(e.target).parent().is('a')) { + F[ current.closeClick ? 'close' : 'next' ](); + } + }); + } + + // Create a close button + if (current.closeBtn) { + $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', F.close); + } + + // Create navigation arrows + if (current.arrows && F.group.length > 1) { + if (current.loop || current.index > 0) { + $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev); + } + + if (current.loop || current.index < F.group.length - 1) { + $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next); + } + } + + F.trigger('afterShow'); + + // Stop the slideshow if this is the last item + if (!current.loop && current.index === current.group.length - 1) { + F.play( false ); + + } else if (F.opts.autoPlay && !F.player.isActive) { + F.opts.autoPlay = false; + + F.play(); + } + }, + + _afterZoomOut: function () { + var current = F.current; + + $('.fancybox-wrap').stop(true).trigger('onReset').remove(); + + $.extend(F, { + group : {}, + opts : {}, + router : false, + current : null, + isActive : false, + isOpened : false, + isOpen : false, + isClosing : false, + wrap : null, + skin : null, + outer : null, + inner : null + }); + + F.trigger('afterClose', current); + } + }); + + /* + * Default transitions + */ + + F.transitions = { + getOrigPosition: function () { + var current = F.current, + element = current.element, + orig = current.orig, + pos = {}, + width = 50, + height = 50, + hPadding = current.hPadding, + wPadding = current.wPadding, + viewport = F.getViewport(); + + if (!orig && current.isDom && element.is(':visible')) { + orig = element.find('img:first'); + + if (!orig.length) { + orig = element; + } + } + + if (isQuery(orig)) { + pos = orig.offset(); + + if (orig.is('img')) { + width = orig.outerWidth(); + height = orig.outerHeight(); + } + + } else { + pos.top = viewport.y + (viewport.h - height) * current.topRatio; + pos.left = viewport.x + (viewport.w - width) * current.leftRatio; + } + + if (current.locked) { + pos.top -= viewport.y; + pos.left -= viewport.x; + } + + pos = { + top : getValue(pos.top - hPadding * current.topRatio), + left : getValue(pos.left - wPadding * current.leftRatio), + width : getValue(width + wPadding), + height : getValue(height + hPadding) + }; + + return pos; + }, + + step: function (now, fx) { + var ratio, + padding, + value, + prop = fx.prop, + current = F.current, + wrapSpace = current.wrapSpace, + skinSpace = current.skinSpace; + + if (prop === 'width' || prop === 'height') { + ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); + + if (F.isClosing) { + ratio = 1 - ratio; + } + + padding = prop === 'width' ? current.wPadding : current.hPadding; + value = now - padding; + + F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) ); + F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) ); + } + }, + + zoomIn: function () { + var current = F.current, + startPos = current.pos, + effect = current.openEffect, + elastic = effect === 'elastic', + endPos = $.extend({opacity : 1}, startPos); + + // Remove "position" property that breaks older IE + delete endPos.position; + + if (elastic) { + startPos = this.getOrigPosition(); + + if (current.openOpacity) { + startPos.opacity = 0.1; + } + + } else if (effect === 'fade') { + startPos.opacity = 0.1; + } + + F.wrap.css(startPos).animate(endPos, { + duration : effect === 'none' ? 0 : current.openSpeed, + easing : current.openEasing, + step : elastic ? this.step : null, + complete : F._afterZoomIn + }); + }, + + zoomOut: function () { + var current = F.current, + effect = current.closeEffect, + elastic = effect === 'elastic', + endPos = {opacity : 0.1}; + + if (elastic) { + endPos = this.getOrigPosition(); + + if (current.closeOpacity) { + endPos.opacity = 0.1; + } + } + + F.wrap.animate(endPos, { + duration : effect === 'none' ? 0 : current.closeSpeed, + easing : current.closeEasing, + step : elastic ? this.step : null, + complete : F._afterZoomOut + }); + }, + + changeIn: function () { + var current = F.current, + effect = current.nextEffect, + startPos = current.pos, + endPos = { opacity : 1 }, + direction = F.direction, + distance = 200, + field; + + startPos.opacity = 0.1; + + if (effect === 'elastic') { + field = direction === 'down' || direction === 'up' ? 'top' : 'left'; + + if (direction === 'down' || direction === 'right') { + startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance); + endPos[ field ] = '+=' + distance + 'px'; + + } else { + startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance); + endPos[ field ] = '-=' + distance + 'px'; + } + } + + // Workaround for http://bugs.jquery.com/ticket/12273 + if (effect === 'none') { + F._afterZoomIn(); + + } else { + F.wrap.css(startPos).animate(endPos, { + duration : current.nextSpeed, + easing : current.nextEasing, + complete : F._afterZoomIn + }); + } + }, + + changeOut: function () { + var previous = F.previous, + effect = previous.prevEffect, + endPos = { opacity : 0.1 }, + direction = F.direction, + distance = 200; + + if (effect === 'elastic') { + endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px'; + } + + previous.wrap.animate(endPos, { + duration : effect === 'none' ? 0 : previous.prevSpeed, + easing : previous.prevEasing, + complete : function () { + $(this).trigger('onReset').remove(); + } + }); + } + }; + + /* + * Overlay helper + */ + + F.helpers.overlay = { + defaults : { + closeClick : true, // close if clicking on the overlay + speedOut : 200, // animation speed of fading out + showEarly : true, // should be opened immediately or wait until the content is ready + css : {}, // custom overlay style + locked : true // should be content locked into overlay + }, + + overlay : null, + + update : function () { + var width = '100%', offsetWidth; + + // Reset width/height so it will not mess + this.overlay.width(width).height('100%'); + + // jQuery does not return reliable result for IE + if ($.browser.msie) { + offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); + + if (D.width() > offsetWidth) { + width = D.width(); + } + + } else if (D.width() > W.width()) { + width = D.width(); + } + + this.overlay.width(width).height(D.height()); + }, + + // This is where we can manipulate DOM, because later it would cause iframes to reload + onReady : function (opts, obj) { + $('.fancybox-overlay').stop(true, true); + + if (!this.overlay) { + $.extend(this, { + overlay : $('
    ').appendTo( obj.parent || 'body' ), + margin : D.height() > W.height() || $('body').css('overflow-y') === 'scroll' ? $('body').css('margin-right') : false, + el : document.all && !document.querySelector ? $('html') : $('body') + }); + } + + if (obj.fixed && !isTouch) { + this.overlay.addClass('fancybox-overlay-fixed'); + + if (obj.autoCenter && opts.locked) { + obj.locked = this.overlay.append( obj.wrap ); + } + } + + if (opts.showEarly === true) { + this.beforeShow.apply(this, arguments); + } + }, + + beforeShow : function(opts, obj) { + var overlay = this.overlay.unbind('.fb').width('auto').height('auto').css( opts.css ); + + if (opts.closeClick) { + overlay.bind('click.fb', function(e) { + if ($(e.target).hasClass('fancybox-overlay')) { + F.close(); + } + }); + } + + if (obj.fixed && !isTouch) { + if (obj.locked) { + this.el.addClass('fancybox-lock'); + + if (this.margin !== false) { + $('body').css('margin-right', getScalar( this.margin ) + obj.scrollbarWidth); + } + } + + } else { + this.update(); + } + + overlay.show(); + }, + + onUpdate : function(opts, obj) { + if (!obj.fixed || isTouch) { + this.update(); + } + }, + + afterClose: function (opts) { + var that = this, + speed = opts.speedOut || 0; + + // Remove overlay if exists and fancyBox is not opening + // (e.g., it is not being open using afterClose callback) + if (that.overlay && !F.isActive) { + that.overlay.fadeOut(speed || 0, function () { + $('body').css('margin-right', that.margin); + + that.el.removeClass('fancybox-lock'); + + that.overlay.remove(); + + that.overlay = null; + }); + } + } + }; + + /* + * Title helper + */ + + F.helpers.title = { + defaults : { + type : 'float', // 'float', 'inside', 'outside' or 'over', + position : 'bottom' // 'top' or 'bottom' + }, + + beforeShow: function (opts) { + var current = F.current, + text = current.title, + type = opts.type, + title, + target; + + if ($.isFunction(text)) { + text = text.call(current.element, current); + } + + if (!isString(text) || $.trim(text) === '') { + return; + } + + title = $('
    ' + text + '
    '); + + switch (type) { + case 'inside': + target = F.skin; + break; + + case 'outside': + target = F.wrap; + break; + + case 'over': + target = F.inner; + break; + + default: // 'float' + target = F.skin; + + title.appendTo('body'); + + if ($.browser.msie) { + title.width( title.width() ); + } + + title.wrapInner(''); + + //Increase bottom margin so this title will also fit into viewport + F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) ); + break; + } + + title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target); + } + }; + + // jQuery plugin initialization + $.fn.fancybox = function (options) { + var index, + that = $(this), + selector = this.selector || '', + run = function(e) { + var what = $(this).blur(), idx = index, relType, relVal; + + if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) { + relType = options.groupAttr || 'data-fancybox-group'; + relVal = what.attr(relType); + + if (!relVal) { + relType = 'rel'; + relVal = what.get(0)[ relType ]; + } + + if (relVal && relVal !== '' && relVal !== 'nofollow') { + what = selector.length ? $(selector) : that; + what = what.filter('[' + relType + '="' + relVal + '"]'); + idx = what.index(this); + } + + options.index = idx; + + // Stop an event from bubbling if everything is fine + if (F.open(what, options) !== false) { + e.preventDefault(); + } + } + }; + + options = options || {}; + index = options.index || 0; + + if (!selector || options.live === false) { + that.unbind('click.fb-start').bind('click.fb-start', run); + } else { + D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); + } + + return this; + }; + + // Tests that need a body at doc ready + D.ready(function() { + if ( $.scrollbarWidth === undefined ) { + // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth + $.scrollbarWidth = function() { + var parent = $('
    ').appendTo('body'), + child = parent.children(), + width = child.innerWidth() - child.height( 99 ).innerWidth(); + + parent.remove(); + + return width; + }; + } + + if ( $.support.fixedPosition === undefined ) { + $.support.fixedPosition = (function() { + var elem = $('
    ').appendTo('body'), + fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 ); + + elem.remove(); + + return fixed; + }()); + } + + $.extend(F.defaults, { + scrollbarWidth : $.scrollbarWidth(), + fixed : $.support.fixedPosition, + parent : $('body') + }); + }); + +}(window, document, jQuery)); \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Grid.css b/NzbDrone.Web/Content2/Grid.css new file mode 100644 index 000000000..b2d30e44e --- /dev/null +++ b/NzbDrone.Web/Content2/Grid.css @@ -0,0 +1,126 @@ +.gridImage, .gridAction, .grid-icon +{ + width: 17px; + padding: 3px 1px; + vertical-align: middle; + border: none; + display: inline-block !important; + text-decoration: none !important; + color: #000000; + font-size: 19px; + line-height: 19px; +} + +.gridAction:hover +{ + cursor: pointer; +} + +/* Custom Grid */ +.seriesTable +{ + width: 100%; + border-style: none; + border-collapse: collapse; +} + +.seriesTable th +{ + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + font-size: 17px; + padding: 2px; + border-style: none; + padding-left: 7px; + text-align: left; + background-color: white; + font-weight: lighter; +} + +.seriesTable td +{ + border-style: solid; + border-color: #EEEEEE; + border-width: 1px; + padding: 0px 8px 0px 8px; +} + +.title-row td +{ + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + font-size: 20px; + background-color: #CAD5E3; + font-weight: lighter; + color: #3C3C3C; +} + +.detail-row +{ + display: none; +} + +/* Colour alternating rows */ +.seriesTable .alt-row +{ + background: #f0f5ff; +} + +/* Episode Grid Row Colouring */ +.episodeIgnored +{ + background: rgb(229, 228, 228); + opacity: 0.7; +} + +.episodeMissing, table.dataTable tr.series-ended { + background-color: #f5d6d6; +} + +/*Hidden Grid to prevent FOUSC*/ +.hidden-grid +{ + display: none; +} + +.grid-container +{ + overflow: hidden; +} + +table.dataTable thead th.sorting_disabled +{ + cursor: default; +} + +.dataTables_paginate { + margin-top: 10px; +} + +table.dataTable thead th.sorting_desc, table.dataTable thead th.sorting_asc, table.dataTable thead th.sorting:hover +{ + background-color: #e7efff; +} + +.paginate_disabled_previous:hover, .paginate_disabled_next:hover, .paginate_disabled_first:hover, .paginate_disabled_last:hover, .paginate_disabled_previous, .paginate_disabled_next, .paginate_disabled_first, .paginate_disabled_last +{ + opacity: 0.2; + cursor: default; +} + +.paginate_enabled_previous, .paginate_enabled_next, .paginate_enabled_first, .paginate_enabled_last +{ + opacity: 0.7; +} + +.paginate_enabled_previous:hover, .paginate_enabled_next:hover, .paginate_enabled_first:hover, .paginate_enabled_last:hover +{ + opacity: 1; +} + +/* Icon color when ignored */ +.ignored { + color: gray !important; +} + +[data-status="Missing"] { + color: #B40404 !important; +} \ No newline at end of file diff --git a/NzbDrone.Web/Content2/Images/Indexers/FileSharingTalk.png b/NzbDrone.Web/Content2/Images/Indexers/FileSharingTalk.png new file mode 100644 index 0000000000000000000000000000000000000000..019d2e9639435dfc6b01efced04d10fe599441b8 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`@t!V@Ar*6yMJ{^%Jnx`VQCn)J zyi0Mb!LC|=^$pfqM9vn`1 zz&!Ee|9YRli*Bv_-^qKUk)Qb#vtYP{KsE!z%pIx=OWBL30Ig#1boFyt=akR{01j+2 A00000 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/Indexers/Newznab.png b/NzbDrone.Web/Content2/Images/Indexers/Newznab.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ffe32385b8f503881a71364308df210a27cb0c GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`#hxyXAr*6yee%+OoOfVMa1@^r z+<1S_6h1c*J7F`|Ymt|DfY{zC93t!MCb^>bP0l+XkKZ!r5FHiLDv9PZ`mXBW?E9i~Mmv$%JLALrb|P#nidRuBXl0HH@Ir9vUZ zb}y5cl}e@m;lkvP?EV3fm4}fMX%GmJYogrxgWpjB_XZxE%N@&o=?YjatemK1i+xet z;JRFg;XW`3p$kx@4OG>J`&IjSDu*5b#BhuGMbvBcuJTRF!<`}PlCus#%Jb_K6NtL6 zfS6%~UrWw7+4#nKowfG<9wt_-&ZE!aK{0+4jLWh;*B}V=laG&P-bHg04wjkQeCJ{i!Cj#7&r?^XZ)Nsns$BurS~%y#%TG_I z=fj!FSULs(a^xKl+qew0^j#H$4*{-)xVNmYy52-7#SL!Pp8v$V@xQeY;{JvD{pJ< pmTxDVa{$21?3mdCKvF&c`~!d=(y#8u9)|z`002ovPDHLkV1hJ$80`Q6 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/Indexers/NzbIndex.png b/NzbDrone.Web/Content2/Images/Indexers/NzbIndex.png new file mode 100644 index 0000000000000000000000000000000000000000..d465fa3522f69e358ee2fd90619b5bb02e5a21d2 GIT binary patch literal 260 zcmV+f0sH=mP)ST5JewRdc+E>Kq_h&ffbUHl8lg)v|b@AxTXptzz9KXkOH6d<%9wFl4a}r?)mFv zIJ}ayY&+lqJOKwxz#XW22eFEI1!S+jlH44b07ft3lfsb}R z?Gyu$mTd+!fM17x5x=lBF`(H2dhv4L4JXI?qD0@hwVQ&j;}8XPdK20$p@4G0000< KMNUMnLSTaXj%H{8 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/Indexers/NzbsRus.png b/NzbDrone.Web/Content2/Images/Indexers/NzbsRus.png new file mode 100644 index 0000000000000000000000000000000000000000..ed22b8ee48cfc4a2d1db2862bba622c540b6dcda GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLlB9u*c{#$SSG50 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/Indexers/Unknown.png b/NzbDrone.Web/Content2/Images/Indexers/Unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac1ae7b691b878d9a835251a978287885a64ca9 GIT binary patch literal 816 zcmV-01JC@4P)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;rb$FWRCwA9$gvH8AP|Pp?L3P~!e+<9aLjeK^W&i`jAE5kKp!i>)|AfCWF#H1g=?f=F zr2+%*x9dQfg8>s<1PCA|6fP5x`}YsfpbtRXL4N+r#lZBt59lpyni&|F|H%LZ5DT)4 z82$sD@aGK!!?(W-3_L>O4BWrwF);q~0>%P1&A?FLnFA0&EDZmdfl=}kh<^ZW1!4}M znM_=Y3{3x50c|$Hs`)?TRiL7NhP%S^00IaYct8dJfq~2f!UEuEU|{`M479-nGgg6V zf`MTY(14}DK>h@@gaIIcfG&Ur!+#VT9$;ww$-Dw+b`Ask-?zxZ00G3rzzy^ZI%fO7 z0%+h9pghn|48SO1_`tx-($2uj@)qnu5MTsa{EvkJAb@}__>V1oL7L5ge&PeF0tOJn z7Y2@BZ-8k87`;FPegIQA3oxt%85jTph=t+zcP#pWivIq3&cMq4oPn7QcS=r!1VW*hwfdu25SlH8T?GqT4P}oYeFz^yQiv={27?2PXZDck3$5^oZ z$S(fG!c(3*b7s!m8I`R~g%o55EegFeK=E2S$G4rdFmx*W3;e%;0W-e=VR)VY`1bQ{GQbJkVf0w8-}wXbC=B08m6o z@Q8JPn_796Tt`Vjq?bN5D16(&+dU=|nMg3e>NjJ*8e|GUq1!-D14K;RQhl)(YQ9K9 zh;?^@Iqo1TM2tPO|BR>zr3^BWN2D}v`2x?bp)l7i7`#=l0mzLyAWxv;M+upd#Vw!W z+s=ZHEv!P}RPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0006ANkl2MR=qPQQT zJdn6(;->L;;)BT^@X`3<`_?i#uv8e47>yG*HJQ=P0 zZ@RqZ<1gXdSlrt}UBKC499gz<3x`LA z{d#ge^Q_~r!vwN#q&n?;K)I1wNzEAPK+?$;!tuX^m$N~LF(YAgSFP7h0T3_+iW08j ztOexfCqTxU;$2+!vr*mK0andcJu1(4yPh-U-L`)cU+B6%003*ZMn`_%F{>9DOCp7b79@I*vw7 zy%Fc+@{hqIRU5gt>H9dc;^@374;ovQ<{O$i;LsbpFMZr3lw#YXAv70aZyOlNI}-}o z4`i!bl;G;Nw+4RQ67pYC2hpG~10lv(gUK5u^-u3Vz-@zJme4q)7ZYPYWm5fDRhvax zS;CPGOfS0lQF0rn?_9oEo>=B4x;fiB&b@cQ8_kqM=EKfY!(V2n#6t8K2rxH2^c9?* z3dSGq?8h{%X#iU5C{x)CbN3+Sp&h~aBQXC1^X6qr-6JKI00000NkvXXu0mjf*Ci-e literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/Indexers/omgwtfnzbs.png b/NzbDrone.Web/Content2/Images/Indexers/omgwtfnzbs.png new file mode 100644 index 0000000000000000000000000000000000000000..2737f3455280140c65bff66d7f6632cb2e589cc4 GIT binary patch literal 491 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/apple-touch-icon-114.png b/NzbDrone.Web/Content2/Images/apple-touch-icon-114.png new file mode 100644 index 0000000000000000000000000000000000000000..22cfed2642ee6c78b7c2d018d71c9149007c1951 GIT binary patch literal 2421 zcmdT``&*LP7T#P0)q>J&zB!2 z3?>sDhyVcch7jJjaNRfe5ODDKcz5n$xR~z^*_Hx;#s0Ymm9)6(1>D3Y1cn9zP;uG~rfcbk)?r7lyKp5G;3*2(xRZQ&B z=}E0zE-w^^06tEcwU(NB{iI0raYD|H(3>;$x%DEECk|nU>UZijYfD6?8J|+sFd>k|eEWjEiJPVt@IoQ1J ztOuX)8PEH)i0oSjM8$@fLCZHxJb`wPb24A^W|HluY;7deGmj)rWX@8)4Yv;AF+s86eCMxmfo z&CfOMPNLz_exb6ld^kA8^?C}OSr8~zJAIgorg_~tl~IxZW;9vk)#m5$zb$x#X_o8h zUa-Lopm-5iCq_>#7fnUu1*_+BByuzqr^`CM3m#yty1I`y7M+pXZB?|TD4*6|y7CS7 zWj>NNItkb)a6FvHWqxmuZL9XzgTQF!Eo_nP0DbDI( zbb;Ry1_cW{!GqzSwZeD316NAA*uQKEhti?H-662GL80>!*YEGeSzSrG$1Y)+5AfKM z`HFTWnGH+avLMMUJyaOMO&M@UhzR)%v9iwoBP=fbu+b?%vbW4`sQ2j&^LSw_Rz<#B zwJ8X4d`^Gd}#@sIsk zD{jh)yh#@-wq5F{7DeHj;T`&j+MHF7Dk;)77MuiFqwGe~0=qW8d*u1RP^bf@fqSrZ zxnt?QaZ(~0Mwz$tk?M6N#l!Q7&J_@7+9qrE`h+gRgf=0}2C{XproD!W)L{n?;(TG@ z;9?~qn)l$hXGyHXX2T?F-4wpFtFTvj7aY6KnOJK1=>gTqA@8{@!o=sU_Hv=w9UH@JO*!7(+fmlMRrI_? zP&I5F`=O^W4tepaowOpEyg6?E94YWGtiH(lGn- zfjuAPxv$KYXU!L+sxRHE9T5|V8~1&+Sf#Vy-p75oa#vTct4|}HeaBj^={TA* zWna3e?9esaKEM{^>?T+D#{c0?YdDG`vcfvU9r9_gTRNyd_(6eCgirIYoeCfl(!IE1 zGa@UIM<>96FcH6&tH2>0W*(!baeG(o8H1Uf-w{3fdG_$VhlM+vQU;DeBi>k!lXR+& za40xvfer|VzuVUOE(LD^=DRAo9fRf; zCHqVqXRW4xnNOKlhY&IiHq~$m>A#t-jM@ven73Ph2>Me0;iC1~9vKlc;-8=7OxnmZ zFU1*fjp6KG!rM*oo~%9^WFP&Dy|T`tGLBLG7kiR!46KyqXxms<%mG@mw`a%? zY2!=kO}S^E-^El*a~7Il$?FQiU>xJUiM@WXQtIdFSUPB$CQ&u#pB?BT)SJeG@lL~e zej6VbV;T?jc{wX(S8AlOI@5SD7KBJJc@FT%KGTuzyqp2SH(E96y(#1?iuoR(X^_S; zP3n{`(zHg~(2LY0t*N8{y7j`-IdJ2$Y2y&x`WN4(dTFfQG}bPQsiz}h(EIQ}L9h&< z7l=P-<(-Unr8QVk^I^o(FnT>rwEXI1X&|R+lMDQ0K>(&i&$%2_oC!aXz=j|p@5VY& G_WuFbDw0wF literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/apple-touch-icon-144.png b/NzbDrone.Web/Content2/Images/apple-touch-icon-144.png new file mode 100644 index 0000000000000000000000000000000000000000..e606a1c5edab67568d4dcc581ea9071d182ff9ea GIT binary patch literal 2752 zcmeH}`&&|Z9>>4ufC?somrC#wnubm3gCiMZPNEXhY&d33&5T{pyfAH+v|4609i$Wt z%(8jLElkAOC$*gxyRuq|DQYu~LKiE$3T|54?r64?lP3GsbAH%AVt+WC=X{^<=kxyD zUY`ebN^%m-o#hSypsf-MQ{lT}`k}bO-yxCR1YguV@mGHWV0QlWgZwe%LLWRN=fq3m z0ca}UKe46~ezUiVQzZZtg#v&n0r=es-!B0u-~#YU3P4O10P}Vp-(nE~;2yn77{9Kt zKO^(V#JggJLUAgck7kQXob!K;n%sPb$L_n}`edtga6_hae4-}3s`zgJ=|Drqv8u{+ z9}W8P`7i;9MAWTy16=oR@<9YueZ%t*A)$bciM*|0dI}(0Whl$V2f+YKBB;ZH0Ygwn zmHDKQ0V?AmTC@xZfOesNjldI7^fofjJq!g1?<6KdR{r0~|JFpfA4RMCdT(@_yKhpi zCtw3k*>jp7DEmXU?D6@ExmN%p%ttdavogouy#?(xiHAL$aZhrj(j0%<_yCH@sby^U()4^%R{(eR zA_Qh3UpD1D^T^}iZa#O?`KCgl$i28HdU#)&nU7lL@Ov9oQ2f`y*uLc z%71gYyEF?8Z6^x_a#GoXyp4!M!-C^eA6+r-{193aw=Y=aZIgZ;tLLMgb1uP=TT>A7 z-q~`&qxGE-4R|lj*U7lZ2)~ykeheI{lhdXvz8iJ^i&^rl1x@NwyRK0(edg);h=q0u z5dd3e#B1k-O>Str{YB}~v8$~D@5KOBWmh)TIfSH|!urUbL^%2kNseRM_*}oCk53PR zb>wa7iHu1WK6^U%QrBJzgu?K1k=`Z`j@fgsfsflfnR`N8?rmE%nzC0{%7B?RpA-8B za15UM0o+IamfJDV#|PJ_aNGy0VyO-4-u-9eouU~NJ(9LA4qn-7ukFHZNX?74=Id0G z+m38@#2$kA)5b5KhPt@4@_LqE04KQVY;u=8FacJ;^_R{Y@Jg^Zy_(Qj zw|p&3Cl5pXaT9B9ZeRfC#&#}!5SLNz+BrGQ_cWYcVI^ex+vkWT`8GC_5UJ^j%zzcK z5%;GGzxQ04%%czjUPC0UN^XdcnJI;};uGn%FOPcD?07&Wcd1$JyLB?g(J{vKk{B#E z`R#THmHY9egZ7H-Mka@a64DP7qf4PQgOC>2+>XiYQkPh9>BOn3XF*V!Oi0fi64KRj zLl7>_7^PCyB~DJosQmhrg*sW7b_}yu9qNOX^Q^|EoKwB#9|kSvu*}#(I9CB2Rhw>aON3&FP_snIP8IC%g(2$sE|&1H@_4yq z3GDIlMx!%sDvJB2fonAF$dC@+_wTsJ+^!oY8Cz~G#Wod082wx)`1G)dHo3b7a#@*r z7$Gyh(aI{?S~0aM>9oS)0M>+i@sF3c+#K0=Hk{OcrHeE~(LZ4?^LQZ-Oz|&vc=?{u zo3hwVFWe|>(Ph)Y8U>I3^6#@gX8gAA>_46d{w#elz2y%KK9sB;9Bbqni{|G@pZg%q zm4DsbH4l>A>PJ7%kVPK3?=`bE>k^4eO0}PYiwRJ|E@#0V8tkKxcVoVO{j&rbQ)g{60~R3?RUPd`^U>{N9%y3x$`Ka*2b}*G8celQJ6+emSIHY-f@Qo2QOV zqH(@WO7N6dL+2$xlPTiyZD{fR(#LN^=)n{k4Wdhe#CH^~jP z(Re+K{DyDqHQqD}u{DxVxDtek1$c!Aj$u}B8{3b=`iT&$A(JISWv)(EPwbVeUX0ZC zA}(}6G@&F1E#5uqwo4~7;hp5|_h#@sX&ro99t#h#ki(W0hOCQD&?fA{?laMW8&Z|Dy1P^qLmwt;p1fOUM;Xj ztO$iPWZ|hCJB8`hDjmGR!!z$r7Fb_tPQU{q2pNhZ!Ch*R9WPuRm2&OK(XBe!4|p5M zp9yZ&wVAO!I#~$J9ozy4x%syVmx{JeS#!nM;bQ~N`x`tCMsG_rO>I!nvYTwt^o8T@ b3@Iq0m;PnhuCZ_7zfG`eWwP*Gg0%R*IlKhc literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/azure.gif b/NzbDrone.Web/Content2/Images/azure.gif new file mode 100644 index 0000000000000000000000000000000000000000..dfd2012b5d1051679a383af2db16b3ad3bfd1d4b GIT binary patch literal 64185 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 P0Eqqo0tSIY0h9j%r#m?A literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/background.jpg b/NzbDrone.Web/Content2/Images/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..64f983548ee2d339197ceb5821bd3c3a2b042fb5 GIT binary patch literal 6462 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/gritter.png b/NzbDrone.Web/Content2/Images/gritter.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca3bc0a0f8068194082db9719d6e20a8645985f GIT binary patch literal 4880 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 Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/icon_source.url b/NzbDrone.Web/Content2/Images/icon_source.url new file mode 100644 index 000000000..02066ae86 --- /dev/null +++ b/NzbDrone.Web/Content2/Images/icon_source.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=http://www.iconfinder.com/search/?q=iconset:onebit diff --git a/NzbDrone.Web/Content2/Images/icons.png b/NzbDrone.Web/Content2/Images/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3f4cce9f1f02e11ea43d2f2a9e82176c85dc8dee GIT binary patch literal 2722 zcmbtWdo)|w9*&wROSxu-YRRZHX?3oWmwE-&5L%-_RXtlo5=0~?l8|_``lL#kTrCYs zAJeCxm{zs%sK;uoc$9k7BQZ#&tx`p+g!V?KI`hYM*P46JALs0S*7tqCZ}0v6);X!3 z?z^=#3^YI>ke2HnoEHeBQm-77)YmHS>rIerln;Hjvmbju5XR;Zm}C%^1cZ_yt~5e8 z*^5jd#YH!h?LZ(^2*ulv?T6osAp$fwVHpGG(iloM2xRBLWe|u|G8+;~4yVxVp>H16 zLLn5AJ=E6%kHj;a$Ptu1@l5jmcz17NJe6oef;#Mk*l{sR0UDW2fN*J1bQXqd5B;o* zQI3~iBcPDa5H{5w`iCh$yeGs7V3HvgaHJU#X^DhbqTnd=9adIWrVum|g+w6H2o%~3 zWrZZKgz+ zvEt}#0@sYrf~_dv$Sfk0!eCPXI%HXq5DLVw?V(Die=LE<_$o_hec2}Eh9S5F1_A{~ zE-z^Xh{ykTD2?_N&0>3z|MdGGg<0Nl3^Kxt%mQMVMCHMS!In!gFiuP|fekRd0U&B+ z7d;~YHo%Gi7!arZ77$+wodj@LpV4?c#+A-u6X-;;E6yIOTl1-mL2p)`Y7KGwe+^U5n_c9w@hV0E&+Ga7kIbvBk= zu32^0ka{g>^UZ?u#hpMRca!p!y`8e0;*d(0M7xh)q50n*Yj`E86Z$m3) zZJ``z_?f6Qp=E_xj^uo)P2c0I7D905orQBE`KZO4XpQ{-M59OfWhm`)H>Lwe-e~kr z4~W!Y1F*tY1baL!N)ZU#4lPYhgigz)n!jFTBT^TOp7^Ejw%iQ|7i7VFoeL19{L5n*0mHGFpdex;#i#my2`|ED(91|G3$ zup*XTLYyq2YEhM!z>);7>*_FAnDB4N5UsCTEI8Ox(-fTZ&S$DnbXhu-!qjIyO3n2@ zaPe?U@=0^(+;hLzEn-G@_{nwU+1Q>~m$JUsTwrgqMf!%^V^M7r(vIp`<1E7}I_vV= z`Z;IVG)UW{La3Gw5d_ zX1a2?GM39%cs*2|cjJXajm|Eb_*QR41XhYCsl=fL=COcet492LN7CW0JI$v(S{({6 z1O_xj)MD@E>A%-2Ap$*j;-7spygpKEO3vG!fWIS_`;I*bH_`p!Y>C8XX_7v2{aWnZ z@Fc5fot|%Vf7fhRSE)`!gTZ+{<7-bG)214SokZ=D-}`V= z#f83)L?s1>QQ<^m1A-#?UqfCseVvLt{SWt^iOqN^VOYF2+3ZmFVQT07bCUNt6_Z;^ z_nIkI%#E*kzqZV%q5;P2dQrrmGWMOI&TbBgao^pdav>KRL)sNMS z+C;urvcYNH433>?s?cGB{f}{`ul)9rHTys6WKQfn(aK9>c4tC;n;tYY^y>EI_WDgDO_&K8EETs@!2 zkvQ}M*YcMXg%+uk>K;%%F@Sb<0>nPLi&tXqaNO-)oI`P1j5@I8+x{^&_q_1obTp;O zf6rb1&_2OSWB9g@)=Ym{c++^?Zc<}Z)(R6IYo#1q3Zb#D)MkT;#RCiPr8Wtj%yRN;{ZU)bC;I z7AnbGcW8uW)o7<|W=?%APP)EtVlm-3m;fAYGi>|e@E{1bgjUv+Nb!qDq`xUtO443i zeb0a7qF$GJ@w`#$%u?5&sj6rGT29nrt&7V4_Ayyb`_VNYx7C5tZ#Ucr8@stJ|24Wg LyW>h6LyrF&tOu9| literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content2/Images/logo.png b/NzbDrone.Web/Content2/Images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..976acdffd6c52d7b70f26506a52ad347aaed40d3 GIT binary patch literal 752 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 li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade.in { + top: auto; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: block; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/NzbDrone.Web/Content2/Intelisense/bootstrap.css b/NzbDrone.Web/Content2/Intelisense/bootstrap.css new file mode 100644 index 000000000..9fa6f766f --- /dev/null +++ b/NzbDrone.Web/Content2/Intelisense/bootstrap.css @@ -0,0 +1,5774 @@ +/*! + * Bootstrap v2.1.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +.text-warning { + color: #c09853; +} + +.text-error { + color: #b94a48; +} + +.text-info { + color: #3a87ad; +} + +.text-success { + color: #468847; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 1; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1 { + font-size: 36px; + line-height: 40px; +} + +h2 { + font-size: 30px; + line-height: 40px; +} + +h3 { + font-size: 24px; + line-height: 40px; +} + +h4 { + font-size: 18px; + line-height: 20px; +} + +h5 { + font-size: 14px; + line-height: 20px; +} + +h6 { + font-size: 12px; + line-height: 20px; +} + +h1 small { + font-size: 24px; +} + +h2 small { + font-size: 18px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 9px; + font-size: 14px; + line-height: 20px; + color: #555555; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; + cursor: pointer; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 18px; + padding-left: 18px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"] { + float: left; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning > label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error > label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success > label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info > label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + font-size: 14px; + vertical-align: top; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-append .add-on, +.input-append .btn { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child th:first-child, +.table-bordered tbody:first-child tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child th:last-child, +.table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child th:first-child, +.table-bordered tbody:last-child tr:last-child td:first-child, +.table-bordered tfoot:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child th:last-child, +.table-bordered tbody:last-child tr:last-child td:last-child, +.table-bordered tfoot:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-striped tbody tr:nth-child(odd) td, +.table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table [class*=span], +.row-fluid table [class*=span] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table .span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table .span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table .span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table .span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table .span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table .span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table .span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table .span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table .span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table .span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table .span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table .span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table .span13 { + float: none; + width: 1004px; + margin-left: 0; +} + +.table .span14 { + float: none; + width: 1084px; + margin-left: 0; +} + +.table .span15 { + float: none; + width: 1164px; + margin-left: 0; +} + +.table .span16 { + float: none; + width: 1244px; + margin-left: 0; +} + +.table .span17 { + float: none; + width: 1324px; + margin-left: 0; +} + +.table .span18 { + float: none; + width: 1404px; + margin-left: 0; +} + +.table .span19 { + float: none; + width: 1484px; + margin-left: 0; +} + +.table .span20 { + float: none; + width: 1564px; + margin-left: 0; +} + +.table .span21 { + float: none; + width: 1644px; + margin-left: 0; +} + +.table .span22 { + float: none; + width: 1724px; + margin-left: 0; +} + +.table .span23 { + float: none; + width: 1804px; + margin-left: 0; +} + +.table .span24 { + float: none; + width: 1884px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-tabs > .active > a > [class^="icon-"], +.nav-tabs > .active > a > [class*=" icon-"], +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; + background-color: #0081c2; + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 14px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + *line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #bbbbbb; + *border: 0; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + *background-color: #d9d9d9; + /* Buttons in IE7 don't get borders, so darken on hover */ + + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-color: #e6e6e6; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 9px 14px; + font-size: 16px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.btn-large [class^="icon-"] { + margin-top: 2px; +} + +.btn-small { + padding: 3px 9px; + font-size: 12px; + line-height: 18px; +} + +.btn-small [class^="icon-"] { + margin-top: 0; +} + +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 17px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-image: -moz-linear-gradient(top, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-toolbar .btn + .btn, +.btn-toolbar .btn-group + .btn, +.btn-toolbar .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 11px; +} + +.btn-group > .btn-small { + font-size: 12px; +} + +.btn-group > .btn-large { + font-size: 16px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-top: 0; + border-bottom: 5px solid #000000; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical .btn { + display: block; + float: none; + width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + color: #c09853; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; + color: #777777; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 6px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + width: 100%; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse { + color: #999999; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-image: -moz-linear-gradient(top, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:dximagetransform.microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb .active { + color: #999999; +} + +.pagination { + height: 40px; + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 0 14px; + line-height: 38px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager a, +.pager span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next a, +.pager .next span { + float: right; +} + +.pager .previous a { + float: left; +} + +.pager .disabled a, +.pager .disabled a:hover, +.pager .disabled span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-open .modal .dropdown-menu { + z-index: 2050; +} + +.modal-open .modal .dropdown.open { + *z-index: 2050; +} + +.modal-open .modal .popover { + z-index: 2060; +} + +.modal-open .modal .tooltip { + z-index: 2080; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + width: 560px; + margin: -250px 0 0 -280px; + overflow: auto; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 50%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-bottom: 10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-right: 10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover-content p, +.popover-content ul, +.popover-content ol { + margin-bottom: 0; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: inline-block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow:after { + z-index: -1; + content: ""; +} + +.popover.top .arrow { + bottom: -10px; + left: 50%; + margin-left: -10px; + border-top-color: #ffffff; + border-width: 10px 10px 0; +} + +.popover.top .arrow:after { + bottom: -1px; + left: -11px; + border-top-color: rgba(0, 0, 0, 0.25); + border-width: 11px 11px 0; +} + +.popover.right .arrow { + top: 50%; + left: -10px; + margin-top: -10px; + border-right-color: #ffffff; + border-width: 10px 10px 10px 0; +} + +.popover.right .arrow:after { + bottom: -11px; + left: -1px; + border-right-color: rgba(0, 0, 0, 0.25); + border-width: 11px 11px 11px 0; +} + +.popover.bottom .arrow { + top: -10px; + left: 50%; + margin-left: -10px; + border-bottom-color: #ffffff; + border-width: 0 10px 10px; +} + +.popover.bottom .arrow:after { + top: -1px; + left: -11px; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-width: 0 11px 11px; +} + +.popover.left .arrow { + top: 50%; + right: -10px; + margin-top: -10px; + border-left-color: #ffffff; + border-width: 10px 0 10px 10px; +} + +.popover.left .arrow:after { + right: -1px; + bottom: -11px; + border-left-color: rgba(0, 0, 0, 0.25); + border-width: 11px 0 11px 11px; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.label, +.badge { + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + padding: 1px 4px 2px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding: 1px 9px 2px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel .item > img { + display: block; + line-height: 1; +} + +.carousel .active, +.carousel .next, +.carousel .prev { + display: block; +} + +.carousel .active { + left: 0; +} + +.carousel .next, +.carousel .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel .next { + left: 100%; +} + +.carousel .prev { + left: -100%; +} + +.carousel .next.left, +.carousel .prev.right { + left: 0; +} + +.carousel .active.left { + left: -100%; +} + +.carousel .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/NzbDrone.Web/Content2/Menu.css b/NzbDrone.Web/Content2/Menu.css new file mode 100644 index 000000000..25e764c3e --- /dev/null +++ b/NzbDrone.Web/Content2/Menu.css @@ -0,0 +1,82 @@ +#menu +{ + height: 60px; + display: inline-block; +} + +#menu ul +{ + margin: 0; + padding: 5px 0px 5px 0px; + list-style: none; + line-height: normal; + overflow: hidden; +} + +#menu li +{ + display: block; + float: left; + padding: 5px 15px 2px 10px; +} + +#menu a +{ + display: block; + float: left; + height: 26px; + padding: 0px 5px 7px 5px; + text-decoration: none; + text-align: center; + text-transform: lowercase; + font-size: 21px; + font-weight: normal; + vertical-align: middle; + font-family: "Segoe UI" , "Open Sans" , "Segoe UI Light" , sans-serif; +} + +#menu a:hover +{ + text-decoration: none; +} + +#menu li.current_page_item a +{ + border-bottom: 2px solid; + border-color: #065EFE; +} + + +.sub-menu +{ + padding-left: 5px; + margin-top: 0px; +} + +.sub-menu li +{ + display: inline; + list-style-type: circle; + margin-right: 12px; + padding-left: 4px; + padding-top: 2px; + border-left: 5px solid #85aeff; + cursor: pointer; +} + + +.sub-menu a +{ + text-decoration: none; + font-size: 21px; + font-family: "Segoe UI Light" , "Open Sans" , "Segoe UI" , sans-serif; + color: #065EFE; + font-weight: 300; + text-transform: lowercase; +} + +.t-grid .sub-menu +{ + margin-left: -10px; + margin-bottom: 0px; +} diff --git a/NzbDrone.Web/Content2/Messages.css b/NzbDrone.Web/Content2/Messages.css new file mode 100644 index 000000000..8b85a7e3a --- /dev/null +++ b/NzbDrone.Web/Content2/Messages.css @@ -0,0 +1,53 @@ +/*Pinned messages*/ + +.infoBox, .successBox, .warningBox, .errorBox, .validationBox { + border: 0px solid; + margin: 10px 0px; + padding: 10px 10px 10px 10px; + background-repeat: no-repeat; + background-position: 10px center; + line-height: 20px; +} +.infoBox { + color: #00529B; + background-color: #f4f7f9; +} +.successBox { + color: #4F8A10; + background-color: #DFF2BF; +} +.warningBox { + color: #9F6000; + background-color: #FEEFB3; +} +.errorBox { + color: #D8000C; + background-color: #FFBABA; +} + +.infoBox i, .successBox i, .warningBox i, .errorBox i, .validationBox i { + font-size: 2.33em; + vertical-align: text-bottom; + padding-right: 8px; +} + +/*Progress Notification*/ +#msgBox +{ + display: none; + height: 30px; + background-color: #272525; + opacity: .9; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=85)"; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85); + padding: 10px; + text-align: left; + position: fixed; + z-index: 999; + bottom: 0; + right: 0; + font-size: 20px; + color: White; + text-align: center; + white-space:nowrap; +} diff --git a/NzbDrone.Web/Content2/New folder/jquery.lhpMegaImgViewer.1.1.js b/NzbDrone.Web/Content2/New folder/jquery.lhpMegaImgViewer.1.1.js new file mode 100644 index 000000000..eef56f77d --- /dev/null +++ b/NzbDrone.Web/Content2/New folder/jquery.lhpMegaImgViewer.1.1.js @@ -0,0 +1,1088 @@ +// Mega Image Viewer v1.1 - jQuery image viewer plugin - converting
    element to an animated image viewer +// (c) 2012 lhp - http://codecanyon.net/user/lhp + +/* + * ---------------------------------------------------------------------------- + * settings: + * viewportWidth string (default: '100%'; accepted: string; Defines width of the area in which image will be displayed inside the outer div (myDiv). Size can be given in pixels, ems, percentages.) + * viewportHeight string (default: '100%'; accepted: string; Defines height of the area in which image will be displayed inside the outer div (myDiv). Size can be given in pixels, ems, percentages.) + * startScale number (default: 1; accepted: 0...1; Defines start scale.) + * startX number (default: 0; accepted: integer; Defines start coordinate x in px, in the display object frame of reference, which will be moved to the center of the viewport, if it is possible.) + * startY number (defaabout:startpageult: 0; accepted: integer; Defines start coordinate y in px, in the display object frame of reference, which will be moved to the center of the viewport, if it is possible.) + * animTime number (default: 500; accepted: integer; Defines duration in ms of the scale and position animations.) + * draggInertia number (default: 10; accepted: integer; Defines inertia after dragging.) + * contentUrl string (default: ''; accepted: string; Defines a path for an image source. This param is optional. Instead you can use the HTML image tag (see DOC -> STEP 2B - ACTIVATE THE PLUGIN (IMAGE SOURCE FROM HTML)).) + * intNavEnable boolean (default: true; accepted: true, false; Defines the navigation bar enabled/disabled. ) + * intNavPos string (default: 'T'; accepted: 'TL', 'T', 'TR', 'L', 'R', 'BL', 'B', 'BR', false; Defines the navigation bar position. ) + * intNavAutoHide boolean (default: false; accepted: true, false; Defines the navigation bar autohide. ) + * fitToViewportShortSide boolean (default: false; accepted: true, false; Shorter side of the displayed object will fit the viewport. ) + * contentSizeOver100 boolean (default: false; accepted: true, false; If the viewport size (width and height) is greater than the size of the displayed object, allow the object scaled over 100% to fit the viewport (zoom is disabled). ) + * ---------------------------------------------------------------------------- + */ + +(function ($) { + + var pubMet, constSett, defaultSett;about:startpage + + constSett = { + 'dragSmooth' : 8 + }; + + defaultSett = { + 'viewportWidth' : '100%', + 'viewportHeight' : '100%', + 'startScale' : 1, + 'startX' : 0, + 'startY' : 0, + 'animTime' : 500, + 'draggInertia' : 10, + 'contentUrl' : '', + 'intNavEnable' : true, + 'intNavPos' : 'T', + 'intNavAutoHide' : false, + 'fitToViewportShortSide' : false, + 'contentSizeOver100' : false + }; + + pubMet = { + init : function (options) { + + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'), interImgs = $t.find('img'), sett = {}; + $.extend(sett, defaultSett, options); + $.extend(sett, constSett); + + if (!data) { + + if(sett.draggInertia < 0) { + sett.draggInertia = 0; + } + + sett.animTime = parseInt(sabout:startpageett.animTime); + if(sett.animTime < 0) { + sett.animTime = 0; + } + + /*img tag*/ + if(interImgs.length > 0) { + sett.contentUrl = interImgs[0].src; + interImgs.remove(); + } + + $t.data('lhpMIV', {}); + $t.data('lhpMIV').interImgsTmp = interImgs; + $t.data('lhpMIV').lc = new LocationChanger(sett, $t); + } + }); + }, + /* + * Sets the position and size of the displayed object. The second parameter is optional - if empty, the size remains unchanged. + * @param {integer} x Coordinate x in px, in the display object frame of reference, which will be moved to the center of the viewport (if it is possible). + * @param {integer} y Coordinate y in px, in the display object frame of reference, which will be moved to the center of the viewport (if it is possible). + * @param {number} scale The size to which the display object will be scaled (if it is possible); optional. + * @return {Object} Returns jQuery object. + */ + setPosition : function (x, y, scale) { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.setProperties(x, y, scale); + } + }); + }, + /*about:startpage + * Initializes the movement of the display object to the top, to the boundary of the viewport or untill the moveStop method is called. + * @return {Object} Returns jQuery object. + */ + moveUp : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginDirectMove('U'); + } + }); + }, + /* + * Initializes the movement of the display object to the bottom, to the boundary of the viewport or untill the moveStop method is called. + * @return {Object} Returns jQuery object. + */ + moveDown : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginDirectMove('D'); + } + }); + }, + /* + * Initializes the movement of the display object to the left, to the boundary of the viewport or untill the moveStop method is called. + * @return {Object} Returns jQuery object. + */ + moveLeft : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginDirectMove('L'); + } + }); + }, + /* + * Initializes the movement of the display object to the right, to the boundary of the viewport or untill the moveStop method is called. + * @return {Object} Returns jQuery object.about:startpage + */ + moveRight : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginDirectMove('R'); + } + }); + }, + /* + * Stops the movement of the display object. + * @return {Object} Returns jQuery object. + */ + moveStop : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.stopDirectMoving(); + } + }); + }, + /* + * Initializes the zooming of the display object up to 100% or untill the zoomStop method is called. + * @return {Object} Returns jQuery object. + */ + zoom : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginZooming('Z'); + } + }); + }, + /* + * Initializes the unzooming of the display object up to the viewport's size or untill the zoomStop method is called.about:startpage + * @return {Object} Returns jQuery object. + */ + unzoom : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.beginZooming('U'); + } + }); + }, + /* + * Stops the zooming/unzooming of the display object. + * @return {Object} Returns jQuery object. + */ + zoomStop : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.stopZooming(); + } + }); + }, + /* + * Fits the display obejct's size to the viewport size and moves the object to the center of the viewport. + * @return {Object} Returns jQuery object. + */ + fitToViewport : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.setProperties(null, null, 0.0001); + } + }); + }, + /* + * Sets the initial size of the display object anabout:startpaged moves the object to the center of the viewport. + * @return {Object} Returns jQuery object. + */ + fullSize : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.setProperties(null, null, 1); + } + }); + }, + /* + * Control the correct position and size of the object displayed inside the viewport. + * @return {Object} Returns jQuery object. + */ + adaptsToContainer : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.adaptsToContainer(); + } + }); + }, + /* + * Destructor. Removes the viewer from the page. Restores the original appearance and functionality of the outer
    element. Allows to efficiently clean the memory. + * @return {Object} Returns jQuery object. + */ + destroy : function () { + return this.each(function () { + var $t = $(this), data = $t.data('lhpMIV'); + if (data) { + $t.data('lhpMIV').lc.destroy(); + $t.prepend($t.data('lhpMIV').interImgsTmp); + $t.removeData('lhpMIV'); + } + });about:startpage + } + }; + + $.fn.lhpMegaImgViewer = function (method) { + if (pubMet[method]) { + return pubMet[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return pubMet.init.apply(this, arguments); + } else { + $.error('Method ' + method + ' does not exist on jQuery.lhpMegaImgViewer'); + } + }; + + /*location changer*/ + var LocationChanger = function (sett, $mainHolder) { + this.isTouchDev = (typeof(window.ontouchstart) != 'undefined') ? true : false; + this.sett = sett; + this.$mainHolder = $mainHolder; + this.lastMousePageCoor = this.lastDrag = this.contentFullSize = {}; + this.$mivHol = this.$contentHol = this.$content = null; + this.$preloadHol = this.$blackScreen = this.$navHol = null; + this.movingIntreval = this.movingDirectIntreval = this.navAutohideInterval = null; + this.speedX = this.speedY = null; + this.targetX = this.targetY = null; + this.allow = {allowDown : null, allowUp : null, allowLeft : null, allowRight : null, allowZoom : null, allowUnzoom : null}; + this.sm = new ScaleManager(); + + this.createHolders(); + + /*load content*/ + this.contentLoader = new LoaderImgContent(this.sett.contentUrl, this.$contentHol, function(that) { + return function($content) { + that.imgContentStart($content); + }about:startpage + }(this)); + /**/ + }; + //initialization + LocationChanger.prototype.createHolders = function () { + this.$mivHol = $('
    ') + .addClass('lhp_miv_holder') + .css({position : 'relative', overflow : 'hidden', width : this.sett.viewportWidth, height : this.sett.viewportHeight}); + + this.$preloadHol = $('
    ') + .addClass('lhp_miv_preload_holder'); + + this.$contentHol = $('
    ') + .addClass('lhp_miv_content_holder') + .css({position : 'absolute'}); + + this.$blackScreen = $('
    ') + .addClass('lhp_miv_blackScreen') + .css({position : 'absolute', 'z-index' : '1', width : '100%', height : '100%', background : '#ffffff'}); + + this.$mivHol.append(this.$preloadHol); + this.$mivHol.append(this.$blackScreen); + this.$mivHol.append(this.$contentHol); + this.$mainHolder.append(this.$mivHol); + } + LocationChanger.prototype.iniNav = function () { + var $ul = $('