├── .gitignore ├── Procfile ├── README.md ├── app.js ├── app ├── css │ ├── bootstrap-responsive.css │ └── bootstrap.css ├── img │ ├── Thumbs.db │ ├── bg.jpg │ ├── glyphicons-halflings-white.png │ ├── glyphicons-halflings.png │ └── loading.gif └── index.html ├── batch.js ├── config.json ├── npm-shrinkwrap.json ├── package.json ├── routes.js └── test └── test.routes.js /.gitignore: -------------------------------------------------------------------------------- 1 | *.zip 2 | *.psd 3 | node_modules/ 4 | build/ 5 | 6 | ################# 7 | ## Eclipse 8 | ################# 9 | 10 | *.pydevproject 11 | .project 12 | .metadata 13 | bin/ 14 | tmp/ 15 | *.tmp 16 | *.bak 17 | *.swp 18 | *~.nib 19 | local.properties 20 | .classpath 21 | .settings/ 22 | .loadpath 23 | 24 | # External tool builders 25 | .externalToolBuilders/ 26 | 27 | # Locally stored "Eclipse launch configurations" 28 | *.launch 29 | 30 | # CDT-specific 31 | .cproject 32 | 33 | # PDT-specific 34 | .buildpath 35 | 36 | 37 | ################# 38 | ## Visual Studio 39 | ################# 40 | 41 | ## Ignore Visual Studio temporary files, build results, and 42 | ## files generated by popular Visual Studio add-ons. 43 | 44 | # User-specific files 45 | *.suo 46 | *.user 47 | *.sln.docstates 48 | 49 | # Build results 50 | [Dd]ebug/ 51 | [Rr]elease/ 52 | *_i.c 53 | *_p.c 54 | *.ilk 55 | *.meta 56 | *.obj 57 | *.pch 58 | *.pdb 59 | *.pgc 60 | *.pgd 61 | *.rsp 62 | *.sbr 63 | *.tlb 64 | *.tli 65 | *.tlh 66 | *.tmp 67 | *.vspscc 68 | .builds 69 | *.dotCover 70 | 71 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 72 | #packages/ 73 | 74 | # Visual C++ cache files 75 | ipch/ 76 | *.aps 77 | *.ncb 78 | *.opensdf 79 | *.sdf 80 | 81 | # Visual Studio profiler 82 | *.psess 83 | *.vsp 84 | 85 | # ReSharper is a .NET coding add-in 86 | _ReSharper* 87 | 88 | # Installshield output folder 89 | [Ee]xpress 90 | 91 | # DocProject is a documentation generator add-in 92 | DocProject/buildhelp/ 93 | DocProject/Help/*.HxT 94 | DocProject/Help/*.HxC 95 | DocProject/Help/*.hhc 96 | DocProject/Help/*.hhk 97 | DocProject/Help/*.hhp 98 | DocProject/Help/Html2 99 | DocProject/Help/html 100 | 101 | # Click-Once directory 102 | publish 103 | 104 | # Others 105 | [Bb]in 106 | [Oo]bj 107 | sql 108 | TestResults 109 | *.Cache 110 | ClientBin 111 | stylecop.* 112 | ~$* 113 | *.dbmdl 114 | Generated_Code #added for RIA/Silverlight projects 115 | 116 | # Backup & report files from converting an old project file to a newer 117 | # Visual Studio version. Backup files are not needed, because we have git ;-) 118 | _UpgradeReport_Files/ 119 | Backup*/ 120 | UpgradeLog*.XML 121 | 122 | 123 | 124 | ############ 125 | ## Windows 126 | ############ 127 | 128 | # Windows image file caches 129 | Thumbs.db 130 | 131 | # Folder config file 132 | Desktop.ini 133 | 134 | 135 | ############# 136 | ## Python 137 | ############# 138 | 139 | *.py[co] 140 | 141 | # Packages 142 | *.egg 143 | *.egg-info 144 | dist 145 | build 146 | eggs 147 | parts 148 | bin 149 | var 150 | sdist 151 | develop-eggs 152 | .installed.cfg 153 | 154 | # Installer logs 155 | pip-log.txt 156 | 157 | # Unit test / coverage reports 158 | .coverage 159 | .tox 160 | 161 | #Translations 162 | *.mo 163 | 164 | #Mr Developer 165 | .mr.developer.cfg 166 | 167 | # Mac crap 168 | .DS_Store 169 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node app.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | NodeTube is a Node.js app for downloading YouTube videos. [Go to App](http://nodetube.ragingflame.co.za) . 3 | 4 | 5 | ## Installation 6 | 7 | ``` 8 | # Download the package 9 | git clone https://github.com/qawemlilo/nodetube.git 10 | 11 | # Install the app 12 | cd nodetube && npm install 13 | ``` 14 | 15 | ## Wep App 16 | 17 | Run the command below and then go to http//localhost:3030 to use the web app. 18 | 19 | ``` 20 | # Run the app 21 | node app.js 22 | ``` 23 | 24 | ## Batch downloads 25 | 26 | For batch downloads, in config.json, set the path for the downloads folder and list all your video URLs in the videos array. 27 | 28 | ``` 29 | # Batch downloads 30 | node batch.js 31 | ``` 32 | 33 | ## Testing 34 | 35 | ``` 36 | npm test 37 | ``` 38 | 39 | 40 | ## Dependencies 41 | - [ytdl-core](https://github.com/fent/ytdl-core) 42 | - [connect](http://www.senchalabs.org/connect) 43 | 44 | 45 | 46 | 47 | ## License 48 | 49 | (MIT License) 50 | 51 | Copyright (c) 2013 Qawelesizwe Mlilo 52 | 53 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 54 | 55 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 56 | 57 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 58 | 59 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | var http = require('http'); 2 | var connect = require('connect'); 3 | var serveStatic = require('serve-static'); 4 | var bodyParser = require('body-parser'); 5 | var routes = require('./routes'); 6 | var port = process.env.PORT || 3030; 7 | 8 | 9 | var app = connect(); 10 | 11 | app.use(serveStatic('app')) 12 | app.use(bodyParser.urlencoded({ extended: false })) 13 | app.use('/download', routes.download); 14 | 15 | 16 | http.createServer(app).listen(port, function() { 17 | console.log('App running at http://localhost:%s', port); 18 | }); 19 | -------------------------------------------------------------------------------- /app/css/bootstrap-responsive.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Responsive v2.2.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | @-ms-viewport { 12 | width: device-width; 13 | } 14 | 15 | .clearfix { 16 | *zoom: 1; 17 | } 18 | 19 | .clearfix:before, 20 | .clearfix:after { 21 | display: table; 22 | line-height: 0; 23 | content: ""; 24 | } 25 | 26 | .clearfix:after { 27 | clear: both; 28 | } 29 | 30 | .hide-text { 31 | font: 0/0 a; 32 | color: transparent; 33 | text-shadow: none; 34 | background-color: transparent; 35 | border: 0; 36 | } 37 | 38 | .input-block-level { 39 | display: block; 40 | width: 100%; 41 | min-height: 30px; 42 | -webkit-box-sizing: border-box; 43 | -moz-box-sizing: border-box; 44 | box-sizing: border-box; 45 | } 46 | 47 | .hidden { 48 | display: none; 49 | visibility: hidden; 50 | } 51 | 52 | .visible-phone { 53 | display: none !important; 54 | } 55 | 56 | .visible-tablet { 57 | display: none !important; 58 | } 59 | 60 | .hidden-desktop { 61 | display: none !important; 62 | } 63 | 64 | .visible-desktop { 65 | display: inherit !important; 66 | } 67 | 68 | @media (min-width: 768px) and (max-width: 979px) { 69 | .hidden-desktop { 70 | display: inherit !important; 71 | } 72 | .visible-desktop { 73 | display: none !important ; 74 | } 75 | .visible-tablet { 76 | display: inherit !important; 77 | } 78 | .hidden-tablet { 79 | display: none !important; 80 | } 81 | } 82 | 83 | @media (max-width: 767px) { 84 | .hidden-desktop { 85 | display: inherit !important; 86 | } 87 | .visible-desktop { 88 | display: none !important; 89 | } 90 | .visible-phone { 91 | display: inherit !important; 92 | } 93 | .hidden-phone { 94 | display: none !important; 95 | } 96 | } 97 | 98 | @media (min-width: 1200px) { 99 | .row { 100 | margin-left: -30px; 101 | *zoom: 1; 102 | } 103 | .row:before, 104 | .row:after { 105 | display: table; 106 | line-height: 0; 107 | content: ""; 108 | } 109 | .row:after { 110 | clear: both; 111 | } 112 | [class*="span"] { 113 | float: left; 114 | min-height: 1px; 115 | margin-left: 30px; 116 | } 117 | .container, 118 | .navbar-static-top .container, 119 | .navbar-fixed-top .container, 120 | .navbar-fixed-bottom .container { 121 | width: 1170px; 122 | } 123 | .span12 { 124 | width: 1170px; 125 | } 126 | .span11 { 127 | width: 1070px; 128 | } 129 | .span10 { 130 | width: 970px; 131 | } 132 | .span9 { 133 | width: 870px; 134 | } 135 | .span8 { 136 | width: 770px; 137 | } 138 | .span7 { 139 | width: 670px; 140 | } 141 | .span6 { 142 | width: 570px; 143 | } 144 | .span5 { 145 | width: 470px; 146 | } 147 | .span4 { 148 | width: 370px; 149 | } 150 | .span3 { 151 | width: 270px; 152 | } 153 | .span2 { 154 | width: 170px; 155 | } 156 | .span1 { 157 | width: 70px; 158 | } 159 | .offset12 { 160 | margin-left: 1230px; 161 | } 162 | .offset11 { 163 | margin-left: 1130px; 164 | } 165 | .offset10 { 166 | margin-left: 1030px; 167 | } 168 | .offset9 { 169 | margin-left: 930px; 170 | } 171 | .offset8 { 172 | margin-left: 830px; 173 | } 174 | .offset7 { 175 | margin-left: 730px; 176 | } 177 | .offset6 { 178 | margin-left: 630px; 179 | } 180 | .offset5 { 181 | margin-left: 530px; 182 | } 183 | .offset4 { 184 | margin-left: 430px; 185 | } 186 | .offset3 { 187 | margin-left: 330px; 188 | } 189 | .offset2 { 190 | margin-left: 230px; 191 | } 192 | .offset1 { 193 | margin-left: 130px; 194 | } 195 | .row-fluid { 196 | width: 100%; 197 | *zoom: 1; 198 | } 199 | .row-fluid:before, 200 | .row-fluid:after { 201 | display: table; 202 | line-height: 0; 203 | content: ""; 204 | } 205 | .row-fluid:after { 206 | clear: both; 207 | } 208 | .row-fluid [class*="span"] { 209 | display: block; 210 | float: left; 211 | width: 100%; 212 | min-height: 30px; 213 | margin-left: 2.564102564102564%; 214 | *margin-left: 2.5109110747408616%; 215 | -webkit-box-sizing: border-box; 216 | -moz-box-sizing: border-box; 217 | box-sizing: border-box; 218 | } 219 | .row-fluid [class*="span"]:first-child { 220 | margin-left: 0; 221 | } 222 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 223 | margin-left: 2.564102564102564%; 224 | } 225 | .row-fluid .span12 { 226 | width: 100%; 227 | *width: 99.94680851063829%; 228 | } 229 | .row-fluid .span11 { 230 | width: 91.45299145299145%; 231 | *width: 91.39979996362975%; 232 | } 233 | .row-fluid .span10 { 234 | width: 82.90598290598291%; 235 | *width: 82.8527914166212%; 236 | } 237 | .row-fluid .span9 { 238 | width: 74.35897435897436%; 239 | *width: 74.30578286961266%; 240 | } 241 | .row-fluid .span8 { 242 | width: 65.81196581196582%; 243 | *width: 65.75877432260411%; 244 | } 245 | .row-fluid .span7 { 246 | width: 57.26495726495726%; 247 | *width: 57.21176577559556%; 248 | } 249 | .row-fluid .span6 { 250 | width: 48.717948717948715%; 251 | *width: 48.664757228587014%; 252 | } 253 | .row-fluid .span5 { 254 | width: 40.17094017094017%; 255 | *width: 40.11774868157847%; 256 | } 257 | .row-fluid .span4 { 258 | width: 31.623931623931625%; 259 | *width: 31.570740134569924%; 260 | } 261 | .row-fluid .span3 { 262 | width: 23.076923076923077%; 263 | *width: 23.023731587561375%; 264 | } 265 | .row-fluid .span2 { 266 | width: 14.52991452991453%; 267 | *width: 14.476723040552828%; 268 | } 269 | .row-fluid .span1 { 270 | width: 5.982905982905983%; 271 | *width: 5.929714493544281%; 272 | } 273 | .row-fluid .offset12 { 274 | margin-left: 105.12820512820512%; 275 | *margin-left: 105.02182214948171%; 276 | } 277 | .row-fluid .offset12:first-child { 278 | margin-left: 102.56410256410257%; 279 | *margin-left: 102.45771958537915%; 280 | } 281 | .row-fluid .offset11 { 282 | margin-left: 96.58119658119658%; 283 | *margin-left: 96.47481360247316%; 284 | } 285 | .row-fluid .offset11:first-child { 286 | margin-left: 94.01709401709402%; 287 | *margin-left: 93.91071103837061%; 288 | } 289 | .row-fluid .offset10 { 290 | margin-left: 88.03418803418803%; 291 | *margin-left: 87.92780505546462%; 292 | } 293 | .row-fluid .offset10:first-child { 294 | margin-left: 85.47008547008548%; 295 | *margin-left: 85.36370249136206%; 296 | } 297 | .row-fluid .offset9 { 298 | margin-left: 79.48717948717949%; 299 | *margin-left: 79.38079650845607%; 300 | } 301 | .row-fluid .offset9:first-child { 302 | margin-left: 76.92307692307693%; 303 | *margin-left: 76.81669394435352%; 304 | } 305 | .row-fluid .offset8 { 306 | margin-left: 70.94017094017094%; 307 | *margin-left: 70.83378796144753%; 308 | } 309 | .row-fluid .offset8:first-child { 310 | margin-left: 68.37606837606839%; 311 | *margin-left: 68.26968539734497%; 312 | } 313 | .row-fluid .offset7 { 314 | margin-left: 62.393162393162385%; 315 | *margin-left: 62.28677941443899%; 316 | } 317 | .row-fluid .offset7:first-child { 318 | margin-left: 59.82905982905982%; 319 | *margin-left: 59.72267685033642%; 320 | } 321 | .row-fluid .offset6 { 322 | margin-left: 53.84615384615384%; 323 | *margin-left: 53.739770867430444%; 324 | } 325 | .row-fluid .offset6:first-child { 326 | margin-left: 51.28205128205128%; 327 | *margin-left: 51.175668303327875%; 328 | } 329 | .row-fluid .offset5 { 330 | margin-left: 45.299145299145295%; 331 | *margin-left: 45.1927623204219%; 332 | } 333 | .row-fluid .offset5:first-child { 334 | margin-left: 42.73504273504273%; 335 | *margin-left: 42.62865975631933%; 336 | } 337 | .row-fluid .offset4 { 338 | margin-left: 36.75213675213675%; 339 | *margin-left: 36.645753773413354%; 340 | } 341 | .row-fluid .offset4:first-child { 342 | margin-left: 34.18803418803419%; 343 | *margin-left: 34.081651209310785%; 344 | } 345 | .row-fluid .offset3 { 346 | margin-left: 28.205128205128204%; 347 | *margin-left: 28.0987452264048%; 348 | } 349 | .row-fluid .offset3:first-child { 350 | margin-left: 25.641025641025642%; 351 | *margin-left: 25.53464266230224%; 352 | } 353 | .row-fluid .offset2 { 354 | margin-left: 19.65811965811966%; 355 | *margin-left: 19.551736679396257%; 356 | } 357 | .row-fluid .offset2:first-child { 358 | margin-left: 17.094017094017094%; 359 | *margin-left: 16.98763411529369%; 360 | } 361 | .row-fluid .offset1 { 362 | margin-left: 11.11111111111111%; 363 | *margin-left: 11.004728132387708%; 364 | } 365 | .row-fluid .offset1:first-child { 366 | margin-left: 8.547008547008547%; 367 | *margin-left: 8.440625568285142%; 368 | } 369 | input, 370 | textarea, 371 | .uneditable-input { 372 | margin-left: 0; 373 | } 374 | .controls-row [class*="span"] + [class*="span"] { 375 | margin-left: 30px; 376 | } 377 | input.span12, 378 | textarea.span12, 379 | .uneditable-input.span12 { 380 | width: 1156px; 381 | } 382 | input.span11, 383 | textarea.span11, 384 | .uneditable-input.span11 { 385 | width: 1056px; 386 | } 387 | input.span10, 388 | textarea.span10, 389 | .uneditable-input.span10 { 390 | width: 956px; 391 | } 392 | input.span9, 393 | textarea.span9, 394 | .uneditable-input.span9 { 395 | width: 856px; 396 | } 397 | input.span8, 398 | textarea.span8, 399 | .uneditable-input.span8 { 400 | width: 756px; 401 | } 402 | input.span7, 403 | textarea.span7, 404 | .uneditable-input.span7 { 405 | width: 656px; 406 | } 407 | input.span6, 408 | textarea.span6, 409 | .uneditable-input.span6 { 410 | width: 556px; 411 | } 412 | input.span5, 413 | textarea.span5, 414 | .uneditable-input.span5 { 415 | width: 456px; 416 | } 417 | input.span4, 418 | textarea.span4, 419 | .uneditable-input.span4 { 420 | width: 356px; 421 | } 422 | input.span3, 423 | textarea.span3, 424 | .uneditable-input.span3 { 425 | width: 256px; 426 | } 427 | input.span2, 428 | textarea.span2, 429 | .uneditable-input.span2 { 430 | width: 156px; 431 | } 432 | input.span1, 433 | textarea.span1, 434 | .uneditable-input.span1 { 435 | width: 56px; 436 | } 437 | .thumbnails { 438 | margin-left: -30px; 439 | } 440 | .thumbnails > li { 441 | margin-left: 30px; 442 | } 443 | .row-fluid .thumbnails { 444 | margin-left: 0; 445 | } 446 | } 447 | 448 | @media (min-width: 768px) and (max-width: 979px) { 449 | .row { 450 | margin-left: -20px; 451 | *zoom: 1; 452 | } 453 | .row:before, 454 | .row:after { 455 | display: table; 456 | line-height: 0; 457 | content: ""; 458 | } 459 | .row:after { 460 | clear: both; 461 | } 462 | [class*="span"] { 463 | float: left; 464 | min-height: 1px; 465 | margin-left: 20px; 466 | } 467 | .container, 468 | .navbar-static-top .container, 469 | .navbar-fixed-top .container, 470 | .navbar-fixed-bottom .container { 471 | width: 724px; 472 | } 473 | .span12 { 474 | width: 724px; 475 | } 476 | .span11 { 477 | width: 662px; 478 | } 479 | .span10 { 480 | width: 600px; 481 | } 482 | .span9 { 483 | width: 538px; 484 | } 485 | .span8 { 486 | width: 476px; 487 | } 488 | .span7 { 489 | width: 414px; 490 | } 491 | .span6 { 492 | width: 352px; 493 | } 494 | .span5 { 495 | width: 290px; 496 | } 497 | .span4 { 498 | width: 228px; 499 | } 500 | .span3 { 501 | width: 166px; 502 | } 503 | .span2 { 504 | width: 104px; 505 | } 506 | .span1 { 507 | width: 42px; 508 | } 509 | .offset12 { 510 | margin-left: 764px; 511 | } 512 | .offset11 { 513 | margin-left: 702px; 514 | } 515 | .offset10 { 516 | margin-left: 640px; 517 | } 518 | .offset9 { 519 | margin-left: 578px; 520 | } 521 | .offset8 { 522 | margin-left: 516px; 523 | } 524 | .offset7 { 525 | margin-left: 454px; 526 | } 527 | .offset6 { 528 | margin-left: 392px; 529 | } 530 | .offset5 { 531 | margin-left: 330px; 532 | } 533 | .offset4 { 534 | margin-left: 268px; 535 | } 536 | .offset3 { 537 | margin-left: 206px; 538 | } 539 | .offset2 { 540 | margin-left: 144px; 541 | } 542 | .offset1 { 543 | margin-left: 82px; 544 | } 545 | .row-fluid { 546 | width: 100%; 547 | *zoom: 1; 548 | } 549 | .row-fluid:before, 550 | .row-fluid:after { 551 | display: table; 552 | line-height: 0; 553 | content: ""; 554 | } 555 | .row-fluid:after { 556 | clear: both; 557 | } 558 | .row-fluid [class*="span"] { 559 | display: block; 560 | float: left; 561 | width: 100%; 562 | min-height: 30px; 563 | margin-left: 2.7624309392265194%; 564 | *margin-left: 2.709239449864817%; 565 | -webkit-box-sizing: border-box; 566 | -moz-box-sizing: border-box; 567 | box-sizing: border-box; 568 | } 569 | .row-fluid [class*="span"]:first-child { 570 | margin-left: 0; 571 | } 572 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 573 | margin-left: 2.7624309392265194%; 574 | } 575 | .row-fluid .span12 { 576 | width: 100%; 577 | *width: 99.94680851063829%; 578 | } 579 | .row-fluid .span11 { 580 | width: 91.43646408839778%; 581 | *width: 91.38327259903608%; 582 | } 583 | .row-fluid .span10 { 584 | width: 82.87292817679558%; 585 | *width: 82.81973668743387%; 586 | } 587 | .row-fluid .span9 { 588 | width: 74.30939226519337%; 589 | *width: 74.25620077583166%; 590 | } 591 | .row-fluid .span8 { 592 | width: 65.74585635359117%; 593 | *width: 65.69266486422946%; 594 | } 595 | .row-fluid .span7 { 596 | width: 57.18232044198895%; 597 | *width: 57.12912895262725%; 598 | } 599 | .row-fluid .span6 { 600 | width: 48.61878453038674%; 601 | *width: 48.56559304102504%; 602 | } 603 | .row-fluid .span5 { 604 | width: 40.05524861878453%; 605 | *width: 40.00205712942283%; 606 | } 607 | .row-fluid .span4 { 608 | width: 31.491712707182323%; 609 | *width: 31.43852121782062%; 610 | } 611 | .row-fluid .span3 { 612 | width: 22.92817679558011%; 613 | *width: 22.87498530621841%; 614 | } 615 | .row-fluid .span2 { 616 | width: 14.3646408839779%; 617 | *width: 14.311449394616199%; 618 | } 619 | .row-fluid .span1 { 620 | width: 5.801104972375691%; 621 | *width: 5.747913483013988%; 622 | } 623 | .row-fluid .offset12 { 624 | margin-left: 105.52486187845304%; 625 | *margin-left: 105.41847889972962%; 626 | } 627 | .row-fluid .offset12:first-child { 628 | margin-left: 102.76243093922652%; 629 | *margin-left: 102.6560479605031%; 630 | } 631 | .row-fluid .offset11 { 632 | margin-left: 96.96132596685082%; 633 | *margin-left: 96.8549429881274%; 634 | } 635 | .row-fluid .offset11:first-child { 636 | margin-left: 94.1988950276243%; 637 | *margin-left: 94.09251204890089%; 638 | } 639 | .row-fluid .offset10 { 640 | margin-left: 88.39779005524862%; 641 | *margin-left: 88.2914070765252%; 642 | } 643 | .row-fluid .offset10:first-child { 644 | margin-left: 85.6353591160221%; 645 | *margin-left: 85.52897613729868%; 646 | } 647 | .row-fluid .offset9 { 648 | margin-left: 79.8342541436464%; 649 | *margin-left: 79.72787116492299%; 650 | } 651 | .row-fluid .offset9:first-child { 652 | margin-left: 77.07182320441989%; 653 | *margin-left: 76.96544022569647%; 654 | } 655 | .row-fluid .offset8 { 656 | margin-left: 71.2707182320442%; 657 | *margin-left: 71.16433525332079%; 658 | } 659 | .row-fluid .offset8:first-child { 660 | margin-left: 68.50828729281768%; 661 | *margin-left: 68.40190431409427%; 662 | } 663 | .row-fluid .offset7 { 664 | margin-left: 62.70718232044199%; 665 | *margin-left: 62.600799341718584%; 666 | } 667 | .row-fluid .offset7:first-child { 668 | margin-left: 59.94475138121547%; 669 | *margin-left: 59.838368402492065%; 670 | } 671 | .row-fluid .offset6 { 672 | margin-left: 54.14364640883978%; 673 | *margin-left: 54.037263430116376%; 674 | } 675 | .row-fluid .offset6:first-child { 676 | margin-left: 51.38121546961326%; 677 | *margin-left: 51.27483249088986%; 678 | } 679 | .row-fluid .offset5 { 680 | margin-left: 45.58011049723757%; 681 | *margin-left: 45.47372751851417%; 682 | } 683 | .row-fluid .offset5:first-child { 684 | margin-left: 42.81767955801105%; 685 | *margin-left: 42.71129657928765%; 686 | } 687 | .row-fluid .offset4 { 688 | margin-left: 37.01657458563536%; 689 | *margin-left: 36.91019160691196%; 690 | } 691 | .row-fluid .offset4:first-child { 692 | margin-left: 34.25414364640884%; 693 | *margin-left: 34.14776066768544%; 694 | } 695 | .row-fluid .offset3 { 696 | margin-left: 28.45303867403315%; 697 | *margin-left: 28.346655695309746%; 698 | } 699 | .row-fluid .offset3:first-child { 700 | margin-left: 25.69060773480663%; 701 | *margin-left: 25.584224756083227%; 702 | } 703 | .row-fluid .offset2 { 704 | margin-left: 19.88950276243094%; 705 | *margin-left: 19.783119783707537%; 706 | } 707 | .row-fluid .offset2:first-child { 708 | margin-left: 17.12707182320442%; 709 | *margin-left: 17.02068884448102%; 710 | } 711 | .row-fluid .offset1 { 712 | margin-left: 11.32596685082873%; 713 | *margin-left: 11.219583872105325%; 714 | } 715 | .row-fluid .offset1:first-child { 716 | margin-left: 8.56353591160221%; 717 | *margin-left: 8.457152932878806%; 718 | } 719 | input, 720 | textarea, 721 | .uneditable-input { 722 | margin-left: 0; 723 | } 724 | .controls-row [class*="span"] + [class*="span"] { 725 | margin-left: 20px; 726 | } 727 | input.span12, 728 | textarea.span12, 729 | .uneditable-input.span12 { 730 | width: 710px; 731 | } 732 | input.span11, 733 | textarea.span11, 734 | .uneditable-input.span11 { 735 | width: 648px; 736 | } 737 | input.span10, 738 | textarea.span10, 739 | .uneditable-input.span10 { 740 | width: 586px; 741 | } 742 | input.span9, 743 | textarea.span9, 744 | .uneditable-input.span9 { 745 | width: 524px; 746 | } 747 | input.span8, 748 | textarea.span8, 749 | .uneditable-input.span8 { 750 | width: 462px; 751 | } 752 | input.span7, 753 | textarea.span7, 754 | .uneditable-input.span7 { 755 | width: 400px; 756 | } 757 | input.span6, 758 | textarea.span6, 759 | .uneditable-input.span6 { 760 | width: 338px; 761 | } 762 | input.span5, 763 | textarea.span5, 764 | .uneditable-input.span5 { 765 | width: 276px; 766 | } 767 | input.span4, 768 | textarea.span4, 769 | .uneditable-input.span4 { 770 | width: 214px; 771 | } 772 | input.span3, 773 | textarea.span3, 774 | .uneditable-input.span3 { 775 | width: 152px; 776 | } 777 | input.span2, 778 | textarea.span2, 779 | .uneditable-input.span2 { 780 | width: 90px; 781 | } 782 | input.span1, 783 | textarea.span1, 784 | .uneditable-input.span1 { 785 | width: 28px; 786 | } 787 | } 788 | 789 | @media (max-width: 767px) { 790 | body { 791 | padding-right: 20px; 792 | padding-left: 20px; 793 | height: auto; 794 | overflow: auto; 795 | } 796 | /* Qhawe code 797 | body, #wrap, #app-body { 798 | height: auto; 799 | overflow: auto; 800 | margin: auto; 801 | }*/ 802 | .navbar-fixed-top, 803 | .navbar-fixed-bottom, 804 | .navbar-static-top { 805 | margin-right: -20px; 806 | margin-left: -20px; 807 | } 808 | .container-fluid { 809 | padding: 0; 810 | } 811 | .dl-horizontal dt { 812 | float: none; 813 | width: auto; 814 | clear: none; 815 | text-align: left; 816 | } 817 | .dl-horizontal dd { 818 | margin-left: 0; 819 | } 820 | .container { 821 | width: auto; 822 | } 823 | .row-fluid { 824 | width: 100%; 825 | } 826 | .row, 827 | .thumbnails { 828 | margin-left: 0; 829 | } 830 | .thumbnails > li { 831 | float: none; 832 | margin-left: 0; 833 | } 834 | [class*="span"], 835 | .uneditable-input[class*="span"], 836 | .row-fluid [class*="span"] { 837 | display: block; 838 | float: none; 839 | width: 100%; 840 | margin-left: 0; 841 | -webkit-box-sizing: border-box; 842 | -moz-box-sizing: border-box; 843 | box-sizing: border-box; 844 | } 845 | .span12, 846 | .row-fluid .span12 { 847 | width: 100%; 848 | -webkit-box-sizing: border-box; 849 | -moz-box-sizing: border-box; 850 | box-sizing: border-box; 851 | } 852 | .row-fluid [class*="offset"]:first-child { 853 | margin-left: 0; 854 | } 855 | .input-large, 856 | .input-xlarge, 857 | .input-xxlarge, 858 | input[class*="span"], 859 | select[class*="span"], 860 | textarea[class*="span"], 861 | .uneditable-input { 862 | display: block; 863 | width: 100%; 864 | min-height: 30px; 865 | -webkit-box-sizing: border-box; 866 | -moz-box-sizing: border-box; 867 | box-sizing: border-box; 868 | } 869 | .input-prepend input, 870 | .input-append input, 871 | .input-prepend input[class*="span"], 872 | .input-append input[class*="span"] { 873 | display: inline-block; 874 | width: auto; 875 | } 876 | .controls-row [class*="span"] + [class*="span"] { 877 | margin-left: 0; 878 | } 879 | .modal { 880 | position: fixed; 881 | top: 20px; 882 | right: 20px; 883 | left: 20px; 884 | width: auto; 885 | margin: 0; 886 | } 887 | .modal.fade { 888 | top: -100px; 889 | } 890 | .modal.fade.in { 891 | top: 20px; 892 | } 893 | } 894 | 895 | @media (max-width: 480px) { 896 | .nav-collapse { 897 | -webkit-transform: translate3d(0, 0, 0); 898 | } 899 | .page-header h1 small { 900 | display: block; 901 | line-height: 20px; 902 | } 903 | input[type="checkbox"], 904 | input[type="radio"] { 905 | border: 1px solid #ccc; 906 | } 907 | .form-horizontal .control-label { 908 | float: none; 909 | width: auto; 910 | padding-top: 0; 911 | text-align: left; 912 | } 913 | .form-horizontal .controls { 914 | margin-left: 0; 915 | } 916 | .form-horizontal .control-list { 917 | padding-top: 0; 918 | } 919 | .form-horizontal .form-actions { 920 | padding-right: 10px; 921 | padding-left: 10px; 922 | } 923 | .media .pull-left, 924 | .media .pull-right { 925 | display: block; 926 | float: none; 927 | margin-bottom: 10px; 928 | } 929 | .media-object { 930 | margin-right: 0; 931 | margin-left: 0; 932 | } 933 | .modal { 934 | top: 10px; 935 | right: 10px; 936 | left: 10px; 937 | } 938 | .modal-header .close { 939 | padding: 10px; 940 | margin: -10px; 941 | } 942 | .carousel-caption { 943 | position: static; 944 | } 945 | } 946 | 947 | @media (max-width: 979px) { 948 | body { 949 | padding-top: 0; 950 | } 951 | .navbar-fixed-top, 952 | .navbar-fixed-bottom { 953 | position: static; 954 | } 955 | .navbar-fixed-top { 956 | margin-bottom: 20px; 957 | } 958 | .navbar-fixed-bottom { 959 | margin-top: 20px; 960 | } 961 | .navbar-fixed-top .navbar-inner, 962 | .navbar-fixed-bottom .navbar-inner { 963 | padding: 5px; 964 | } 965 | .navbar .container { 966 | width: auto; 967 | padding: 0; 968 | } 969 | .navbar .brand { 970 | padding-right: 10px; 971 | padding-left: 10px; 972 | margin: 0 0 0 -5px; 973 | } 974 | .nav-collapse { 975 | clear: both; 976 | } 977 | .nav-collapse .nav { 978 | float: none; 979 | margin: 0 0 10px; 980 | } 981 | .nav-collapse .nav > li { 982 | float: none; 983 | } 984 | .nav-collapse .nav > li > a { 985 | margin-bottom: 2px; 986 | } 987 | .nav-collapse .nav > .divider-vertical { 988 | display: none; 989 | } 990 | .nav-collapse .nav .nav-header { 991 | color: #777777; 992 | text-shadow: none; 993 | } 994 | .nav-collapse .nav > li > a, 995 | .nav-collapse .dropdown-menu a { 996 | padding: 9px 15px; 997 | font-weight: bold; 998 | color: #777777; 999 | -webkit-border-radius: 3px; 1000 | -moz-border-radius: 3px; 1001 | border-radius: 3px; 1002 | } 1003 | .nav-collapse .btn { 1004 | padding: 4px 10px 4px; 1005 | font-weight: normal; 1006 | -webkit-border-radius: 4px; 1007 | -moz-border-radius: 4px; 1008 | border-radius: 4px; 1009 | } 1010 | .nav-collapse .dropdown-menu li + li a { 1011 | margin-bottom: 2px; 1012 | } 1013 | .nav-collapse .nav > li > a:hover, 1014 | .nav-collapse .dropdown-menu a:hover { 1015 | background-color: #f2f2f2; 1016 | } 1017 | .navbar-inverse .nav-collapse .nav > li > a, 1018 | .navbar-inverse .nav-collapse .dropdown-menu a { 1019 | color: #999999; 1020 | } 1021 | .navbar-inverse .nav-collapse .nav > li > a:hover, 1022 | .navbar-inverse .nav-collapse .dropdown-menu a:hover { 1023 | background-color: #111111; 1024 | } 1025 | .nav-collapse.in .btn-group { 1026 | padding: 0; 1027 | margin-top: 5px; 1028 | } 1029 | .nav-collapse .dropdown-menu { 1030 | position: static; 1031 | top: auto; 1032 | left: auto; 1033 | display: none; 1034 | float: none; 1035 | max-width: none; 1036 | padding: 0; 1037 | margin: 0 15px; 1038 | background-color: transparent; 1039 | border: none; 1040 | -webkit-border-radius: 0; 1041 | -moz-border-radius: 0; 1042 | border-radius: 0; 1043 | -webkit-box-shadow: none; 1044 | -moz-box-shadow: none; 1045 | box-shadow: none; 1046 | } 1047 | .nav-collapse .open > .dropdown-menu { 1048 | display: block; 1049 | } 1050 | .nav-collapse .dropdown-menu:before, 1051 | .nav-collapse .dropdown-menu:after { 1052 | display: none; 1053 | } 1054 | .nav-collapse .dropdown-menu .divider { 1055 | display: none; 1056 | } 1057 | .nav-collapse .nav > li > .dropdown-menu:before, 1058 | .nav-collapse .nav > li > .dropdown-menu:after { 1059 | display: none; 1060 | } 1061 | .nav-collapse .navbar-form, 1062 | .nav-collapse .navbar-search { 1063 | float: none; 1064 | padding: 10px 15px; 1065 | margin: 10px 0; 1066 | border-top: 1px solid #f2f2f2; 1067 | border-bottom: 1px solid #f2f2f2; 1068 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1069 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1070 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); 1071 | } 1072 | .navbar-inverse .nav-collapse .navbar-form, 1073 | .navbar-inverse .nav-collapse .navbar-search { 1074 | border-top-color: #111111; 1075 | border-bottom-color: #111111; 1076 | } 1077 | .navbar .nav-collapse .nav.pull-right { 1078 | float: none; 1079 | margin-left: 0; 1080 | } 1081 | .nav-collapse, 1082 | .nav-collapse.collapse { 1083 | height: 0; 1084 | overflow: hidden; 1085 | } 1086 | .navbar .btn-navbar { 1087 | display: block; 1088 | } 1089 | .navbar-static .navbar-inner { 1090 | padding-right: 10px; 1091 | padding-left: 10px; 1092 | } 1093 | } 1094 | 1095 | @media (min-width: 980px) { 1096 | .nav-collapse.collapse { 1097 | height: auto !important; 1098 | overflow: visible !important; 1099 | } 1100 | } 1101 | -------------------------------------------------------------------------------- /app/css/bootstrap.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v2.2.2 3 | * 4 | * Copyright 2012 Twitter, Inc 5 | * Licensed under the Apache License v2.0 6 | * http://www.apache.org/licenses/LICENSE-2.0 7 | * 8 | * Designed and built with all the love in the world @twitter by @mdo and @fat. 9 | */ 10 | 11 | article, 12 | aside, 13 | details, 14 | figcaption, 15 | figure, 16 | footer, 17 | header, 18 | hgroup, 19 | nav, 20 | section { 21 | display: block; 22 | } 23 | 24 | audio, 25 | canvas, 26 | video { 27 | display: inline-block; 28 | *display: inline; 29 | *zoom: 1; 30 | } 31 | 32 | audio:not([controls]) { 33 | display: none; 34 | } 35 | 36 | html { 37 | font-size: 100%; 38 | -webkit-text-size-adjust: 100%; 39 | -ms-text-size-adjust: 100%; 40 | } 41 | 42 | a:focus { 43 | outline: thin dotted #333; 44 | outline: 5px auto -webkit-focus-ring-color; 45 | outline-offset: -2px; 46 | } 47 | 48 | a:hover, 49 | a:active { 50 | outline: 0; 51 | } 52 | 53 | sub, 54 | sup { 55 | position: relative; 56 | font-size: 75%; 57 | line-height: 0; 58 | vertical-align: baseline; 59 | } 60 | 61 | sup { 62 | top: -0.5em; 63 | } 64 | 65 | sub { 66 | bottom: -0.25em; 67 | } 68 | 69 | img { 70 | width: auto\9; 71 | height: auto; 72 | max-width: 100%; 73 | vertical-align: middle; 74 | border: 0; 75 | -ms-interpolation-mode: bicubic; 76 | } 77 | 78 | #map_canvas img, 79 | .google-maps img { 80 | max-width: none; 81 | } 82 | 83 | button, 84 | input, 85 | select, 86 | textarea { 87 | margin: 0; 88 | font-size: 100%; 89 | vertical-align: middle; 90 | } 91 | 92 | button, 93 | input { 94 | *overflow: visible; 95 | line-height: normal; 96 | } 97 | 98 | button::-moz-focus-inner, 99 | input::-moz-focus-inner { 100 | padding: 0; 101 | border: 0; 102 | } 103 | 104 | button, 105 | html input[type="button"], 106 | input[type="reset"], 107 | input[type="submit"] { 108 | cursor: pointer; 109 | -webkit-appearance: button; 110 | } 111 | 112 | label, 113 | select, 114 | button, 115 | input[type="button"], 116 | input[type="reset"], 117 | input[type="submit"], 118 | input[type="radio"], 119 | input[type="checkbox"] { 120 | cursor: pointer; 121 | } 122 | 123 | input[type="search"] { 124 | -webkit-box-sizing: content-box; 125 | -moz-box-sizing: content-box; 126 | box-sizing: content-box; 127 | -webkit-appearance: textfield; 128 | } 129 | 130 | input[type="search"]::-webkit-search-decoration, 131 | input[type="search"]::-webkit-search-cancel-button { 132 | -webkit-appearance: none; 133 | } 134 | 135 | textarea { 136 | overflow: auto; 137 | vertical-align: top; 138 | } 139 | 140 | @media print { 141 | * { 142 | color: #000 !important; 143 | text-shadow: none !important; 144 | background: transparent !important; 145 | box-shadow: none !important; 146 | } 147 | a, 148 | a:visited { 149 | text-decoration: underline; 150 | } 151 | a[href]:after { 152 | content: " (" attr(href) ")"; 153 | } 154 | abbr[title]:after { 155 | content: " (" attr(title) ")"; 156 | } 157 | .ir a:after, 158 | a[href^="javascript:"]:after, 159 | a[href^="#"]:after { 160 | content: ""; 161 | } 162 | pre, 163 | blockquote { 164 | border: 1px solid #999; 165 | page-break-inside: avoid; 166 | } 167 | thead { 168 | display: table-header-group; 169 | } 170 | tr, 171 | img { 172 | page-break-inside: avoid; 173 | } 174 | img { 175 | max-width: 100% !important; 176 | } 177 | @page { 178 | margin: 0.5cm; 179 | } 180 | p, 181 | h2, 182 | h3 { 183 | orphans: 3; 184 | widows: 3; 185 | } 186 | h2, 187 | h3 { 188 | page-break-after: avoid; 189 | } 190 | } 191 | 192 | .clearfix { 193 | *zoom: 1; 194 | } 195 | 196 | .clearfix:before, 197 | .clearfix:after { 198 | display: table; 199 | line-height: 0; 200 | content: ""; 201 | } 202 | 203 | .clearfix:after { 204 | clear: both; 205 | } 206 | 207 | .hide-text { 208 | font: 0/0 a; 209 | color: transparent; 210 | text-shadow: none; 211 | background-color: transparent; 212 | border: 0; 213 | } 214 | 215 | .input-block-level { 216 | display: block; 217 | width: 100%; 218 | min-height: 30px; 219 | -webkit-box-sizing: border-box; 220 | -moz-box-sizing: border-box; 221 | box-sizing: border-box; 222 | } 223 | 224 | body { 225 | margin: 0; 226 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 227 | font-size: 14px; 228 | line-height: 20px; 229 | color: #333333; 230 | background-color: #ffffff; 231 | } 232 | 233 | a { 234 | color: #0088cc; 235 | text-decoration: none; 236 | } 237 | 238 | a:hover { 239 | color: #005580; 240 | text-decoration: underline; 241 | } 242 | 243 | .img-rounded { 244 | -webkit-border-radius: 6px; 245 | -moz-border-radius: 6px; 246 | border-radius: 6px; 247 | } 248 | 249 | .img-polaroid { 250 | padding: 4px; 251 | background-color: #fff; 252 | border: 1px solid #ccc; 253 | border: 1px solid rgba(0, 0, 0, 0.2); 254 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 255 | -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 256 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 257 | } 258 | 259 | .img-circle { 260 | -webkit-border-radius: 500px; 261 | -moz-border-radius: 500px; 262 | border-radius: 500px; 263 | } 264 | 265 | .row { 266 | margin-left: -20px; 267 | *zoom: 1; 268 | } 269 | 270 | .row:before, 271 | .row:after { 272 | display: table; 273 | line-height: 0; 274 | content: ""; 275 | } 276 | 277 | .row:after { 278 | clear: both; 279 | } 280 | 281 | [class*="span"] { 282 | float: left; 283 | min-height: 1px; 284 | margin-left: 20px; 285 | } 286 | 287 | .container, 288 | .navbar-static-top .container, 289 | .navbar-fixed-top .container, 290 | .navbar-fixed-bottom .container { 291 | width: 940px; 292 | } 293 | 294 | .span12 { 295 | width: 940px; 296 | } 297 | 298 | .span11 { 299 | width: 860px; 300 | } 301 | 302 | .span10 { 303 | width: 780px; 304 | } 305 | 306 | .span9 { 307 | width: 700px; 308 | } 309 | 310 | .span8 { 311 | width: 620px; 312 | } 313 | 314 | .span7 { 315 | width: 540px; 316 | } 317 | 318 | .span6 { 319 | width: 460px; 320 | } 321 | 322 | .span5 { 323 | width: 380px; 324 | } 325 | 326 | .span4 { 327 | width: 300px; 328 | } 329 | 330 | .span3 { 331 | width: 220px; 332 | } 333 | 334 | .span2 { 335 | width: 140px; 336 | } 337 | 338 | .span1 { 339 | width: 60px; 340 | } 341 | 342 | .offset12 { 343 | margin-left: 980px; 344 | } 345 | 346 | .offset11 { 347 | margin-left: 900px; 348 | } 349 | 350 | .offset10 { 351 | margin-left: 820px; 352 | } 353 | 354 | .offset9 { 355 | margin-left: 740px; 356 | } 357 | 358 | .offset8 { 359 | margin-left: 660px; 360 | } 361 | 362 | .offset7 { 363 | margin-left: 580px; 364 | } 365 | 366 | .offset6 { 367 | margin-left: 500px; 368 | } 369 | 370 | .offset5 { 371 | margin-left: 420px; 372 | } 373 | 374 | .offset4 { 375 | margin-left: 340px; 376 | } 377 | 378 | .offset3 { 379 | margin-left: 260px; 380 | } 381 | 382 | .offset2 { 383 | margin-left: 180px; 384 | } 385 | 386 | .offset1 { 387 | margin-left: 100px; 388 | } 389 | 390 | .row-fluid { 391 | width: 100%; 392 | *zoom: 1; 393 | } 394 | 395 | .row-fluid:before, 396 | .row-fluid:after { 397 | display: table; 398 | line-height: 0; 399 | content: ""; 400 | } 401 | 402 | .row-fluid:after { 403 | clear: both; 404 | } 405 | 406 | .row-fluid [class*="span"] { 407 | display: block; 408 | float: left; 409 | width: 100%; 410 | min-height: 30px; 411 | margin-left: 2.127659574468085%; 412 | *margin-left: 2.074468085106383%; 413 | -webkit-box-sizing: border-box; 414 | -moz-box-sizing: border-box; 415 | box-sizing: border-box; 416 | } 417 | 418 | .row-fluid [class*="span"]:first-child { 419 | margin-left: 0; 420 | } 421 | 422 | .row-fluid .controls-row [class*="span"] + [class*="span"] { 423 | margin-left: 2.127659574468085%; 424 | } 425 | 426 | .row-fluid .span12 { 427 | width: 100%; 428 | *width: 99.94680851063829%; 429 | } 430 | 431 | .row-fluid .span11 { 432 | width: 91.48936170212765%; 433 | *width: 91.43617021276594%; 434 | } 435 | 436 | .row-fluid .span10 { 437 | width: 82.97872340425532%; 438 | *width: 82.92553191489361%; 439 | } 440 | 441 | .row-fluid .span9 { 442 | width: 74.46808510638297%; 443 | *width: 74.41489361702126%; 444 | } 445 | 446 | .row-fluid .span8 { 447 | width: 65.95744680851064%; 448 | *width: 65.90425531914893%; 449 | } 450 | 451 | .row-fluid .span7 { 452 | width: 57.44680851063829%; 453 | *width: 57.39361702127659%; 454 | } 455 | 456 | .row-fluid .span6 { 457 | width: 48.93617021276595%; 458 | *width: 48.88297872340425%; 459 | } 460 | 461 | .row-fluid .span5 { 462 | width: 40.42553191489362%; 463 | *width: 40.37234042553192%; 464 | } 465 | 466 | .row-fluid .span4 { 467 | width: 31.914893617021278%; 468 | *width: 31.861702127659576%; 469 | } 470 | 471 | .row-fluid .span3 { 472 | width: 23.404255319148934%; 473 | *width: 23.351063829787233%; 474 | } 475 | 476 | .row-fluid .span2 { 477 | width: 14.893617021276595%; 478 | *width: 14.840425531914894%; 479 | } 480 | 481 | .row-fluid .span1 { 482 | width: 6.382978723404255%; 483 | *width: 6.329787234042553%; 484 | } 485 | 486 | .row-fluid .offset12 { 487 | margin-left: 104.25531914893617%; 488 | *margin-left: 104.14893617021275%; 489 | } 490 | 491 | .row-fluid .offset12:first-child { 492 | margin-left: 102.12765957446808%; 493 | *margin-left: 102.02127659574467%; 494 | } 495 | 496 | .row-fluid .offset11 { 497 | margin-left: 95.74468085106382%; 498 | *margin-left: 95.6382978723404%; 499 | } 500 | 501 | .row-fluid .offset11:first-child { 502 | margin-left: 93.61702127659574%; 503 | *margin-left: 93.51063829787232%; 504 | } 505 | 506 | .row-fluid .offset10 { 507 | margin-left: 87.23404255319149%; 508 | *margin-left: 87.12765957446807%; 509 | } 510 | 511 | .row-fluid .offset10:first-child { 512 | margin-left: 85.1063829787234%; 513 | *margin-left: 84.99999999999999%; 514 | } 515 | 516 | .row-fluid .offset9 { 517 | margin-left: 78.72340425531914%; 518 | *margin-left: 78.61702127659572%; 519 | } 520 | 521 | .row-fluid .offset9:first-child { 522 | margin-left: 76.59574468085106%; 523 | *margin-left: 76.48936170212764%; 524 | } 525 | 526 | .row-fluid .offset8 { 527 | margin-left: 70.2127659574468%; 528 | *margin-left: 70.10638297872339%; 529 | } 530 | 531 | .row-fluid .offset8:first-child { 532 | margin-left: 68.08510638297872%; 533 | *margin-left: 67.9787234042553%; 534 | } 535 | 536 | .row-fluid .offset7 { 537 | margin-left: 61.70212765957446%; 538 | *margin-left: 61.59574468085106%; 539 | } 540 | 541 | .row-fluid .offset7:first-child { 542 | margin-left: 59.574468085106375%; 543 | *margin-left: 59.46808510638297%; 544 | } 545 | 546 | .row-fluid .offset6 { 547 | margin-left: 53.191489361702125%; 548 | *margin-left: 53.085106382978715%; 549 | } 550 | 551 | .row-fluid .offset6:first-child { 552 | margin-left: 51.063829787234035%; 553 | *margin-left: 50.95744680851063%; 554 | } 555 | 556 | .row-fluid .offset5 { 557 | margin-left: 44.68085106382979%; 558 | *margin-left: 44.57446808510638%; 559 | } 560 | 561 | .row-fluid .offset5:first-child { 562 | margin-left: 42.5531914893617%; 563 | *margin-left: 42.4468085106383%; 564 | } 565 | 566 | .row-fluid .offset4 { 567 | margin-left: 36.170212765957444%; 568 | *margin-left: 36.06382978723405%; 569 | } 570 | 571 | .row-fluid .offset4:first-child { 572 | margin-left: 34.04255319148936%; 573 | *margin-left: 33.93617021276596%; 574 | } 575 | 576 | .row-fluid .offset3 { 577 | margin-left: 27.659574468085104%; 578 | *margin-left: 27.5531914893617%; 579 | } 580 | 581 | .row-fluid .offset3:first-child { 582 | margin-left: 25.53191489361702%; 583 | *margin-left: 25.425531914893618%; 584 | } 585 | 586 | .row-fluid .offset2 { 587 | margin-left: 19.148936170212764%; 588 | *margin-left: 19.04255319148936%; 589 | } 590 | 591 | .row-fluid .offset2:first-child { 592 | margin-left: 17.02127659574468%; 593 | *margin-left: 16.914893617021278%; 594 | } 595 | 596 | .row-fluid .offset1 { 597 | margin-left: 10.638297872340425%; 598 | *margin-left: 10.53191489361702%; 599 | } 600 | 601 | .row-fluid .offset1:first-child { 602 | margin-left: 8.51063829787234%; 603 | *margin-left: 8.404255319148938%; 604 | } 605 | 606 | [class*="span"].hide, 607 | .row-fluid [class*="span"].hide { 608 | display: none; 609 | } 610 | 611 | [class*="span"].pull-right, 612 | .row-fluid [class*="span"].pull-right { 613 | float: right; 614 | } 615 | 616 | .container { 617 | margin-right: auto; 618 | margin-left: auto; 619 | *zoom: 1; 620 | } 621 | 622 | .container:before, 623 | .container:after { 624 | display: table; 625 | line-height: 0; 626 | content: ""; 627 | } 628 | 629 | .container:after { 630 | clear: both; 631 | } 632 | 633 | .container-fluid { 634 | padding-right: 20px; 635 | padding-left: 20px; 636 | *zoom: 1; 637 | } 638 | 639 | .container-fluid:before, 640 | .container-fluid:after { 641 | display: table; 642 | line-height: 0; 643 | content: ""; 644 | } 645 | 646 | .container-fluid:after { 647 | clear: both; 648 | } 649 | 650 | p { 651 | margin: 0 0 10px; 652 | } 653 | 654 | .lead { 655 | margin-bottom: 20px; 656 | font-size: 21px; 657 | font-weight: 200; 658 | line-height: 30px; 659 | } 660 | 661 | small { 662 | font-size: 85%; 663 | } 664 | 665 | strong { 666 | font-weight: bold; 667 | } 668 | 669 | em { 670 | font-style: italic; 671 | } 672 | 673 | cite { 674 | font-style: normal; 675 | } 676 | 677 | .muted { 678 | color: #999999; 679 | } 680 | 681 | a.muted:hover { 682 | color: #808080; 683 | } 684 | 685 | .text-warning { 686 | color: #c09853; 687 | } 688 | 689 | a.text-warning:hover { 690 | color: #a47e3c; 691 | } 692 | 693 | .text-error { 694 | color: #b94a48; 695 | } 696 | 697 | a.text-error:hover { 698 | color: #953b39; 699 | } 700 | 701 | .text-info { 702 | color: #3a87ad; 703 | } 704 | 705 | a.text-info:hover { 706 | color: #2d6987; 707 | } 708 | 709 | .text-success { 710 | color: #468847; 711 | } 712 | 713 | a.text-success:hover { 714 | color: #356635; 715 | } 716 | 717 | h1, 718 | h2, 719 | h3, 720 | h4, 721 | h5, 722 | h6 { 723 | margin: 10px 0; 724 | font-family: inherit; 725 | font-weight: bold; 726 | line-height: 20px; 727 | color: inherit; 728 | text-rendering: optimizelegibility; 729 | } 730 | 731 | h1 small, 732 | h2 small, 733 | h3 small, 734 | h4 small, 735 | h5 small, 736 | h6 small { 737 | font-weight: normal; 738 | line-height: 1; 739 | color: #999999; 740 | } 741 | 742 | h1, 743 | h2, 744 | h3 { 745 | line-height: 40px; 746 | } 747 | 748 | h1 { 749 | font-size: 38.5px; 750 | } 751 | 752 | h2 { 753 | font-size: 31.5px; 754 | } 755 | 756 | h3 { 757 | font-size: 24.5px; 758 | } 759 | 760 | h4 { 761 | font-size: 17.5px; 762 | } 763 | 764 | h5 { 765 | font-size: 14px; 766 | } 767 | 768 | h6 { 769 | font-size: 11.9px; 770 | } 771 | 772 | h1 small { 773 | font-size: 24.5px; 774 | } 775 | 776 | h2 small { 777 | font-size: 17.5px; 778 | } 779 | 780 | h3 small { 781 | font-size: 14px; 782 | } 783 | 784 | h4 small { 785 | font-size: 14px; 786 | } 787 | 788 | .page-header { 789 | padding-bottom: 9px; 790 | margin: 20px 0 30px; 791 | border-bottom: 1px solid #eeeeee; 792 | } 793 | 794 | ul, 795 | ol { 796 | padding: 0; 797 | margin: 0 0 10px 25px; 798 | } 799 | 800 | ul ul, 801 | ul ol, 802 | ol ol, 803 | ol ul { 804 | margin-bottom: 0; 805 | } 806 | 807 | li { 808 | line-height: 20px; 809 | } 810 | 811 | ul.unstyled, 812 | ol.unstyled { 813 | margin-left: 0; 814 | list-style: none; 815 | } 816 | 817 | ul.inline, 818 | ol.inline { 819 | margin-left: 0; 820 | list-style: none; 821 | } 822 | 823 | ul.inline > li, 824 | ol.inline > li { 825 | display: inline-block; 826 | padding-right: 5px; 827 | padding-left: 5px; 828 | } 829 | 830 | dl { 831 | margin-bottom: 20px; 832 | } 833 | 834 | dt, 835 | dd { 836 | line-height: 20px; 837 | } 838 | 839 | dt { 840 | font-weight: bold; 841 | } 842 | 843 | dd { 844 | margin-left: 10px; 845 | } 846 | 847 | .dl-horizontal { 848 | *zoom: 1; 849 | } 850 | 851 | .dl-horizontal:before, 852 | .dl-horizontal:after { 853 | display: table; 854 | line-height: 0; 855 | content: ""; 856 | } 857 | 858 | .dl-horizontal:after { 859 | clear: both; 860 | } 861 | 862 | .dl-horizontal dt { 863 | float: left; 864 | width: 160px; 865 | overflow: hidden; 866 | clear: left; 867 | text-align: right; 868 | text-overflow: ellipsis; 869 | white-space: nowrap; 870 | } 871 | 872 | .dl-horizontal dd { 873 | margin-left: 180px; 874 | } 875 | 876 | hr { 877 | margin: 20px 0; 878 | border: 0; 879 | border-top: 1px solid #eeeeee; 880 | border-bottom: 1px solid #ffffff; 881 | } 882 | 883 | abbr[title], 884 | abbr[data-original-title] { 885 | cursor: help; 886 | border-bottom: 1px dotted #999999; 887 | } 888 | 889 | abbr.initialism { 890 | font-size: 90%; 891 | text-transform: uppercase; 892 | } 893 | 894 | blockquote { 895 | padding: 0 0 0 15px; 896 | margin: 0 0 20px; 897 | border-left: 5px solid #eeeeee; 898 | } 899 | 900 | blockquote p { 901 | margin-bottom: 0; 902 | font-size: 16px; 903 | font-weight: 300; 904 | line-height: 25px; 905 | } 906 | 907 | blockquote small { 908 | display: block; 909 | line-height: 20px; 910 | color: #999999; 911 | } 912 | 913 | blockquote small:before { 914 | content: '\2014 \00A0'; 915 | } 916 | 917 | blockquote.pull-right { 918 | float: right; 919 | padding-right: 15px; 920 | padding-left: 0; 921 | border-right: 5px solid #eeeeee; 922 | border-left: 0; 923 | } 924 | 925 | blockquote.pull-right p, 926 | blockquote.pull-right small { 927 | text-align: right; 928 | } 929 | 930 | blockquote.pull-right small:before { 931 | content: ''; 932 | } 933 | 934 | blockquote.pull-right small:after { 935 | content: '\00A0 \2014'; 936 | } 937 | 938 | q:before, 939 | q:after, 940 | blockquote:before, 941 | blockquote:after { 942 | content: ""; 943 | } 944 | 945 | address { 946 | display: block; 947 | margin-bottom: 20px; 948 | font-style: normal; 949 | line-height: 20px; 950 | } 951 | 952 | code, 953 | pre { 954 | padding: 0 3px 2px; 955 | font-family: Monaco, Menlo, Consolas, "Courier New", monospace; 956 | font-size: 12px; 957 | color: #333333; 958 | -webkit-border-radius: 3px; 959 | -moz-border-radius: 3px; 960 | border-radius: 3px; 961 | } 962 | 963 | code { 964 | padding: 2px 4px; 965 | color: #d14; 966 | white-space: nowrap; 967 | background-color: #f7f7f9; 968 | border: 1px solid #e1e1e8; 969 | } 970 | 971 | pre { 972 | display: block; 973 | padding: 9.5px; 974 | margin: 0 0 10px; 975 | font-size: 13px; 976 | line-height: 20px; 977 | word-break: break-all; 978 | word-wrap: break-word; 979 | white-space: pre; 980 | white-space: pre-wrap; 981 | background-color: #f5f5f5; 982 | border: 1px solid #ccc; 983 | border: 1px solid rgba(0, 0, 0, 0.15); 984 | -webkit-border-radius: 4px; 985 | -moz-border-radius: 4px; 986 | border-radius: 4px; 987 | } 988 | 989 | pre.prettyprint { 990 | margin-bottom: 20px; 991 | } 992 | 993 | pre code { 994 | padding: 0; 995 | color: inherit; 996 | white-space: pre; 997 | white-space: pre-wrap; 998 | background-color: transparent; 999 | border: 0; 1000 | } 1001 | 1002 | .pre-scrollable { 1003 | max-height: 340px; 1004 | overflow-y: scroll; 1005 | } 1006 | 1007 | form { 1008 | margin: 0 0 20px; 1009 | } 1010 | 1011 | fieldset { 1012 | padding: 0; 1013 | margin: 0; 1014 | border: 0; 1015 | } 1016 | 1017 | legend { 1018 | display: block; 1019 | width: 100%; 1020 | padding: 0; 1021 | margin-bottom: 20px; 1022 | font-size: 21px; 1023 | line-height: 40px; 1024 | color: #333333; 1025 | border: 0; 1026 | border-bottom: 1px solid #e5e5e5; 1027 | } 1028 | 1029 | legend small { 1030 | font-size: 15px; 1031 | color: #999999; 1032 | } 1033 | 1034 | label, 1035 | input, 1036 | button, 1037 | select, 1038 | textarea { 1039 | font-size: 14px; 1040 | font-weight: normal; 1041 | line-height: 20px; 1042 | } 1043 | 1044 | input, 1045 | button, 1046 | select, 1047 | textarea { 1048 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 1049 | } 1050 | 1051 | label { 1052 | display: block; 1053 | margin-bottom: 5px; 1054 | } 1055 | 1056 | select, 1057 | textarea, 1058 | input[type="text"], 1059 | input[type="password"], 1060 | input[type="datetime"], 1061 | input[type="datetime-local"], 1062 | input[type="date"], 1063 | input[type="month"], 1064 | input[type="time"], 1065 | input[type="week"], 1066 | input[type="number"], 1067 | input[type="email"], 1068 | input[type="url"], 1069 | input[type="search"], 1070 | input[type="tel"], 1071 | input[type="color"], 1072 | .uneditable-input { 1073 | display: inline-block; 1074 | height: 20px; 1075 | padding: 4px 6px; 1076 | margin-bottom: 10px; 1077 | font-size: 14px; 1078 | line-height: 20px; 1079 | color: #555555; 1080 | vertical-align: middle; 1081 | -webkit-border-radius: 4px; 1082 | -moz-border-radius: 4px; 1083 | border-radius: 4px; 1084 | } 1085 | 1086 | input, 1087 | textarea, 1088 | .uneditable-input { 1089 | width: 206px; 1090 | } 1091 | 1092 | textarea { 1093 | height: auto; 1094 | } 1095 | 1096 | textarea, 1097 | input[type="text"], 1098 | input[type="password"], 1099 | input[type="datetime"], 1100 | input[type="datetime-local"], 1101 | input[type="date"], 1102 | input[type="month"], 1103 | input[type="time"], 1104 | input[type="week"], 1105 | input[type="number"], 1106 | input[type="email"], 1107 | input[type="url"], 1108 | input[type="search"], 1109 | input[type="tel"], 1110 | input[type="color"], 1111 | .uneditable-input { 1112 | background-color: #ffffff; 1113 | border: 1px solid #cccccc; 1114 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1115 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1116 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1117 | -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; 1118 | -moz-transition: border linear 0.2s, box-shadow linear 0.2s; 1119 | -o-transition: border linear 0.2s, box-shadow linear 0.2s; 1120 | transition: border linear 0.2s, box-shadow linear 0.2s; 1121 | } 1122 | 1123 | textarea:focus, 1124 | input[type="text"]:focus, 1125 | input[type="password"]:focus, 1126 | input[type="datetime"]:focus, 1127 | input[type="datetime-local"]:focus, 1128 | input[type="date"]:focus, 1129 | input[type="month"]:focus, 1130 | input[type="time"]:focus, 1131 | input[type="week"]:focus, 1132 | input[type="number"]:focus, 1133 | input[type="email"]:focus, 1134 | input[type="url"]:focus, 1135 | input[type="search"]:focus, 1136 | input[type="tel"]:focus, 1137 | input[type="color"]:focus, 1138 | .uneditable-input:focus { 1139 | border-color: rgba(82, 168, 236, 0.8); 1140 | outline: 0; 1141 | outline: thin dotted \9; 1142 | /* IE6-9 */ 1143 | 1144 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 1145 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 1146 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); 1147 | } 1148 | 1149 | input[type="radio"], 1150 | input[type="checkbox"] { 1151 | margin: 4px 0 0; 1152 | margin-top: 1px \9; 1153 | *margin-top: 0; 1154 | line-height: normal; 1155 | } 1156 | 1157 | input[type="file"], 1158 | input[type="image"], 1159 | input[type="submit"], 1160 | input[type="reset"], 1161 | input[type="button"], 1162 | input[type="radio"], 1163 | input[type="checkbox"] { 1164 | width: auto; 1165 | } 1166 | 1167 | select, 1168 | input[type="file"] { 1169 | height: 30px; 1170 | /* In IE7, the height of the select element cannot be changed by height, only font-size */ 1171 | 1172 | *margin-top: 4px; 1173 | /* For IE7, add top margin to align select with labels */ 1174 | 1175 | line-height: 30px; 1176 | } 1177 | 1178 | select { 1179 | width: 220px; 1180 | background-color: #ffffff; 1181 | border: 1px solid #cccccc; 1182 | } 1183 | 1184 | select[multiple], 1185 | select[size] { 1186 | height: auto; 1187 | } 1188 | 1189 | select:focus, 1190 | input[type="file"]:focus, 1191 | input[type="radio"]:focus, 1192 | input[type="checkbox"]:focus { 1193 | outline: thin dotted #333; 1194 | outline: 5px auto -webkit-focus-ring-color; 1195 | outline-offset: -2px; 1196 | } 1197 | 1198 | .uneditable-input, 1199 | .uneditable-textarea { 1200 | color: #999999; 1201 | cursor: not-allowed; 1202 | background-color: #fcfcfc; 1203 | border-color: #cccccc; 1204 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); 1205 | -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); 1206 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); 1207 | } 1208 | 1209 | .uneditable-input { 1210 | overflow: hidden; 1211 | white-space: nowrap; 1212 | } 1213 | 1214 | .uneditable-textarea { 1215 | width: auto; 1216 | height: auto; 1217 | } 1218 | 1219 | input:-moz-placeholder, 1220 | textarea:-moz-placeholder { 1221 | color: #999999; 1222 | } 1223 | 1224 | input:-ms-input-placeholder, 1225 | textarea:-ms-input-placeholder { 1226 | color: #999999; 1227 | } 1228 | 1229 | input::-webkit-input-placeholder, 1230 | textarea::-webkit-input-placeholder { 1231 | color: #999999; 1232 | } 1233 | 1234 | .radio, 1235 | .checkbox { 1236 | min-height: 20px; 1237 | padding-left: 20px; 1238 | } 1239 | 1240 | .radio input[type="radio"], 1241 | .checkbox input[type="checkbox"] { 1242 | float: left; 1243 | margin-left: -20px; 1244 | } 1245 | 1246 | .controls > .radio:first-child, 1247 | .controls > .checkbox:first-child { 1248 | padding-top: 5px; 1249 | } 1250 | 1251 | .radio.inline, 1252 | .checkbox.inline { 1253 | display: inline-block; 1254 | padding-top: 5px; 1255 | margin-bottom: 0; 1256 | vertical-align: middle; 1257 | } 1258 | 1259 | .radio.inline + .radio.inline, 1260 | .checkbox.inline + .checkbox.inline { 1261 | margin-left: 10px; 1262 | } 1263 | 1264 | .input-mini { 1265 | width: 60px; 1266 | } 1267 | 1268 | .input-small { 1269 | width: 90px; 1270 | } 1271 | 1272 | .input-medium { 1273 | width: 150px; 1274 | } 1275 | 1276 | .input-large { 1277 | width: 210px; 1278 | } 1279 | 1280 | .input-xlarge { 1281 | width: 270px; 1282 | } 1283 | 1284 | .input-xxlarge { 1285 | width: 530px; 1286 | } 1287 | 1288 | input[class*="span"], 1289 | select[class*="span"], 1290 | textarea[class*="span"], 1291 | .uneditable-input[class*="span"], 1292 | .row-fluid input[class*="span"], 1293 | .row-fluid select[class*="span"], 1294 | .row-fluid textarea[class*="span"], 1295 | .row-fluid .uneditable-input[class*="span"] { 1296 | float: none; 1297 | margin-left: 0; 1298 | } 1299 | 1300 | .input-append input[class*="span"], 1301 | .input-append .uneditable-input[class*="span"], 1302 | .input-prepend input[class*="span"], 1303 | .input-prepend .uneditable-input[class*="span"], 1304 | .row-fluid input[class*="span"], 1305 | .row-fluid select[class*="span"], 1306 | .row-fluid textarea[class*="span"], 1307 | .row-fluid .uneditable-input[class*="span"], 1308 | .row-fluid .input-prepend [class*="span"], 1309 | .row-fluid .input-append [class*="span"] { 1310 | display: inline-block; 1311 | } 1312 | 1313 | input, 1314 | textarea, 1315 | .uneditable-input { 1316 | margin-left: 0; 1317 | } 1318 | 1319 | .controls-row [class*="span"] + [class*="span"] { 1320 | margin-left: 20px; 1321 | } 1322 | 1323 | input.span12, 1324 | textarea.span12, 1325 | .uneditable-input.span12 { 1326 | width: 926px; 1327 | } 1328 | 1329 | input.span11, 1330 | textarea.span11, 1331 | .uneditable-input.span11 { 1332 | width: 846px; 1333 | } 1334 | 1335 | input.span10, 1336 | textarea.span10, 1337 | .uneditable-input.span10 { 1338 | width: 766px; 1339 | } 1340 | 1341 | input.span9, 1342 | textarea.span9, 1343 | .uneditable-input.span9 { 1344 | width: 686px; 1345 | } 1346 | 1347 | input.span8, 1348 | textarea.span8, 1349 | .uneditable-input.span8 { 1350 | width: 606px; 1351 | } 1352 | 1353 | input.span7, 1354 | textarea.span7, 1355 | .uneditable-input.span7 { 1356 | width: 526px; 1357 | } 1358 | 1359 | input.span6, 1360 | textarea.span6, 1361 | .uneditable-input.span6 { 1362 | width: 446px; 1363 | } 1364 | 1365 | input.span5, 1366 | textarea.span5, 1367 | .uneditable-input.span5 { 1368 | width: 366px; 1369 | } 1370 | 1371 | input.span4, 1372 | textarea.span4, 1373 | .uneditable-input.span4 { 1374 | width: 286px; 1375 | } 1376 | 1377 | input.span3, 1378 | textarea.span3, 1379 | .uneditable-input.span3 { 1380 | width: 206px; 1381 | } 1382 | 1383 | input.span2, 1384 | textarea.span2, 1385 | .uneditable-input.span2 { 1386 | width: 126px; 1387 | } 1388 | 1389 | input.span1, 1390 | textarea.span1, 1391 | .uneditable-input.span1 { 1392 | width: 46px; 1393 | } 1394 | 1395 | .controls-row { 1396 | *zoom: 1; 1397 | } 1398 | 1399 | .controls-row:before, 1400 | .controls-row:after { 1401 | display: table; 1402 | line-height: 0; 1403 | content: ""; 1404 | } 1405 | 1406 | .controls-row:after { 1407 | clear: both; 1408 | } 1409 | 1410 | .controls-row [class*="span"], 1411 | .row-fluid .controls-row [class*="span"] { 1412 | float: left; 1413 | } 1414 | 1415 | .controls-row .checkbox[class*="span"], 1416 | .controls-row .radio[class*="span"] { 1417 | padding-top: 5px; 1418 | } 1419 | 1420 | input[disabled], 1421 | select[disabled], 1422 | textarea[disabled], 1423 | input[readonly], 1424 | select[readonly], 1425 | textarea[readonly] { 1426 | cursor: not-allowed; 1427 | background-color: #eeeeee; 1428 | } 1429 | 1430 | input[type="radio"][disabled], 1431 | input[type="checkbox"][disabled], 1432 | input[type="radio"][readonly], 1433 | input[type="checkbox"][readonly] { 1434 | background-color: transparent; 1435 | } 1436 | 1437 | .control-group.warning .control-label, 1438 | .control-group.warning .help-block, 1439 | .control-group.warning .help-inline { 1440 | color: #c09853; 1441 | } 1442 | 1443 | .control-group.warning .checkbox, 1444 | .control-group.warning .radio, 1445 | .control-group.warning input, 1446 | .control-group.warning select, 1447 | .control-group.warning textarea { 1448 | color: #c09853; 1449 | } 1450 | 1451 | .control-group.warning input, 1452 | .control-group.warning select, 1453 | .control-group.warning textarea { 1454 | border-color: #c09853; 1455 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1456 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1457 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1458 | } 1459 | 1460 | .control-group.warning input:focus, 1461 | .control-group.warning select:focus, 1462 | .control-group.warning textarea:focus { 1463 | border-color: #a47e3c; 1464 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; 1465 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; 1466 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; 1467 | } 1468 | 1469 | .control-group.warning .input-prepend .add-on, 1470 | .control-group.warning .input-append .add-on { 1471 | color: #c09853; 1472 | background-color: #fcf8e3; 1473 | border-color: #c09853; 1474 | } 1475 | 1476 | .control-group.error .control-label, 1477 | .control-group.error .help-block, 1478 | .control-group.error .help-inline { 1479 | color: #b94a48; 1480 | } 1481 | 1482 | .control-group.error .checkbox, 1483 | .control-group.error .radio, 1484 | .control-group.error input, 1485 | .control-group.error select, 1486 | .control-group.error textarea { 1487 | color: #b94a48; 1488 | } 1489 | 1490 | .control-group.error input, 1491 | .control-group.error select, 1492 | .control-group.error textarea { 1493 | border-color: #b94a48; 1494 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1495 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1496 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1497 | } 1498 | 1499 | .control-group.error input:focus, 1500 | .control-group.error select:focus, 1501 | .control-group.error textarea:focus { 1502 | border-color: #953b39; 1503 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; 1504 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; 1505 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; 1506 | } 1507 | 1508 | .control-group.error .input-prepend .add-on, 1509 | .control-group.error .input-append .add-on { 1510 | color: #b94a48; 1511 | background-color: #f2dede; 1512 | border-color: #b94a48; 1513 | } 1514 | 1515 | .control-group.success .control-label, 1516 | .control-group.success .help-block, 1517 | .control-group.success .help-inline { 1518 | color: #468847; 1519 | } 1520 | 1521 | .control-group.success .checkbox, 1522 | .control-group.success .radio, 1523 | .control-group.success input, 1524 | .control-group.success select, 1525 | .control-group.success textarea { 1526 | color: #468847; 1527 | } 1528 | 1529 | .control-group.success input, 1530 | .control-group.success select, 1531 | .control-group.success textarea { 1532 | border-color: #468847; 1533 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1534 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1535 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1536 | } 1537 | 1538 | .control-group.success input:focus, 1539 | .control-group.success select:focus, 1540 | .control-group.success textarea:focus { 1541 | border-color: #356635; 1542 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; 1543 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; 1544 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; 1545 | } 1546 | 1547 | .control-group.success .input-prepend .add-on, 1548 | .control-group.success .input-append .add-on { 1549 | color: #468847; 1550 | background-color: #dff0d8; 1551 | border-color: #468847; 1552 | } 1553 | 1554 | .control-group.info .control-label, 1555 | .control-group.info .help-block, 1556 | .control-group.info .help-inline { 1557 | color: #3a87ad; 1558 | } 1559 | 1560 | .control-group.info .checkbox, 1561 | .control-group.info .radio, 1562 | .control-group.info input, 1563 | .control-group.info select, 1564 | .control-group.info textarea { 1565 | color: #3a87ad; 1566 | } 1567 | 1568 | .control-group.info input, 1569 | .control-group.info select, 1570 | .control-group.info textarea { 1571 | border-color: #3a87ad; 1572 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1573 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1574 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 1575 | } 1576 | 1577 | .control-group.info input:focus, 1578 | .control-group.info select:focus, 1579 | .control-group.info textarea:focus { 1580 | border-color: #2d6987; 1581 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; 1582 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; 1583 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; 1584 | } 1585 | 1586 | .control-group.info .input-prepend .add-on, 1587 | .control-group.info .input-append .add-on { 1588 | color: #3a87ad; 1589 | background-color: #d9edf7; 1590 | border-color: #3a87ad; 1591 | } 1592 | 1593 | input:focus:invalid, 1594 | textarea:focus:invalid, 1595 | select:focus:invalid { 1596 | color: #b94a48; 1597 | border-color: #ee5f5b; 1598 | } 1599 | 1600 | input:focus:invalid:focus, 1601 | textarea:focus:invalid:focus, 1602 | select:focus:invalid:focus { 1603 | border-color: #e9322d; 1604 | -webkit-box-shadow: 0 0 6px #f8b9b7; 1605 | -moz-box-shadow: 0 0 6px #f8b9b7; 1606 | box-shadow: 0 0 6px #f8b9b7; 1607 | } 1608 | 1609 | .form-actions { 1610 | padding: 19px 20px 20px; 1611 | margin-top: 20px; 1612 | margin-bottom: 20px; 1613 | background-color: #f5f5f5; 1614 | border-top: 1px solid #e5e5e5; 1615 | *zoom: 1; 1616 | } 1617 | 1618 | .form-actions:before, 1619 | .form-actions:after { 1620 | display: table; 1621 | line-height: 0; 1622 | content: ""; 1623 | } 1624 | 1625 | .form-actions:after { 1626 | clear: both; 1627 | } 1628 | 1629 | .help-block, 1630 | .help-inline { 1631 | color: #595959; 1632 | } 1633 | 1634 | .help-block { 1635 | display: block; 1636 | margin-bottom: 10px; 1637 | } 1638 | 1639 | .help-inline { 1640 | display: inline-block; 1641 | *display: inline; 1642 | padding-left: 5px; 1643 | vertical-align: middle; 1644 | *zoom: 1; 1645 | } 1646 | 1647 | .input-append, 1648 | .input-prepend { 1649 | margin-bottom: 5px; 1650 | font-size: 0; 1651 | white-space: nowrap; 1652 | } 1653 | 1654 | .input-append input, 1655 | .input-prepend input, 1656 | .input-append select, 1657 | .input-prepend select, 1658 | .input-append .uneditable-input, 1659 | .input-prepend .uneditable-input, 1660 | .input-append .dropdown-menu, 1661 | .input-prepend .dropdown-menu { 1662 | font-size: 14px; 1663 | } 1664 | 1665 | .input-append input, 1666 | .input-prepend input, 1667 | .input-append select, 1668 | .input-prepend select, 1669 | .input-append .uneditable-input, 1670 | .input-prepend .uneditable-input { 1671 | position: relative; 1672 | margin-bottom: 0; 1673 | *margin-left: 0; 1674 | vertical-align: top; 1675 | -webkit-border-radius: 0 4px 4px 0; 1676 | -moz-border-radius: 0 4px 4px 0; 1677 | border-radius: 0 4px 4px 0; 1678 | } 1679 | 1680 | .input-append input:focus, 1681 | .input-prepend input:focus, 1682 | .input-append select:focus, 1683 | .input-prepend select:focus, 1684 | .input-append .uneditable-input:focus, 1685 | .input-prepend .uneditable-input:focus { 1686 | z-index: 2; 1687 | } 1688 | 1689 | .input-append .add-on, 1690 | .input-prepend .add-on { 1691 | display: inline-block; 1692 | width: auto; 1693 | height: 20px; 1694 | min-width: 16px; 1695 | padding: 4px 5px; 1696 | font-size: 14px; 1697 | font-weight: normal; 1698 | line-height: 20px; 1699 | text-align: center; 1700 | text-shadow: 0 1px 0 #ffffff; 1701 | background-color: #eeeeee; 1702 | border: 1px solid #ccc; 1703 | } 1704 | 1705 | .input-append .add-on, 1706 | .input-prepend .add-on, 1707 | .input-append .btn, 1708 | .input-prepend .btn, 1709 | .input-append .btn-group > .dropdown-toggle, 1710 | .input-prepend .btn-group > .dropdown-toggle { 1711 | vertical-align: top; 1712 | -webkit-border-radius: 0; 1713 | -moz-border-radius: 0; 1714 | border-radius: 0; 1715 | } 1716 | 1717 | .input-append .active, 1718 | .input-prepend .active { 1719 | background-color: #a9dba9; 1720 | border-color: #46a546; 1721 | } 1722 | 1723 | .input-prepend .add-on, 1724 | .input-prepend .btn { 1725 | margin-right: -1px; 1726 | } 1727 | 1728 | .input-prepend .add-on:first-child, 1729 | .input-prepend .btn:first-child { 1730 | -webkit-border-radius: 4px 0 0 4px; 1731 | -moz-border-radius: 4px 0 0 4px; 1732 | border-radius: 4px 0 0 4px; 1733 | } 1734 | 1735 | .input-append input, 1736 | .input-append select, 1737 | .input-append .uneditable-input { 1738 | -webkit-border-radius: 4px 0 0 4px; 1739 | -moz-border-radius: 4px 0 0 4px; 1740 | border-radius: 4px 0 0 4px; 1741 | } 1742 | 1743 | .input-append input + .btn-group .btn:last-child, 1744 | .input-append select + .btn-group .btn:last-child, 1745 | .input-append .uneditable-input + .btn-group .btn:last-child { 1746 | -webkit-border-radius: 0 4px 4px 0; 1747 | -moz-border-radius: 0 4px 4px 0; 1748 | border-radius: 0 4px 4px 0; 1749 | } 1750 | 1751 | .input-append .add-on, 1752 | .input-append .btn, 1753 | .input-append .btn-group { 1754 | margin-left: -1px; 1755 | } 1756 | 1757 | .input-append .add-on:last-child, 1758 | .input-append .btn:last-child, 1759 | .input-append .btn-group:last-child > .dropdown-toggle { 1760 | -webkit-border-radius: 0 4px 4px 0; 1761 | -moz-border-radius: 0 4px 4px 0; 1762 | border-radius: 0 4px 4px 0; 1763 | } 1764 | 1765 | .input-prepend.input-append input, 1766 | .input-prepend.input-append select, 1767 | .input-prepend.input-append .uneditable-input { 1768 | -webkit-border-radius: 0; 1769 | -moz-border-radius: 0; 1770 | border-radius: 0; 1771 | } 1772 | 1773 | .input-prepend.input-append input + .btn-group .btn, 1774 | .input-prepend.input-append select + .btn-group .btn, 1775 | .input-prepend.input-append .uneditable-input + .btn-group .btn { 1776 | -webkit-border-radius: 0 4px 4px 0; 1777 | -moz-border-radius: 0 4px 4px 0; 1778 | border-radius: 0 4px 4px 0; 1779 | } 1780 | 1781 | .input-prepend.input-append .add-on:first-child, 1782 | .input-prepend.input-append .btn:first-child { 1783 | margin-right: -1px; 1784 | -webkit-border-radius: 4px 0 0 4px; 1785 | -moz-border-radius: 4px 0 0 4px; 1786 | border-radius: 4px 0 0 4px; 1787 | } 1788 | 1789 | .input-prepend.input-append .add-on:last-child, 1790 | .input-prepend.input-append .btn:last-child { 1791 | margin-left: -1px; 1792 | -webkit-border-radius: 0 4px 4px 0; 1793 | -moz-border-radius: 0 4px 4px 0; 1794 | border-radius: 0 4px 4px 0; 1795 | } 1796 | 1797 | .input-prepend.input-append .btn-group:first-child { 1798 | margin-left: 0; 1799 | } 1800 | 1801 | input.search-query { 1802 | padding-right: 14px; 1803 | padding-right: 4px \9; 1804 | padding-left: 14px; 1805 | padding-left: 4px \9; 1806 | /* IE7-8 doesn't have border-radius, so don't indent the padding */ 1807 | 1808 | margin-bottom: 0; 1809 | -webkit-border-radius: 15px; 1810 | -moz-border-radius: 15px; 1811 | border-radius: 15px; 1812 | } 1813 | 1814 | /* Allow for input prepend/append in search forms */ 1815 | 1816 | .form-search .input-append .search-query, 1817 | .form-search .input-prepend .search-query { 1818 | -webkit-border-radius: 0; 1819 | -moz-border-radius: 0; 1820 | border-radius: 0; 1821 | } 1822 | 1823 | .form-search .input-append .search-query { 1824 | -webkit-border-radius: 14px 0 0 14px; 1825 | -moz-border-radius: 14px 0 0 14px; 1826 | border-radius: 14px 0 0 14px; 1827 | } 1828 | 1829 | .form-search .input-append .btn { 1830 | -webkit-border-radius: 0 14px 14px 0; 1831 | -moz-border-radius: 0 14px 14px 0; 1832 | border-radius: 0 14px 14px 0; 1833 | } 1834 | 1835 | .form-search .input-prepend .search-query { 1836 | -webkit-border-radius: 0 14px 14px 0; 1837 | -moz-border-radius: 0 14px 14px 0; 1838 | border-radius: 0 14px 14px 0; 1839 | } 1840 | 1841 | .form-search .input-prepend .btn { 1842 | -webkit-border-radius: 14px 0 0 14px; 1843 | -moz-border-radius: 14px 0 0 14px; 1844 | border-radius: 14px 0 0 14px; 1845 | } 1846 | 1847 | .form-search input, 1848 | .form-inline input, 1849 | .form-horizontal input, 1850 | .form-search textarea, 1851 | .form-inline textarea, 1852 | .form-horizontal textarea, 1853 | .form-search select, 1854 | .form-inline select, 1855 | .form-horizontal select, 1856 | .form-search .help-inline, 1857 | .form-inline .help-inline, 1858 | .form-horizontal .help-inline, 1859 | .form-search .uneditable-input, 1860 | .form-inline .uneditable-input, 1861 | .form-horizontal .uneditable-input, 1862 | .form-search .input-prepend, 1863 | .form-inline .input-prepend, 1864 | .form-horizontal .input-prepend, 1865 | .form-search .input-append, 1866 | .form-inline .input-append, 1867 | .form-horizontal .input-append { 1868 | display: inline-block; 1869 | *display: inline; 1870 | margin-bottom: 0; 1871 | vertical-align: middle; 1872 | *zoom: 1; 1873 | } 1874 | 1875 | .form-search .hide, 1876 | .form-inline .hide, 1877 | .form-horizontal .hide { 1878 | display: none; 1879 | } 1880 | 1881 | .form-search label, 1882 | .form-inline label, 1883 | .form-search .btn-group, 1884 | .form-inline .btn-group { 1885 | display: inline-block; 1886 | } 1887 | 1888 | .form-search .input-append, 1889 | .form-inline .input-append, 1890 | .form-search .input-prepend, 1891 | .form-inline .input-prepend { 1892 | margin-bottom: 0; 1893 | } 1894 | 1895 | .form-search .radio, 1896 | .form-search .checkbox, 1897 | .form-inline .radio, 1898 | .form-inline .checkbox { 1899 | padding-left: 0; 1900 | margin-bottom: 0; 1901 | vertical-align: middle; 1902 | } 1903 | 1904 | .form-search .radio input[type="radio"], 1905 | .form-search .checkbox input[type="checkbox"], 1906 | .form-inline .radio input[type="radio"], 1907 | .form-inline .checkbox input[type="checkbox"] { 1908 | float: left; 1909 | margin-right: 3px; 1910 | margin-left: 0; 1911 | } 1912 | 1913 | .control-group { 1914 | margin-bottom: 10px; 1915 | } 1916 | 1917 | legend + .control-group { 1918 | margin-top: 20px; 1919 | -webkit-margin-top-collapse: separate; 1920 | } 1921 | 1922 | .form-horizontal .control-group { 1923 | margin-bottom: 20px; 1924 | *zoom: 1; 1925 | } 1926 | 1927 | .form-horizontal .control-group:before, 1928 | .form-horizontal .control-group:after { 1929 | display: table; 1930 | line-height: 0; 1931 | content: ""; 1932 | } 1933 | 1934 | .form-horizontal .control-group:after { 1935 | clear: both; 1936 | } 1937 | 1938 | .form-horizontal .control-label { 1939 | float: left; 1940 | width: 160px; 1941 | padding-top: 5px; 1942 | text-align: right; 1943 | } 1944 | 1945 | .form-horizontal .controls { 1946 | *display: inline-block; 1947 | *padding-left: 20px; 1948 | margin-left: 180px; 1949 | *margin-left: 0; 1950 | } 1951 | 1952 | .form-horizontal .controls:first-child { 1953 | *padding-left: 180px; 1954 | } 1955 | 1956 | .form-horizontal .help-block { 1957 | margin-bottom: 0; 1958 | } 1959 | 1960 | .form-horizontal input + .help-block, 1961 | .form-horizontal select + .help-block, 1962 | .form-horizontal textarea + .help-block, 1963 | .form-horizontal .uneditable-input + .help-block, 1964 | .form-horizontal .input-prepend + .help-block, 1965 | .form-horizontal .input-append + .help-block { 1966 | margin-top: 10px; 1967 | } 1968 | 1969 | .form-horizontal .form-actions { 1970 | padding-left: 180px; 1971 | } 1972 | 1973 | table { 1974 | max-width: 100%; 1975 | background-color: transparent; 1976 | border-collapse: collapse; 1977 | border-spacing: 0; 1978 | } 1979 | 1980 | .table { 1981 | width: 100%; 1982 | margin-bottom: 20px; 1983 | } 1984 | 1985 | .table th, 1986 | .table td { 1987 | padding: 8px; 1988 | line-height: 20px; 1989 | text-align: left; 1990 | vertical-align: top; 1991 | border-top: 1px solid #dddddd; 1992 | } 1993 | 1994 | .table th { 1995 | font-weight: bold; 1996 | } 1997 | 1998 | .table thead th { 1999 | vertical-align: bottom; 2000 | } 2001 | 2002 | .table caption + thead tr:first-child th, 2003 | .table caption + thead tr:first-child td, 2004 | .table colgroup + thead tr:first-child th, 2005 | .table colgroup + thead tr:first-child td, 2006 | .table thead:first-child tr:first-child th, 2007 | .table thead:first-child tr:first-child td { 2008 | border-top: 0; 2009 | } 2010 | 2011 | .table tbody + tbody { 2012 | border-top: 2px solid #dddddd; 2013 | } 2014 | 2015 | .table .table { 2016 | background-color: #ffffff; 2017 | } 2018 | 2019 | .table-condensed th, 2020 | .table-condensed td { 2021 | padding: 4px 5px; 2022 | } 2023 | 2024 | .table-bordered { 2025 | border: 1px solid #dddddd; 2026 | border-collapse: separate; 2027 | *border-collapse: collapse; 2028 | border-left: 0; 2029 | -webkit-border-radius: 4px; 2030 | -moz-border-radius: 4px; 2031 | border-radius: 4px; 2032 | } 2033 | 2034 | .table-bordered th, 2035 | .table-bordered td { 2036 | border-left: 1px solid #dddddd; 2037 | } 2038 | 2039 | .table-bordered caption + thead tr:first-child th, 2040 | .table-bordered caption + tbody tr:first-child th, 2041 | .table-bordered caption + tbody tr:first-child td, 2042 | .table-bordered colgroup + thead tr:first-child th, 2043 | .table-bordered colgroup + tbody tr:first-child th, 2044 | .table-bordered colgroup + tbody tr:first-child td, 2045 | .table-bordered thead:first-child tr:first-child th, 2046 | .table-bordered tbody:first-child tr:first-child th, 2047 | .table-bordered tbody:first-child tr:first-child td { 2048 | border-top: 0; 2049 | } 2050 | 2051 | .table-bordered thead:first-child tr:first-child > th:first-child, 2052 | .table-bordered tbody:first-child tr:first-child > td:first-child { 2053 | -webkit-border-top-left-radius: 4px; 2054 | border-top-left-radius: 4px; 2055 | -moz-border-radius-topleft: 4px; 2056 | } 2057 | 2058 | .table-bordered thead:first-child tr:first-child > th:last-child, 2059 | .table-bordered tbody:first-child tr:first-child > td:last-child { 2060 | -webkit-border-top-right-radius: 4px; 2061 | border-top-right-radius: 4px; 2062 | -moz-border-radius-topright: 4px; 2063 | } 2064 | 2065 | .table-bordered thead:last-child tr:last-child > th:first-child, 2066 | .table-bordered tbody:last-child tr:last-child > td:first-child, 2067 | .table-bordered tfoot:last-child tr:last-child > td:first-child { 2068 | -webkit-border-bottom-left-radius: 4px; 2069 | border-bottom-left-radius: 4px; 2070 | -moz-border-radius-bottomleft: 4px; 2071 | } 2072 | 2073 | .table-bordered thead:last-child tr:last-child > th:last-child, 2074 | .table-bordered tbody:last-child tr:last-child > td:last-child, 2075 | .table-bordered tfoot:last-child tr:last-child > td:last-child { 2076 | -webkit-border-bottom-right-radius: 4px; 2077 | border-bottom-right-radius: 4px; 2078 | -moz-border-radius-bottomright: 4px; 2079 | } 2080 | 2081 | .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { 2082 | -webkit-border-bottom-left-radius: 0; 2083 | border-bottom-left-radius: 0; 2084 | -moz-border-radius-bottomleft: 0; 2085 | } 2086 | 2087 | .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { 2088 | -webkit-border-bottom-right-radius: 0; 2089 | border-bottom-right-radius: 0; 2090 | -moz-border-radius-bottomright: 0; 2091 | } 2092 | 2093 | .table-bordered caption + thead tr:first-child th:first-child, 2094 | .table-bordered caption + tbody tr:first-child td:first-child, 2095 | .table-bordered colgroup + thead tr:first-child th:first-child, 2096 | .table-bordered colgroup + tbody tr:first-child td:first-child { 2097 | -webkit-border-top-left-radius: 4px; 2098 | border-top-left-radius: 4px; 2099 | -moz-border-radius-topleft: 4px; 2100 | } 2101 | 2102 | .table-bordered caption + thead tr:first-child th:last-child, 2103 | .table-bordered caption + tbody tr:first-child td:last-child, 2104 | .table-bordered colgroup + thead tr:first-child th:last-child, 2105 | .table-bordered colgroup + tbody tr:first-child td:last-child { 2106 | -webkit-border-top-right-radius: 4px; 2107 | border-top-right-radius: 4px; 2108 | -moz-border-radius-topright: 4px; 2109 | } 2110 | 2111 | .table-striped tbody > tr:nth-child(odd) > td, 2112 | .table-striped tbody > tr:nth-child(odd) > th { 2113 | background-color: #f9f9f9; 2114 | } 2115 | 2116 | .table-hover tbody tr:hover td, 2117 | .table-hover tbody tr:hover th { 2118 | background-color: #f5f5f5; 2119 | } 2120 | 2121 | table td[class*="span"], 2122 | table th[class*="span"], 2123 | .row-fluid table td[class*="span"], 2124 | .row-fluid table th[class*="span"] { 2125 | display: table-cell; 2126 | float: none; 2127 | margin-left: 0; 2128 | } 2129 | 2130 | .table td.span1, 2131 | .table th.span1 { 2132 | float: none; 2133 | width: 44px; 2134 | margin-left: 0; 2135 | } 2136 | 2137 | .table td.span2, 2138 | .table th.span2 { 2139 | float: none; 2140 | width: 124px; 2141 | margin-left: 0; 2142 | } 2143 | 2144 | .table td.span3, 2145 | .table th.span3 { 2146 | float: none; 2147 | width: 204px; 2148 | margin-left: 0; 2149 | } 2150 | 2151 | .table td.span4, 2152 | .table th.span4 { 2153 | float: none; 2154 | width: 284px; 2155 | margin-left: 0; 2156 | } 2157 | 2158 | .table td.span5, 2159 | .table th.span5 { 2160 | float: none; 2161 | width: 364px; 2162 | margin-left: 0; 2163 | } 2164 | 2165 | .table td.span6, 2166 | .table th.span6 { 2167 | float: none; 2168 | width: 444px; 2169 | margin-left: 0; 2170 | } 2171 | 2172 | .table td.span7, 2173 | .table th.span7 { 2174 | float: none; 2175 | width: 524px; 2176 | margin-left: 0; 2177 | } 2178 | 2179 | .table td.span8, 2180 | .table th.span8 { 2181 | float: none; 2182 | width: 604px; 2183 | margin-left: 0; 2184 | } 2185 | 2186 | .table td.span9, 2187 | .table th.span9 { 2188 | float: none; 2189 | width: 684px; 2190 | margin-left: 0; 2191 | } 2192 | 2193 | .table td.span10, 2194 | .table th.span10 { 2195 | float: none; 2196 | width: 764px; 2197 | margin-left: 0; 2198 | } 2199 | 2200 | .table td.span11, 2201 | .table th.span11 { 2202 | float: none; 2203 | width: 844px; 2204 | margin-left: 0; 2205 | } 2206 | 2207 | .table td.span12, 2208 | .table th.span12 { 2209 | float: none; 2210 | width: 924px; 2211 | margin-left: 0; 2212 | } 2213 | 2214 | .table tbody tr.success td { 2215 | background-color: #dff0d8; 2216 | } 2217 | 2218 | .table tbody tr.error td { 2219 | background-color: #f2dede; 2220 | } 2221 | 2222 | .table tbody tr.warning td { 2223 | background-color: #fcf8e3; 2224 | } 2225 | 2226 | .table tbody tr.info td { 2227 | background-color: #d9edf7; 2228 | } 2229 | 2230 | .table-hover tbody tr.success:hover td { 2231 | background-color: #d0e9c6; 2232 | } 2233 | 2234 | .table-hover tbody tr.error:hover td { 2235 | background-color: #ebcccc; 2236 | } 2237 | 2238 | .table-hover tbody tr.warning:hover td { 2239 | background-color: #faf2cc; 2240 | } 2241 | 2242 | .table-hover tbody tr.info:hover td { 2243 | background-color: #c4e3f3; 2244 | } 2245 | 2246 | [class^="icon-"], 2247 | [class*=" icon-"] { 2248 | display: inline-block; 2249 | width: 14px; 2250 | height: 14px; 2251 | margin-top: 1px; 2252 | *margin-right: .3em; 2253 | line-height: 14px; 2254 | vertical-align: text-top; 2255 | background-image: url("../img/glyphicons-halflings.png"); 2256 | background-position: 14px 14px; 2257 | background-repeat: no-repeat; 2258 | } 2259 | 2260 | /* White icons with optional class, or on hover/active states of certain elements */ 2261 | 2262 | .icon-white, 2263 | .nav-pills > .active > a > [class^="icon-"], 2264 | .nav-pills > .active > a > [class*=" icon-"], 2265 | .nav-list > .active > a > [class^="icon-"], 2266 | .nav-list > .active > a > [class*=" icon-"], 2267 | .navbar-inverse .nav > .active > a > [class^="icon-"], 2268 | .navbar-inverse .nav > .active > a > [class*=" icon-"], 2269 | .dropdown-menu > li > a:hover > [class^="icon-"], 2270 | .dropdown-menu > li > a:hover > [class*=" icon-"], 2271 | .dropdown-menu > .active > a > [class^="icon-"], 2272 | .dropdown-menu > .active > a > [class*=" icon-"], 2273 | .dropdown-submenu:hover > a > [class^="icon-"], 2274 | .dropdown-submenu:hover > a > [class*=" icon-"] { 2275 | background-image: url("../img/glyphicons-halflings-white.png"); 2276 | } 2277 | 2278 | .icon-glass { 2279 | background-position: 0 0; 2280 | } 2281 | 2282 | .icon-music { 2283 | background-position: -24px 0; 2284 | } 2285 | 2286 | .icon-search { 2287 | background-position: -48px 0; 2288 | } 2289 | 2290 | .icon-envelope { 2291 | background-position: -72px 0; 2292 | } 2293 | 2294 | .icon-heart { 2295 | background-position: -96px 0; 2296 | } 2297 | 2298 | .icon-star { 2299 | background-position: -120px 0; 2300 | } 2301 | 2302 | .icon-star-empty { 2303 | background-position: -144px 0; 2304 | } 2305 | 2306 | .icon-user { 2307 | background-position: -168px 0; 2308 | } 2309 | 2310 | .icon-film { 2311 | background-position: -192px 0; 2312 | } 2313 | 2314 | .icon-th-large { 2315 | background-position: -216px 0; 2316 | } 2317 | 2318 | .icon-th { 2319 | background-position: -240px 0; 2320 | } 2321 | 2322 | .icon-th-list { 2323 | background-position: -264px 0; 2324 | } 2325 | 2326 | .icon-ok { 2327 | background-position: -288px 0; 2328 | } 2329 | 2330 | .icon-remove { 2331 | background-position: -312px 0; 2332 | } 2333 | 2334 | .icon-zoom-in { 2335 | background-position: -336px 0; 2336 | } 2337 | 2338 | .icon-zoom-out { 2339 | background-position: -360px 0; 2340 | } 2341 | 2342 | .icon-off { 2343 | background-position: -384px 0; 2344 | } 2345 | 2346 | .icon-signal { 2347 | background-position: -408px 0; 2348 | } 2349 | 2350 | .icon-cog { 2351 | background-position: -432px 0; 2352 | } 2353 | 2354 | .icon-trash { 2355 | background-position: -456px 0; 2356 | } 2357 | 2358 | .icon-home { 2359 | background-position: 0 -24px; 2360 | } 2361 | 2362 | .icon-file { 2363 | background-position: -24px -24px; 2364 | } 2365 | 2366 | .icon-time { 2367 | background-position: -48px -24px; 2368 | } 2369 | 2370 | .icon-road { 2371 | background-position: -72px -24px; 2372 | } 2373 | 2374 | .icon-download-alt { 2375 | background-position: -96px -24px; 2376 | } 2377 | 2378 | .icon-download { 2379 | background-position: -120px -24px; 2380 | } 2381 | 2382 | .icon-upload { 2383 | background-position: -144px -24px; 2384 | } 2385 | 2386 | .icon-inbox { 2387 | background-position: -168px -24px; 2388 | } 2389 | 2390 | .icon-play-circle { 2391 | background-position: -192px -24px; 2392 | } 2393 | 2394 | .icon-repeat { 2395 | background-position: -216px -24px; 2396 | } 2397 | 2398 | .icon-refresh { 2399 | background-position: -240px -24px; 2400 | } 2401 | 2402 | .icon-list-alt { 2403 | background-position: -264px -24px; 2404 | } 2405 | 2406 | .icon-lock { 2407 | background-position: -287px -24px; 2408 | } 2409 | 2410 | .icon-flag { 2411 | background-position: -312px -24px; 2412 | } 2413 | 2414 | .icon-headphones { 2415 | background-position: -336px -24px; 2416 | } 2417 | 2418 | .icon-volume-off { 2419 | background-position: -360px -24px; 2420 | } 2421 | 2422 | .icon-volume-down { 2423 | background-position: -384px -24px; 2424 | } 2425 | 2426 | .icon-volume-up { 2427 | background-position: -408px -24px; 2428 | } 2429 | 2430 | .icon-qrcode { 2431 | background-position: -432px -24px; 2432 | } 2433 | 2434 | .icon-barcode { 2435 | background-position: -456px -24px; 2436 | } 2437 | 2438 | .icon-tag { 2439 | background-position: 0 -48px; 2440 | } 2441 | 2442 | .icon-tags { 2443 | background-position: -25px -48px; 2444 | } 2445 | 2446 | .icon-book { 2447 | background-position: -48px -48px; 2448 | } 2449 | 2450 | .icon-bookmark { 2451 | background-position: -72px -48px; 2452 | } 2453 | 2454 | .icon-print { 2455 | background-position: -96px -48px; 2456 | } 2457 | 2458 | .icon-camera { 2459 | background-position: -120px -48px; 2460 | } 2461 | 2462 | .icon-font { 2463 | background-position: -144px -48px; 2464 | } 2465 | 2466 | .icon-bold { 2467 | background-position: -167px -48px; 2468 | } 2469 | 2470 | .icon-italic { 2471 | background-position: -192px -48px; 2472 | } 2473 | 2474 | .icon-text-height { 2475 | background-position: -216px -48px; 2476 | } 2477 | 2478 | .icon-text-width { 2479 | background-position: -240px -48px; 2480 | } 2481 | 2482 | .icon-align-left { 2483 | background-position: -264px -48px; 2484 | } 2485 | 2486 | .icon-align-center { 2487 | background-position: -288px -48px; 2488 | } 2489 | 2490 | .icon-align-right { 2491 | background-position: -312px -48px; 2492 | } 2493 | 2494 | .icon-align-justify { 2495 | background-position: -336px -48px; 2496 | } 2497 | 2498 | .icon-list { 2499 | background-position: -360px -48px; 2500 | } 2501 | 2502 | .icon-indent-left { 2503 | background-position: -384px -48px; 2504 | } 2505 | 2506 | .icon-indent-right { 2507 | background-position: -408px -48px; 2508 | } 2509 | 2510 | .icon-facetime-video { 2511 | background-position: -432px -48px; 2512 | } 2513 | 2514 | .icon-picture { 2515 | background-position: -456px -48px; 2516 | } 2517 | 2518 | .icon-pencil { 2519 | background-position: 0 -72px; 2520 | } 2521 | 2522 | .icon-map-marker { 2523 | background-position: -24px -72px; 2524 | } 2525 | 2526 | .icon-adjust { 2527 | background-position: -48px -72px; 2528 | } 2529 | 2530 | .icon-tint { 2531 | background-position: -72px -72px; 2532 | } 2533 | 2534 | .icon-edit { 2535 | background-position: -96px -72px; 2536 | } 2537 | 2538 | .icon-share { 2539 | background-position: -120px -72px; 2540 | } 2541 | 2542 | .icon-check { 2543 | background-position: -144px -72px; 2544 | } 2545 | 2546 | .icon-move { 2547 | background-position: -168px -72px; 2548 | } 2549 | 2550 | .icon-step-backward { 2551 | background-position: -192px -72px; 2552 | } 2553 | 2554 | .icon-fast-backward { 2555 | background-position: -216px -72px; 2556 | } 2557 | 2558 | .icon-backward { 2559 | background-position: -240px -72px; 2560 | } 2561 | 2562 | .icon-play { 2563 | background-position: -264px -72px; 2564 | } 2565 | 2566 | .icon-pause { 2567 | background-position: -288px -72px; 2568 | } 2569 | 2570 | .icon-stop { 2571 | background-position: -312px -72px; 2572 | } 2573 | 2574 | .icon-forward { 2575 | background-position: -336px -72px; 2576 | } 2577 | 2578 | .icon-fast-forward { 2579 | background-position: -360px -72px; 2580 | } 2581 | 2582 | .icon-step-forward { 2583 | background-position: -384px -72px; 2584 | } 2585 | 2586 | .icon-eject { 2587 | background-position: -408px -72px; 2588 | } 2589 | 2590 | .icon-chevron-left { 2591 | background-position: -432px -72px; 2592 | } 2593 | 2594 | .icon-chevron-right { 2595 | background-position: -456px -72px; 2596 | } 2597 | 2598 | .icon-plus-sign { 2599 | background-position: 0 -96px; 2600 | } 2601 | 2602 | .icon-minus-sign { 2603 | background-position: -24px -96px; 2604 | } 2605 | 2606 | .icon-remove-sign { 2607 | background-position: -48px -96px; 2608 | } 2609 | 2610 | .icon-ok-sign { 2611 | background-position: -72px -96px; 2612 | } 2613 | 2614 | .icon-question-sign { 2615 | background-position: -96px -96px; 2616 | } 2617 | 2618 | .icon-info-sign { 2619 | background-position: -120px -96px; 2620 | } 2621 | 2622 | .icon-screenshot { 2623 | background-position: -144px -96px; 2624 | } 2625 | 2626 | .icon-remove-circle { 2627 | background-position: -168px -96px; 2628 | } 2629 | 2630 | .icon-ok-circle { 2631 | background-position: -192px -96px; 2632 | } 2633 | 2634 | .icon-ban-circle { 2635 | background-position: -216px -96px; 2636 | } 2637 | 2638 | .icon-arrow-left { 2639 | background-position: -240px -96px; 2640 | } 2641 | 2642 | .icon-arrow-right { 2643 | background-position: -264px -96px; 2644 | } 2645 | 2646 | .icon-arrow-up { 2647 | background-position: -289px -96px; 2648 | } 2649 | 2650 | .icon-arrow-down { 2651 | background-position: -312px -96px; 2652 | } 2653 | 2654 | .icon-share-alt { 2655 | background-position: -336px -96px; 2656 | } 2657 | 2658 | .icon-resize-full { 2659 | background-position: -360px -96px; 2660 | } 2661 | 2662 | .icon-resize-small { 2663 | background-position: -384px -96px; 2664 | } 2665 | 2666 | .icon-plus { 2667 | background-position: -408px -96px; 2668 | } 2669 | 2670 | .icon-minus { 2671 | background-position: -433px -96px; 2672 | } 2673 | 2674 | .icon-asterisk { 2675 | background-position: -456px -96px; 2676 | } 2677 | 2678 | .icon-exclamation-sign { 2679 | background-position: 0 -120px; 2680 | } 2681 | 2682 | .icon-gift { 2683 | background-position: -24px -120px; 2684 | } 2685 | 2686 | .icon-leaf { 2687 | background-position: -48px -120px; 2688 | } 2689 | 2690 | .icon-fire { 2691 | background-position: -72px -120px; 2692 | } 2693 | 2694 | .icon-eye-open { 2695 | background-position: -96px -120px; 2696 | } 2697 | 2698 | .icon-eye-close { 2699 | background-position: -120px -120px; 2700 | } 2701 | 2702 | .icon-warning-sign { 2703 | background-position: -144px -120px; 2704 | } 2705 | 2706 | .icon-plane { 2707 | background-position: -168px -120px; 2708 | } 2709 | 2710 | .icon-calendar { 2711 | background-position: -192px -120px; 2712 | } 2713 | 2714 | .icon-random { 2715 | width: 16px; 2716 | background-position: -216px -120px; 2717 | } 2718 | 2719 | .icon-comment { 2720 | background-position: -240px -120px; 2721 | } 2722 | 2723 | .icon-magnet { 2724 | background-position: -264px -120px; 2725 | } 2726 | 2727 | .icon-chevron-up { 2728 | background-position: -288px -120px; 2729 | } 2730 | 2731 | .icon-chevron-down { 2732 | background-position: -313px -119px; 2733 | } 2734 | 2735 | .icon-retweet { 2736 | background-position: -336px -120px; 2737 | } 2738 | 2739 | .icon-shopping-cart { 2740 | background-position: -360px -120px; 2741 | } 2742 | 2743 | .icon-folder-close { 2744 | background-position: -384px -120px; 2745 | } 2746 | 2747 | .icon-folder-open { 2748 | width: 16px; 2749 | background-position: -408px -120px; 2750 | } 2751 | 2752 | .icon-resize-vertical { 2753 | background-position: -432px -119px; 2754 | } 2755 | 2756 | .icon-resize-horizontal { 2757 | background-position: -456px -118px; 2758 | } 2759 | 2760 | .icon-hdd { 2761 | background-position: 0 -144px; 2762 | } 2763 | 2764 | .icon-bullhorn { 2765 | background-position: -24px -144px; 2766 | } 2767 | 2768 | .icon-bell { 2769 | background-position: -48px -144px; 2770 | } 2771 | 2772 | .icon-certificate { 2773 | background-position: -72px -144px; 2774 | } 2775 | 2776 | .icon-thumbs-up { 2777 | background-position: -96px -144px; 2778 | } 2779 | 2780 | .icon-thumbs-down { 2781 | background-position: -120px -144px; 2782 | } 2783 | 2784 | .icon-hand-right { 2785 | background-position: -144px -144px; 2786 | } 2787 | 2788 | .icon-hand-left { 2789 | background-position: -168px -144px; 2790 | } 2791 | 2792 | .icon-hand-up { 2793 | background-position: -192px -144px; 2794 | } 2795 | 2796 | .icon-hand-down { 2797 | background-position: -216px -144px; 2798 | } 2799 | 2800 | .icon-circle-arrow-right { 2801 | background-position: -240px -144px; 2802 | } 2803 | 2804 | .icon-circle-arrow-left { 2805 | background-position: -264px -144px; 2806 | } 2807 | 2808 | .icon-circle-arrow-up { 2809 | background-position: -288px -144px; 2810 | } 2811 | 2812 | .icon-circle-arrow-down { 2813 | background-position: -312px -144px; 2814 | } 2815 | 2816 | .icon-globe { 2817 | background-position: -336px -144px; 2818 | } 2819 | 2820 | .icon-wrench { 2821 | background-position: -360px -144px; 2822 | } 2823 | 2824 | .icon-tasks { 2825 | background-position: -384px -144px; 2826 | } 2827 | 2828 | .icon-filter { 2829 | background-position: -408px -144px; 2830 | } 2831 | 2832 | .icon-briefcase { 2833 | background-position: -432px -144px; 2834 | } 2835 | 2836 | .icon-fullscreen { 2837 | background-position: -456px -144px; 2838 | } 2839 | 2840 | .dropup, 2841 | .dropdown { 2842 | position: relative; 2843 | } 2844 | 2845 | .dropdown-toggle { 2846 | *margin-bottom: -3px; 2847 | } 2848 | 2849 | .dropdown-toggle:active, 2850 | .open .dropdown-toggle { 2851 | outline: 0; 2852 | } 2853 | 2854 | .caret { 2855 | display: inline-block; 2856 | width: 0; 2857 | height: 0; 2858 | vertical-align: top; 2859 | border-top: 4px solid #000000; 2860 | border-right: 4px solid transparent; 2861 | border-left: 4px solid transparent; 2862 | content: ""; 2863 | } 2864 | 2865 | .dropdown .caret { 2866 | margin-top: 8px; 2867 | margin-left: 2px; 2868 | } 2869 | 2870 | .dropdown-menu { 2871 | position: absolute; 2872 | top: 100%; 2873 | left: 0; 2874 | z-index: 1000; 2875 | display: none; 2876 | float: left; 2877 | min-width: 160px; 2878 | padding: 5px 0; 2879 | margin: 2px 0 0; 2880 | list-style: none; 2881 | background-color: #ffffff; 2882 | border: 1px solid #ccc; 2883 | border: 1px solid rgba(0, 0, 0, 0.2); 2884 | *border-right-width: 2px; 2885 | *border-bottom-width: 2px; 2886 | -webkit-border-radius: 6px; 2887 | -moz-border-radius: 6px; 2888 | border-radius: 6px; 2889 | -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 2890 | -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 2891 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 2892 | -webkit-background-clip: padding-box; 2893 | -moz-background-clip: padding; 2894 | background-clip: padding-box; 2895 | } 2896 | 2897 | .dropdown-menu.pull-right { 2898 | right: 0; 2899 | left: auto; 2900 | } 2901 | 2902 | .dropdown-menu .divider { 2903 | *width: 100%; 2904 | height: 1px; 2905 | margin: 9px 1px; 2906 | *margin: -5px 0 5px; 2907 | overflow: hidden; 2908 | background-color: #e5e5e5; 2909 | border-bottom: 1px solid #ffffff; 2910 | } 2911 | 2912 | .dropdown-menu li > a { 2913 | display: block; 2914 | padding: 3px 20px; 2915 | clear: both; 2916 | font-weight: normal; 2917 | line-height: 20px; 2918 | color: #333333; 2919 | white-space: nowrap; 2920 | } 2921 | 2922 | .dropdown-menu li > a:hover, 2923 | .dropdown-menu li > a:focus, 2924 | .dropdown-submenu:hover > a { 2925 | color: #ffffff; 2926 | text-decoration: none; 2927 | background-color: #0081c2; 2928 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 2929 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 2930 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 2931 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 2932 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 2933 | background-repeat: repeat-x; 2934 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 2935 | } 2936 | 2937 | .dropdown-menu .active > a, 2938 | .dropdown-menu .active > a:hover { 2939 | color: #ffffff; 2940 | text-decoration: none; 2941 | background-color: #0081c2; 2942 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 2943 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 2944 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 2945 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 2946 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 2947 | background-repeat: repeat-x; 2948 | outline: 0; 2949 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 2950 | } 2951 | 2952 | .dropdown-menu .disabled > a, 2953 | .dropdown-menu .disabled > a:hover { 2954 | color: #999999; 2955 | } 2956 | 2957 | .dropdown-menu .disabled > a:hover { 2958 | text-decoration: none; 2959 | cursor: default; 2960 | background-color: transparent; 2961 | background-image: none; 2962 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 2963 | } 2964 | 2965 | .open { 2966 | *z-index: 1000; 2967 | } 2968 | 2969 | .open > .dropdown-menu { 2970 | display: block; 2971 | } 2972 | 2973 | .pull-right > .dropdown-menu { 2974 | right: 0; 2975 | left: auto; 2976 | } 2977 | 2978 | .dropup .caret, 2979 | .navbar-fixed-bottom .dropdown .caret { 2980 | border-top: 0; 2981 | border-bottom: 4px solid #000000; 2982 | content: ""; 2983 | } 2984 | 2985 | .dropup .dropdown-menu, 2986 | .navbar-fixed-bottom .dropdown .dropdown-menu { 2987 | top: auto; 2988 | bottom: 100%; 2989 | margin-bottom: 1px; 2990 | } 2991 | 2992 | .dropdown-submenu { 2993 | position: relative; 2994 | } 2995 | 2996 | .dropdown-submenu > .dropdown-menu { 2997 | top: 0; 2998 | left: 100%; 2999 | margin-top: -6px; 3000 | margin-left: -1px; 3001 | -webkit-border-radius: 0 6px 6px 6px; 3002 | -moz-border-radius: 0 6px 6px 6px; 3003 | border-radius: 0 6px 6px 6px; 3004 | } 3005 | 3006 | .dropdown-submenu:hover > .dropdown-menu { 3007 | display: block; 3008 | } 3009 | 3010 | .dropup .dropdown-submenu > .dropdown-menu { 3011 | top: auto; 3012 | bottom: 0; 3013 | margin-top: 0; 3014 | margin-bottom: -2px; 3015 | -webkit-border-radius: 5px 5px 5px 0; 3016 | -moz-border-radius: 5px 5px 5px 0; 3017 | border-radius: 5px 5px 5px 0; 3018 | } 3019 | 3020 | .dropdown-submenu > a:after { 3021 | display: block; 3022 | float: right; 3023 | width: 0; 3024 | height: 0; 3025 | margin-top: 5px; 3026 | margin-right: -10px; 3027 | border-color: transparent; 3028 | border-left-color: #cccccc; 3029 | border-style: solid; 3030 | border-width: 5px 0 5px 5px; 3031 | content: " "; 3032 | } 3033 | 3034 | .dropdown-submenu:hover > a:after { 3035 | border-left-color: #ffffff; 3036 | } 3037 | 3038 | .dropdown-submenu.pull-left { 3039 | float: none; 3040 | } 3041 | 3042 | .dropdown-submenu.pull-left > .dropdown-menu { 3043 | left: -100%; 3044 | margin-left: 10px; 3045 | -webkit-border-radius: 6px 0 6px 6px; 3046 | -moz-border-radius: 6px 0 6px 6px; 3047 | border-radius: 6px 0 6px 6px; 3048 | } 3049 | 3050 | .dropdown .dropdown-menu .nav-header { 3051 | padding-right: 20px; 3052 | padding-left: 20px; 3053 | } 3054 | 3055 | .typeahead { 3056 | z-index: 1051; 3057 | margin-top: 2px; 3058 | -webkit-border-radius: 4px; 3059 | -moz-border-radius: 4px; 3060 | border-radius: 4px; 3061 | } 3062 | 3063 | .well { 3064 | min-height: 20px; 3065 | padding: 19px; 3066 | margin-bottom: 20px; 3067 | background-color: #f5f5f5; 3068 | border: 1px solid #e3e3e3; 3069 | -webkit-border-radius: 4px; 3070 | -moz-border-radius: 4px; 3071 | border-radius: 4px; 3072 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 3073 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 3074 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); 3075 | } 3076 | 3077 | .well blockquote { 3078 | border-color: #ddd; 3079 | border-color: rgba(0, 0, 0, 0.15); 3080 | } 3081 | 3082 | .well-large { 3083 | padding: 24px; 3084 | -webkit-border-radius: 6px; 3085 | -moz-border-radius: 6px; 3086 | border-radius: 6px; 3087 | } 3088 | 3089 | .well-small { 3090 | padding: 9px; 3091 | -webkit-border-radius: 3px; 3092 | -moz-border-radius: 3px; 3093 | border-radius: 3px; 3094 | } 3095 | 3096 | .fade { 3097 | opacity: 0; 3098 | -webkit-transition: opacity 0.15s linear; 3099 | -moz-transition: opacity 0.15s linear; 3100 | -o-transition: opacity 0.15s linear; 3101 | transition: opacity 0.15s linear; 3102 | } 3103 | 3104 | .fade.in { 3105 | opacity: 1; 3106 | } 3107 | 3108 | .collapse { 3109 | position: relative; 3110 | height: 0; 3111 | overflow: hidden; 3112 | -webkit-transition: height 0.35s ease; 3113 | -moz-transition: height 0.35s ease; 3114 | -o-transition: height 0.35s ease; 3115 | transition: height 0.35s ease; 3116 | } 3117 | 3118 | .collapse.in { 3119 | height: auto; 3120 | } 3121 | 3122 | .close { 3123 | float: right; 3124 | font-size: 20px; 3125 | font-weight: bold; 3126 | line-height: 20px; 3127 | color: #000000; 3128 | text-shadow: 0 1px 0 #ffffff; 3129 | opacity: 0.2; 3130 | filter: alpha(opacity=20); 3131 | } 3132 | 3133 | .close:hover { 3134 | color: #000000; 3135 | text-decoration: none; 3136 | cursor: pointer; 3137 | opacity: 0.4; 3138 | filter: alpha(opacity=40); 3139 | } 3140 | 3141 | button.close { 3142 | padding: 0; 3143 | cursor: pointer; 3144 | background: transparent; 3145 | border: 0; 3146 | -webkit-appearance: none; 3147 | } 3148 | 3149 | .btn { 3150 | display: inline-block; 3151 | *display: inline; 3152 | padding: 4px 12px; 3153 | margin-bottom: 0; 3154 | *margin-left: .3em; 3155 | font-size: 14px; 3156 | line-height: 20px; 3157 | color: #333333; 3158 | text-align: center; 3159 | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); 3160 | vertical-align: middle; 3161 | cursor: pointer; 3162 | background-color: #f5f5f5; 3163 | *background-color: #e6e6e6; 3164 | background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); 3165 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); 3166 | background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); 3167 | background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); 3168 | background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); 3169 | background-repeat: repeat-x; 3170 | border: 1px solid #bbbbbb; 3171 | *border: 0; 3172 | border-color: #e6e6e6 #e6e6e6 #bfbfbf; 3173 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3174 | border-bottom-color: #a2a2a2; 3175 | -webkit-border-radius: 4px; 3176 | -moz-border-radius: 4px; 3177 | border-radius: 4px; 3178 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); 3179 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3180 | *zoom: 1; 3181 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); 3182 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); 3183 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); 3184 | } 3185 | 3186 | .btn:hover, 3187 | .btn:active, 3188 | .btn.active, 3189 | .btn.disabled, 3190 | .btn[disabled] { 3191 | color: #333333; 3192 | background-color: #e6e6e6; 3193 | *background-color: #d9d9d9; 3194 | } 3195 | 3196 | .btn:active, 3197 | .btn.active { 3198 | background-color: #cccccc \9; 3199 | } 3200 | 3201 | .btn:first-child { 3202 | *margin-left: 0; 3203 | } 3204 | 3205 | .btn:hover { 3206 | color: #333333; 3207 | text-decoration: none; 3208 | background-position: 0 -15px; 3209 | -webkit-transition: background-position 0.1s linear; 3210 | -moz-transition: background-position 0.1s linear; 3211 | -o-transition: background-position 0.1s linear; 3212 | transition: background-position 0.1s linear; 3213 | } 3214 | 3215 | .btn:focus { 3216 | outline: thin dotted #333; 3217 | outline: 5px auto -webkit-focus-ring-color; 3218 | outline-offset: -2px; 3219 | } 3220 | 3221 | .btn.active, 3222 | .btn:active { 3223 | background-image: none; 3224 | outline: 0; 3225 | -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3226 | -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3227 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3228 | } 3229 | 3230 | .btn.disabled, 3231 | .btn[disabled] { 3232 | cursor: default; 3233 | background-image: none; 3234 | opacity: 0.65; 3235 | filter: alpha(opacity=65); 3236 | -webkit-box-shadow: none; 3237 | -moz-box-shadow: none; 3238 | box-shadow: none; 3239 | } 3240 | 3241 | .btn-large { 3242 | padding: 11px 19px; 3243 | font-size: 17.5px; 3244 | -webkit-border-radius: 6px; 3245 | -moz-border-radius: 6px; 3246 | border-radius: 6px; 3247 | } 3248 | 3249 | .btn-large [class^="icon-"], 3250 | .btn-large [class*=" icon-"] { 3251 | margin-top: 4px; 3252 | } 3253 | 3254 | .btn-small { 3255 | padding: 2px 10px; 3256 | font-size: 11.9px; 3257 | -webkit-border-radius: 3px; 3258 | -moz-border-radius: 3px; 3259 | border-radius: 3px; 3260 | } 3261 | 3262 | .btn-small [class^="icon-"], 3263 | .btn-small [class*=" icon-"] { 3264 | margin-top: 0; 3265 | } 3266 | 3267 | .btn-mini [class^="icon-"], 3268 | .btn-mini [class*=" icon-"] { 3269 | margin-top: -1px; 3270 | } 3271 | 3272 | .btn-mini { 3273 | padding: 0 6px; 3274 | font-size: 10.5px; 3275 | -webkit-border-radius: 3px; 3276 | -moz-border-radius: 3px; 3277 | border-radius: 3px; 3278 | } 3279 | 3280 | .btn-block { 3281 | display: block; 3282 | width: 100%; 3283 | padding-right: 0; 3284 | padding-left: 0; 3285 | -webkit-box-sizing: border-box; 3286 | -moz-box-sizing: border-box; 3287 | box-sizing: border-box; 3288 | } 3289 | 3290 | .btn-block + .btn-block { 3291 | margin-top: 5px; 3292 | } 3293 | 3294 | input[type="submit"].btn-block, 3295 | input[type="reset"].btn-block, 3296 | input[type="button"].btn-block { 3297 | width: 100%; 3298 | } 3299 | 3300 | .btn-primary.active, 3301 | .btn-warning.active, 3302 | .btn-danger.active, 3303 | .btn-success.active, 3304 | .btn-info.active, 3305 | .btn-inverse.active { 3306 | color: rgba(255, 255, 255, 0.75); 3307 | } 3308 | 3309 | .btn { 3310 | border-color: #c5c5c5; 3311 | border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); 3312 | } 3313 | 3314 | .btn-primary { 3315 | color: #ffffff; 3316 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3317 | background-color: #006dcc; 3318 | *background-color: #0044cc; 3319 | background-image: -moz-linear-gradient(top, #0088cc, #0044cc); 3320 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); 3321 | background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); 3322 | background-image: -o-linear-gradient(top, #0088cc, #0044cc); 3323 | background-image: linear-gradient(to bottom, #0088cc, #0044cc); 3324 | background-repeat: repeat-x; 3325 | border-color: #0044cc #0044cc #002a80; 3326 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3327 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); 3328 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3329 | } 3330 | 3331 | .btn-primary:hover, 3332 | .btn-primary:active, 3333 | .btn-primary.active, 3334 | .btn-primary.disabled, 3335 | .btn-primary[disabled] { 3336 | color: #ffffff; 3337 | background-color: #0044cc; 3338 | *background-color: #003bb3; 3339 | } 3340 | 3341 | .btn-primary:active, 3342 | .btn-primary.active { 3343 | background-color: #003399 \9; 3344 | } 3345 | 3346 | .btn-warning { 3347 | color: #ffffff; 3348 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3349 | background-color: #faa732; 3350 | *background-color: #f89406; 3351 | background-image: -moz-linear-gradient(top, #fbb450, #f89406); 3352 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); 3353 | background-image: -webkit-linear-gradient(top, #fbb450, #f89406); 3354 | background-image: -o-linear-gradient(top, #fbb450, #f89406); 3355 | background-image: linear-gradient(to bottom, #fbb450, #f89406); 3356 | background-repeat: repeat-x; 3357 | border-color: #f89406 #f89406 #ad6704; 3358 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3359 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); 3360 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3361 | } 3362 | 3363 | .btn-warning:hover, 3364 | .btn-warning:active, 3365 | .btn-warning.active, 3366 | .btn-warning.disabled, 3367 | .btn-warning[disabled] { 3368 | color: #ffffff; 3369 | background-color: #f89406; 3370 | *background-color: #df8505; 3371 | } 3372 | 3373 | .btn-warning:active, 3374 | .btn-warning.active { 3375 | background-color: #c67605 \9; 3376 | } 3377 | 3378 | .btn-danger { 3379 | color: #ffffff; 3380 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3381 | background-color: #da4f49; 3382 | *background-color: #bd362f; 3383 | background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); 3384 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); 3385 | background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); 3386 | background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); 3387 | background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); 3388 | background-repeat: repeat-x; 3389 | border-color: #bd362f #bd362f #802420; 3390 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3391 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); 3392 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3393 | } 3394 | 3395 | .btn-danger:hover, 3396 | .btn-danger:active, 3397 | .btn-danger.active, 3398 | .btn-danger.disabled, 3399 | .btn-danger[disabled] { 3400 | color: #ffffff; 3401 | background-color: #bd362f; 3402 | *background-color: #a9302a; 3403 | } 3404 | 3405 | .btn-danger:active, 3406 | .btn-danger.active { 3407 | background-color: #942a25 \9; 3408 | } 3409 | 3410 | .btn-success { 3411 | color: #ffffff; 3412 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3413 | background-color: #5bb75b; 3414 | *background-color: #51a351; 3415 | background-image: -moz-linear-gradient(top, #62c462, #51a351); 3416 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); 3417 | background-image: -webkit-linear-gradient(top, #62c462, #51a351); 3418 | background-image: -o-linear-gradient(top, #62c462, #51a351); 3419 | background-image: linear-gradient(to bottom, #62c462, #51a351); 3420 | background-repeat: repeat-x; 3421 | border-color: #51a351 #51a351 #387038; 3422 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3423 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); 3424 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3425 | } 3426 | 3427 | .btn-success:hover, 3428 | .btn-success:active, 3429 | .btn-success.active, 3430 | .btn-success.disabled, 3431 | .btn-success[disabled] { 3432 | color: #ffffff; 3433 | background-color: #51a351; 3434 | *background-color: #499249; 3435 | } 3436 | 3437 | .btn-success:active, 3438 | .btn-success.active { 3439 | background-color: #408140 \9; 3440 | } 3441 | 3442 | .btn-info { 3443 | color: #ffffff; 3444 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3445 | background-color: #49afcd; 3446 | *background-color: #2f96b4; 3447 | background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); 3448 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); 3449 | background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); 3450 | background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); 3451 | background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); 3452 | background-repeat: repeat-x; 3453 | border-color: #2f96b4 #2f96b4 #1f6377; 3454 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3455 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); 3456 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3457 | } 3458 | 3459 | .btn-info:hover, 3460 | .btn-info:active, 3461 | .btn-info.active, 3462 | .btn-info.disabled, 3463 | .btn-info[disabled] { 3464 | color: #ffffff; 3465 | background-color: #2f96b4; 3466 | *background-color: #2a85a0; 3467 | } 3468 | 3469 | .btn-info:active, 3470 | .btn-info.active { 3471 | background-color: #24748c \9; 3472 | } 3473 | 3474 | .btn-inverse { 3475 | color: #ffffff; 3476 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 3477 | background-color: #363636; 3478 | *background-color: #222222; 3479 | background-image: -moz-linear-gradient(top, #444444, #222222); 3480 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); 3481 | background-image: -webkit-linear-gradient(top, #444444, #222222); 3482 | background-image: -o-linear-gradient(top, #444444, #222222); 3483 | background-image: linear-gradient(to bottom, #444444, #222222); 3484 | background-repeat: repeat-x; 3485 | border-color: #222222 #222222 #000000; 3486 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 3487 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); 3488 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 3489 | } 3490 | 3491 | .btn-inverse:hover, 3492 | .btn-inverse:active, 3493 | .btn-inverse.active, 3494 | .btn-inverse.disabled, 3495 | .btn-inverse[disabled] { 3496 | color: #ffffff; 3497 | background-color: #222222; 3498 | *background-color: #151515; 3499 | } 3500 | 3501 | .btn-inverse:active, 3502 | .btn-inverse.active { 3503 | background-color: #080808 \9; 3504 | } 3505 | 3506 | button.btn, 3507 | input[type="submit"].btn { 3508 | *padding-top: 3px; 3509 | *padding-bottom: 3px; 3510 | } 3511 | 3512 | button.btn::-moz-focus-inner, 3513 | input[type="submit"].btn::-moz-focus-inner { 3514 | padding: 0; 3515 | border: 0; 3516 | } 3517 | 3518 | button.btn.btn-large, 3519 | input[type="submit"].btn.btn-large { 3520 | *padding-top: 7px; 3521 | *padding-bottom: 7px; 3522 | } 3523 | 3524 | button.btn.btn-small, 3525 | input[type="submit"].btn.btn-small { 3526 | *padding-top: 3px; 3527 | *padding-bottom: 3px; 3528 | } 3529 | 3530 | button.btn.btn-mini, 3531 | input[type="submit"].btn.btn-mini { 3532 | *padding-top: 1px; 3533 | *padding-bottom: 1px; 3534 | } 3535 | 3536 | .btn-link, 3537 | .btn-link:active, 3538 | .btn-link[disabled] { 3539 | background-color: transparent; 3540 | background-image: none; 3541 | -webkit-box-shadow: none; 3542 | -moz-box-shadow: none; 3543 | box-shadow: none; 3544 | } 3545 | 3546 | .btn-link { 3547 | color: #0088cc; 3548 | cursor: pointer; 3549 | border-color: transparent; 3550 | -webkit-border-radius: 0; 3551 | -moz-border-radius: 0; 3552 | border-radius: 0; 3553 | } 3554 | 3555 | .btn-link:hover { 3556 | color: #005580; 3557 | text-decoration: underline; 3558 | background-color: transparent; 3559 | } 3560 | 3561 | .btn-link[disabled]:hover { 3562 | color: #333333; 3563 | text-decoration: none; 3564 | } 3565 | 3566 | .btn-group { 3567 | position: relative; 3568 | display: inline-block; 3569 | *display: inline; 3570 | *margin-left: .3em; 3571 | font-size: 0; 3572 | white-space: nowrap; 3573 | vertical-align: middle; 3574 | *zoom: 1; 3575 | } 3576 | 3577 | .btn-group:first-child { 3578 | *margin-left: 0; 3579 | } 3580 | 3581 | .btn-group + .btn-group { 3582 | margin-left: 5px; 3583 | } 3584 | 3585 | .btn-toolbar { 3586 | margin-top: 10px; 3587 | margin-bottom: 10px; 3588 | font-size: 0; 3589 | } 3590 | 3591 | .btn-toolbar > .btn + .btn, 3592 | .btn-toolbar > .btn-group + .btn, 3593 | .btn-toolbar > .btn + .btn-group { 3594 | margin-left: 5px; 3595 | } 3596 | 3597 | .btn-group > .btn { 3598 | position: relative; 3599 | -webkit-border-radius: 0; 3600 | -moz-border-radius: 0; 3601 | border-radius: 0; 3602 | } 3603 | 3604 | .btn-group > .btn + .btn { 3605 | margin-left: -1px; 3606 | } 3607 | 3608 | .btn-group > .btn, 3609 | .btn-group > .dropdown-menu, 3610 | .btn-group > .popover { 3611 | font-size: 14px; 3612 | } 3613 | 3614 | .btn-group > .btn-mini { 3615 | font-size: 10.5px; 3616 | } 3617 | 3618 | .btn-group > .btn-small { 3619 | font-size: 11.9px; 3620 | } 3621 | 3622 | .btn-group > .btn-large { 3623 | font-size: 17.5px; 3624 | } 3625 | 3626 | .btn-group > .btn:first-child { 3627 | margin-left: 0; 3628 | -webkit-border-bottom-left-radius: 4px; 3629 | border-bottom-left-radius: 4px; 3630 | -webkit-border-top-left-radius: 4px; 3631 | border-top-left-radius: 4px; 3632 | -moz-border-radius-bottomleft: 4px; 3633 | -moz-border-radius-topleft: 4px; 3634 | } 3635 | 3636 | .btn-group > .btn:last-child, 3637 | .btn-group > .dropdown-toggle { 3638 | -webkit-border-top-right-radius: 4px; 3639 | border-top-right-radius: 4px; 3640 | -webkit-border-bottom-right-radius: 4px; 3641 | border-bottom-right-radius: 4px; 3642 | -moz-border-radius-topright: 4px; 3643 | -moz-border-radius-bottomright: 4px; 3644 | } 3645 | 3646 | .btn-group > .btn.large:first-child { 3647 | margin-left: 0; 3648 | -webkit-border-bottom-left-radius: 6px; 3649 | border-bottom-left-radius: 6px; 3650 | -webkit-border-top-left-radius: 6px; 3651 | border-top-left-radius: 6px; 3652 | -moz-border-radius-bottomleft: 6px; 3653 | -moz-border-radius-topleft: 6px; 3654 | } 3655 | 3656 | .btn-group > .btn.large:last-child, 3657 | .btn-group > .large.dropdown-toggle { 3658 | -webkit-border-top-right-radius: 6px; 3659 | border-top-right-radius: 6px; 3660 | -webkit-border-bottom-right-radius: 6px; 3661 | border-bottom-right-radius: 6px; 3662 | -moz-border-radius-topright: 6px; 3663 | -moz-border-radius-bottomright: 6px; 3664 | } 3665 | 3666 | .btn-group > .btn:hover, 3667 | .btn-group > .btn:focus, 3668 | .btn-group > .btn:active, 3669 | .btn-group > .btn.active { 3670 | z-index: 2; 3671 | } 3672 | 3673 | .btn-group .dropdown-toggle:active, 3674 | .btn-group.open .dropdown-toggle { 3675 | outline: 0; 3676 | } 3677 | 3678 | .btn-group > .btn + .dropdown-toggle { 3679 | *padding-top: 5px; 3680 | padding-right: 8px; 3681 | *padding-bottom: 5px; 3682 | padding-left: 8px; 3683 | -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); 3684 | -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); 3685 | 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); 3686 | } 3687 | 3688 | .btn-group > .btn-mini + .dropdown-toggle { 3689 | *padding-top: 2px; 3690 | padding-right: 5px; 3691 | *padding-bottom: 2px; 3692 | padding-left: 5px; 3693 | } 3694 | 3695 | .btn-group > .btn-small + .dropdown-toggle { 3696 | *padding-top: 5px; 3697 | *padding-bottom: 4px; 3698 | } 3699 | 3700 | .btn-group > .btn-large + .dropdown-toggle { 3701 | *padding-top: 7px; 3702 | padding-right: 12px; 3703 | *padding-bottom: 7px; 3704 | padding-left: 12px; 3705 | } 3706 | 3707 | .btn-group.open .dropdown-toggle { 3708 | background-image: none; 3709 | -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3710 | -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3711 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); 3712 | } 3713 | 3714 | .btn-group.open .btn.dropdown-toggle { 3715 | background-color: #e6e6e6; 3716 | } 3717 | 3718 | .btn-group.open .btn-primary.dropdown-toggle { 3719 | background-color: #0044cc; 3720 | } 3721 | 3722 | .btn-group.open .btn-warning.dropdown-toggle { 3723 | background-color: #f89406; 3724 | } 3725 | 3726 | .btn-group.open .btn-danger.dropdown-toggle { 3727 | background-color: #bd362f; 3728 | } 3729 | 3730 | .btn-group.open .btn-success.dropdown-toggle { 3731 | background-color: #51a351; 3732 | } 3733 | 3734 | .btn-group.open .btn-info.dropdown-toggle { 3735 | background-color: #2f96b4; 3736 | } 3737 | 3738 | .btn-group.open .btn-inverse.dropdown-toggle { 3739 | background-color: #222222; 3740 | } 3741 | 3742 | .btn .caret { 3743 | margin-top: 8px; 3744 | margin-left: 0; 3745 | } 3746 | 3747 | .btn-mini .caret, 3748 | .btn-small .caret, 3749 | .btn-large .caret { 3750 | margin-top: 6px; 3751 | } 3752 | 3753 | .btn-large .caret { 3754 | border-top-width: 5px; 3755 | border-right-width: 5px; 3756 | border-left-width: 5px; 3757 | } 3758 | 3759 | .dropup .btn-large .caret { 3760 | border-bottom-width: 5px; 3761 | } 3762 | 3763 | .btn-primary .caret, 3764 | .btn-warning .caret, 3765 | .btn-danger .caret, 3766 | .btn-info .caret, 3767 | .btn-success .caret, 3768 | .btn-inverse .caret { 3769 | border-top-color: #ffffff; 3770 | border-bottom-color: #ffffff; 3771 | } 3772 | 3773 | .btn-group-vertical { 3774 | display: inline-block; 3775 | *display: inline; 3776 | /* IE7 inline-block hack */ 3777 | 3778 | *zoom: 1; 3779 | } 3780 | 3781 | .btn-group-vertical > .btn { 3782 | display: block; 3783 | float: none; 3784 | max-width: 100%; 3785 | -webkit-border-radius: 0; 3786 | -moz-border-radius: 0; 3787 | border-radius: 0; 3788 | } 3789 | 3790 | .btn-group-vertical > .btn + .btn { 3791 | margin-top: -1px; 3792 | margin-left: 0; 3793 | } 3794 | 3795 | .btn-group-vertical > .btn:first-child { 3796 | -webkit-border-radius: 4px 4px 0 0; 3797 | -moz-border-radius: 4px 4px 0 0; 3798 | border-radius: 4px 4px 0 0; 3799 | } 3800 | 3801 | .btn-group-vertical > .btn:last-child { 3802 | -webkit-border-radius: 0 0 4px 4px; 3803 | -moz-border-radius: 0 0 4px 4px; 3804 | border-radius: 0 0 4px 4px; 3805 | } 3806 | 3807 | .btn-group-vertical > .btn-large:first-child { 3808 | -webkit-border-radius: 6px 6px 0 0; 3809 | -moz-border-radius: 6px 6px 0 0; 3810 | border-radius: 6px 6px 0 0; 3811 | } 3812 | 3813 | .btn-group-vertical > .btn-large:last-child { 3814 | -webkit-border-radius: 0 0 6px 6px; 3815 | -moz-border-radius: 0 0 6px 6px; 3816 | border-radius: 0 0 6px 6px; 3817 | } 3818 | 3819 | .alert { 3820 | padding: 8px 35px 8px 14px; 3821 | margin-bottom: 20px; 3822 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 3823 | background-color: #fcf8e3; 3824 | border: 1px solid #fbeed5; 3825 | -webkit-border-radius: 4px; 3826 | -moz-border-radius: 4px; 3827 | border-radius: 4px; 3828 | } 3829 | 3830 | .alert, 3831 | .alert h4 { 3832 | color: #c09853; 3833 | } 3834 | 3835 | .alert h4 { 3836 | margin: 0; 3837 | } 3838 | 3839 | .alert .close { 3840 | position: relative; 3841 | top: -2px; 3842 | right: -21px; 3843 | line-height: 20px; 3844 | } 3845 | 3846 | .alert-success { 3847 | color: #468847; 3848 | background-color: #dff0d8; 3849 | border-color: #d6e9c6; 3850 | } 3851 | 3852 | .alert-success h4 { 3853 | color: #468847; 3854 | } 3855 | 3856 | .alert-danger, 3857 | .alert-error { 3858 | color: #b94a48; 3859 | background-color: #f2dede; 3860 | border-color: #eed3d7; 3861 | } 3862 | 3863 | .alert-danger h4, 3864 | .alert-error h4 { 3865 | color: #b94a48; 3866 | } 3867 | 3868 | .alert-info { 3869 | color: #3a87ad; 3870 | background-color: #d9edf7; 3871 | border-color: #bce8f1; 3872 | } 3873 | 3874 | .alert-info h4 { 3875 | color: #3a87ad; 3876 | } 3877 | 3878 | .alert-block { 3879 | padding-top: 14px; 3880 | padding-bottom: 14px; 3881 | } 3882 | 3883 | .alert-block > p, 3884 | .alert-block > ul { 3885 | margin-bottom: 0; 3886 | } 3887 | 3888 | .alert-block p + p { 3889 | margin-top: 5px; 3890 | } 3891 | 3892 | .nav { 3893 | margin-bottom: 20px; 3894 | margin-left: 0; 3895 | list-style: none; 3896 | } 3897 | 3898 | .nav > li > a { 3899 | display: block; 3900 | } 3901 | 3902 | .nav > li > a:hover { 3903 | text-decoration: none; 3904 | background-color: #eeeeee; 3905 | } 3906 | 3907 | .nav > li > a > img { 3908 | max-width: none; 3909 | } 3910 | 3911 | .nav > .pull-right { 3912 | float: right; 3913 | } 3914 | 3915 | .nav-header { 3916 | display: block; 3917 | padding: 3px 15px; 3918 | font-size: 11px; 3919 | font-weight: bold; 3920 | line-height: 20px; 3921 | color: #999999; 3922 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 3923 | text-transform: uppercase; 3924 | } 3925 | 3926 | .nav li + .nav-header { 3927 | margin-top: 9px; 3928 | } 3929 | 3930 | .nav-list { 3931 | padding-right: 15px; 3932 | padding-left: 15px; 3933 | margin-bottom: 0; 3934 | } 3935 | 3936 | .nav-list > li > a, 3937 | .nav-list .nav-header { 3938 | margin-right: -15px; 3939 | margin-left: -15px; 3940 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 3941 | } 3942 | 3943 | .nav-list > li > a { 3944 | padding: 3px 15px; 3945 | } 3946 | 3947 | .nav-list > .active > a, 3948 | .nav-list > .active > a:hover { 3949 | color: #ffffff; 3950 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); 3951 | background-color: #0088cc; 3952 | } 3953 | 3954 | .nav-list [class^="icon-"], 3955 | .nav-list [class*=" icon-"] { 3956 | margin-right: 2px; 3957 | } 3958 | 3959 | .nav-list .divider { 3960 | *width: 100%; 3961 | height: 1px; 3962 | margin: 9px 1px; 3963 | *margin: -5px 0 5px; 3964 | overflow: hidden; 3965 | background-color: #e5e5e5; 3966 | border-bottom: 1px solid #ffffff; 3967 | } 3968 | 3969 | .nav-tabs, 3970 | .nav-pills { 3971 | *zoom: 1; 3972 | } 3973 | 3974 | .nav-tabs:before, 3975 | .nav-pills:before, 3976 | .nav-tabs:after, 3977 | .nav-pills:after { 3978 | display: table; 3979 | line-height: 0; 3980 | content: ""; 3981 | } 3982 | 3983 | .nav-tabs:after, 3984 | .nav-pills:after { 3985 | clear: both; 3986 | } 3987 | 3988 | .nav-tabs > li, 3989 | .nav-pills > li { 3990 | float: left; 3991 | } 3992 | 3993 | .nav-tabs > li > a, 3994 | .nav-pills > li > a { 3995 | padding-right: 12px; 3996 | padding-left: 12px; 3997 | margin-right: 2px; 3998 | line-height: 14px; 3999 | } 4000 | 4001 | .nav-tabs { 4002 | border-bottom: 1px solid #ddd; 4003 | } 4004 | 4005 | .nav-tabs > li { 4006 | margin-bottom: -1px; 4007 | } 4008 | 4009 | .nav-tabs > li > a { 4010 | padding-top: 8px; 4011 | padding-bottom: 8px; 4012 | line-height: 20px; 4013 | border: 1px solid transparent; 4014 | -webkit-border-radius: 4px 4px 0 0; 4015 | -moz-border-radius: 4px 4px 0 0; 4016 | border-radius: 4px 4px 0 0; 4017 | } 4018 | 4019 | .nav-tabs > li > a:hover { 4020 | border-color: #eeeeee #eeeeee #dddddd; 4021 | } 4022 | 4023 | .nav-tabs > .active > a, 4024 | .nav-tabs > .active > a:hover { 4025 | color: #555555; 4026 | cursor: default; 4027 | background-color: #ffffff; 4028 | border: 1px solid #ddd; 4029 | border-bottom-color: transparent; 4030 | } 4031 | 4032 | .nav-pills > li > a { 4033 | padding-top: 8px; 4034 | padding-bottom: 8px; 4035 | margin-top: 2px; 4036 | margin-bottom: 2px; 4037 | -webkit-border-radius: 5px; 4038 | -moz-border-radius: 5px; 4039 | border-radius: 5px; 4040 | } 4041 | 4042 | .nav-pills > .active > a, 4043 | .nav-pills > .active > a:hover { 4044 | color: #ffffff; 4045 | background-color: #0088cc; 4046 | } 4047 | 4048 | .nav-stacked > li { 4049 | float: none; 4050 | } 4051 | 4052 | .nav-stacked > li > a { 4053 | margin-right: 0; 4054 | } 4055 | 4056 | .nav-tabs.nav-stacked { 4057 | border-bottom: 0; 4058 | } 4059 | 4060 | .nav-tabs.nav-stacked > li > a { 4061 | border: 1px solid #ddd; 4062 | -webkit-border-radius: 0; 4063 | -moz-border-radius: 0; 4064 | border-radius: 0; 4065 | } 4066 | 4067 | .nav-tabs.nav-stacked > li:first-child > a { 4068 | -webkit-border-top-right-radius: 4px; 4069 | border-top-right-radius: 4px; 4070 | -webkit-border-top-left-radius: 4px; 4071 | border-top-left-radius: 4px; 4072 | -moz-border-radius-topright: 4px; 4073 | -moz-border-radius-topleft: 4px; 4074 | } 4075 | 4076 | .nav-tabs.nav-stacked > li:last-child > a { 4077 | -webkit-border-bottom-right-radius: 4px; 4078 | border-bottom-right-radius: 4px; 4079 | -webkit-border-bottom-left-radius: 4px; 4080 | border-bottom-left-radius: 4px; 4081 | -moz-border-radius-bottomright: 4px; 4082 | -moz-border-radius-bottomleft: 4px; 4083 | } 4084 | 4085 | .nav-tabs.nav-stacked > li > a:hover { 4086 | z-index: 2; 4087 | border-color: #ddd; 4088 | } 4089 | 4090 | .nav-pills.nav-stacked > li > a { 4091 | margin-bottom: 3px; 4092 | } 4093 | 4094 | .nav-pills.nav-stacked > li:last-child > a { 4095 | margin-bottom: 1px; 4096 | } 4097 | 4098 | .nav-tabs .dropdown-menu { 4099 | -webkit-border-radius: 0 0 6px 6px; 4100 | -moz-border-radius: 0 0 6px 6px; 4101 | border-radius: 0 0 6px 6px; 4102 | } 4103 | 4104 | .nav-pills .dropdown-menu { 4105 | -webkit-border-radius: 6px; 4106 | -moz-border-radius: 6px; 4107 | border-radius: 6px; 4108 | } 4109 | 4110 | .nav .dropdown-toggle .caret { 4111 | margin-top: 6px; 4112 | border-top-color: #0088cc; 4113 | border-bottom-color: #0088cc; 4114 | } 4115 | 4116 | .nav .dropdown-toggle:hover .caret { 4117 | border-top-color: #005580; 4118 | border-bottom-color: #005580; 4119 | } 4120 | 4121 | /* move down carets for tabs */ 4122 | 4123 | .nav-tabs .dropdown-toggle .caret { 4124 | margin-top: 8px; 4125 | } 4126 | 4127 | .nav .active .dropdown-toggle .caret { 4128 | border-top-color: #fff; 4129 | border-bottom-color: #fff; 4130 | } 4131 | 4132 | .nav-tabs .active .dropdown-toggle .caret { 4133 | border-top-color: #555555; 4134 | border-bottom-color: #555555; 4135 | } 4136 | 4137 | .nav > .dropdown.active > a:hover { 4138 | cursor: pointer; 4139 | } 4140 | 4141 | .nav-tabs .open .dropdown-toggle, 4142 | .nav-pills .open .dropdown-toggle, 4143 | .nav > li.dropdown.open.active > a:hover { 4144 | color: #ffffff; 4145 | background-color: #999999; 4146 | border-color: #999999; 4147 | } 4148 | 4149 | .nav li.dropdown.open .caret, 4150 | .nav li.dropdown.open.active .caret, 4151 | .nav li.dropdown.open a:hover .caret { 4152 | border-top-color: #ffffff; 4153 | border-bottom-color: #ffffff; 4154 | opacity: 1; 4155 | filter: alpha(opacity=100); 4156 | } 4157 | 4158 | .tabs-stacked .open > a:hover { 4159 | border-color: #999999; 4160 | } 4161 | 4162 | .tabbable { 4163 | *zoom: 1; 4164 | } 4165 | 4166 | .tabbable:before, 4167 | .tabbable:after { 4168 | display: table; 4169 | line-height: 0; 4170 | content: ""; 4171 | } 4172 | 4173 | .tabbable:after { 4174 | clear: both; 4175 | } 4176 | 4177 | .tab-content { 4178 | overflow: auto; 4179 | } 4180 | 4181 | .tabs-below > .nav-tabs, 4182 | .tabs-right > .nav-tabs, 4183 | .tabs-left > .nav-tabs { 4184 | border-bottom: 0; 4185 | } 4186 | 4187 | .tab-content > .tab-pane, 4188 | .pill-content > .pill-pane { 4189 | display: none; 4190 | } 4191 | 4192 | .tab-content > .active, 4193 | .pill-content > .active { 4194 | display: block; 4195 | } 4196 | 4197 | .tabs-below > .nav-tabs { 4198 | border-top: 1px solid #ddd; 4199 | } 4200 | 4201 | .tabs-below > .nav-tabs > li { 4202 | margin-top: -1px; 4203 | margin-bottom: 0; 4204 | } 4205 | 4206 | .tabs-below > .nav-tabs > li > a { 4207 | -webkit-border-radius: 0 0 4px 4px; 4208 | -moz-border-radius: 0 0 4px 4px; 4209 | border-radius: 0 0 4px 4px; 4210 | } 4211 | 4212 | .tabs-below > .nav-tabs > li > a:hover { 4213 | border-top-color: #ddd; 4214 | border-bottom-color: transparent; 4215 | } 4216 | 4217 | .tabs-below > .nav-tabs > .active > a, 4218 | .tabs-below > .nav-tabs > .active > a:hover { 4219 | border-color: transparent #ddd #ddd #ddd; 4220 | } 4221 | 4222 | .tabs-left > .nav-tabs > li, 4223 | .tabs-right > .nav-tabs > li { 4224 | float: none; 4225 | } 4226 | 4227 | .tabs-left > .nav-tabs > li > a, 4228 | .tabs-right > .nav-tabs > li > a { 4229 | min-width: 74px; 4230 | margin-right: 0; 4231 | margin-bottom: 3px; 4232 | } 4233 | 4234 | .tabs-left > .nav-tabs { 4235 | float: left; 4236 | margin-right: 19px; 4237 | border-right: 1px solid #ddd; 4238 | } 4239 | 4240 | .tabs-left > .nav-tabs > li > a { 4241 | margin-right: -1px; 4242 | -webkit-border-radius: 4px 0 0 4px; 4243 | -moz-border-radius: 4px 0 0 4px; 4244 | border-radius: 4px 0 0 4px; 4245 | } 4246 | 4247 | .tabs-left > .nav-tabs > li > a:hover { 4248 | border-color: #eeeeee #dddddd #eeeeee #eeeeee; 4249 | } 4250 | 4251 | .tabs-left > .nav-tabs .active > a, 4252 | .tabs-left > .nav-tabs .active > a:hover { 4253 | border-color: #ddd transparent #ddd #ddd; 4254 | *border-right-color: #ffffff; 4255 | } 4256 | 4257 | .tabs-right > .nav-tabs { 4258 | float: right; 4259 | margin-left: 19px; 4260 | border-left: 1px solid #ddd; 4261 | } 4262 | 4263 | .tabs-right > .nav-tabs > li > a { 4264 | margin-left: -1px; 4265 | -webkit-border-radius: 0 4px 4px 0; 4266 | -moz-border-radius: 0 4px 4px 0; 4267 | border-radius: 0 4px 4px 0; 4268 | } 4269 | 4270 | .tabs-right > .nav-tabs > li > a:hover { 4271 | border-color: #eeeeee #eeeeee #eeeeee #dddddd; 4272 | } 4273 | 4274 | .tabs-right > .nav-tabs .active > a, 4275 | .tabs-right > .nav-tabs .active > a:hover { 4276 | border-color: #ddd #ddd #ddd transparent; 4277 | *border-left-color: #ffffff; 4278 | } 4279 | 4280 | .nav > .disabled > a { 4281 | color: #999999; 4282 | } 4283 | 4284 | .nav > .disabled > a:hover { 4285 | text-decoration: none; 4286 | cursor: default; 4287 | background-color: transparent; 4288 | } 4289 | 4290 | .navbar { 4291 | *position: relative; 4292 | *z-index: 2; 4293 | margin-bottom: 20px; 4294 | overflow: visible; 4295 | } 4296 | 4297 | .navbar-inner { 4298 | min-height: 40px; 4299 | padding-right: 20px; 4300 | padding-left: 20px; 4301 | background-color: #fafafa; 4302 | background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); 4303 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); 4304 | background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); 4305 | background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); 4306 | background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); 4307 | background-repeat: repeat-x; 4308 | border: 1px solid #d4d4d4; 4309 | -webkit-border-radius: 4px; 4310 | -moz-border-radius: 4px; 4311 | border-radius: 4px; 4312 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); 4313 | *zoom: 1; 4314 | -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 4315 | -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 4316 | box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); 4317 | } 4318 | 4319 | .navbar-inner:before, 4320 | .navbar-inner:after { 4321 | display: table; 4322 | line-height: 0; 4323 | content: ""; 4324 | } 4325 | 4326 | .navbar-inner:after { 4327 | clear: both; 4328 | } 4329 | 4330 | .navbar .container { 4331 | width: auto; 4332 | } 4333 | 4334 | .nav-collapse.collapse { 4335 | height: auto; 4336 | overflow: visible; 4337 | } 4338 | 4339 | .navbar .brand { 4340 | display: block; 4341 | float: left; 4342 | padding: 10px 20px 10px; 4343 | margin-left: -20px; 4344 | font-size: 20px; 4345 | font-weight: 200; 4346 | color: #777777; 4347 | text-shadow: 0 1px 0 #ffffff; 4348 | } 4349 | 4350 | .navbar .brand:hover { 4351 | text-decoration: none; 4352 | } 4353 | 4354 | .navbar-text { 4355 | margin-bottom: 0; 4356 | line-height: 40px; 4357 | color: #777777; 4358 | } 4359 | 4360 | .navbar-link { 4361 | color: #777777; 4362 | } 4363 | 4364 | .navbar-link:hover { 4365 | color: #333333; 4366 | } 4367 | 4368 | .navbar .divider-vertical { 4369 | height: 40px; 4370 | margin: 0 9px; 4371 | border-right: 1px solid #ffffff; 4372 | border-left: 1px solid #f2f2f2; 4373 | } 4374 | 4375 | .navbar .btn, 4376 | .navbar .btn-group { 4377 | margin-top: 5px; 4378 | } 4379 | 4380 | .navbar .btn-group .btn, 4381 | .navbar .input-prepend .btn, 4382 | .navbar .input-append .btn { 4383 | margin-top: 0; 4384 | } 4385 | 4386 | .navbar-form { 4387 | margin-bottom: 0; 4388 | *zoom: 1; 4389 | } 4390 | 4391 | .navbar-form:before, 4392 | .navbar-form:after { 4393 | display: table; 4394 | line-height: 0; 4395 | content: ""; 4396 | } 4397 | 4398 | .navbar-form:after { 4399 | clear: both; 4400 | } 4401 | 4402 | .navbar-form input, 4403 | .navbar-form select, 4404 | .navbar-form .radio, 4405 | .navbar-form .checkbox { 4406 | margin-top: 5px; 4407 | } 4408 | 4409 | .navbar-form input, 4410 | .navbar-form select, 4411 | .navbar-form .btn { 4412 | display: inline-block; 4413 | margin-bottom: 0; 4414 | } 4415 | 4416 | .navbar-form input[type="image"], 4417 | .navbar-form input[type="checkbox"], 4418 | .navbar-form input[type="radio"] { 4419 | margin-top: 3px; 4420 | } 4421 | 4422 | .navbar-form .input-append, 4423 | .navbar-form .input-prepend { 4424 | margin-top: 5px; 4425 | white-space: nowrap; 4426 | } 4427 | 4428 | .navbar-form .input-append input, 4429 | .navbar-form .input-prepend input { 4430 | margin-top: 0; 4431 | } 4432 | 4433 | .navbar-search { 4434 | position: relative; 4435 | float: left; 4436 | margin-top: 5px; 4437 | margin-bottom: 0; 4438 | } 4439 | 4440 | .navbar-search .search-query { 4441 | padding: 4px 14px; 4442 | margin-bottom: 0; 4443 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 4444 | font-size: 13px; 4445 | font-weight: normal; 4446 | line-height: 1; 4447 | -webkit-border-radius: 15px; 4448 | -moz-border-radius: 15px; 4449 | border-radius: 15px; 4450 | } 4451 | 4452 | .navbar-static-top { 4453 | position: static; 4454 | margin-bottom: 0; 4455 | } 4456 | 4457 | .navbar-static-top .navbar-inner { 4458 | -webkit-border-radius: 0; 4459 | -moz-border-radius: 0; 4460 | border-radius: 0; 4461 | } 4462 | 4463 | .navbar-fixed-top, 4464 | .navbar-fixed-bottom { 4465 | position: fixed; 4466 | right: 0; 4467 | left: 0; 4468 | z-index: 1030; 4469 | margin-bottom: 0; 4470 | } 4471 | 4472 | .navbar-fixed-top .navbar-inner, 4473 | .navbar-static-top .navbar-inner { 4474 | border-width: 0 0 1px; 4475 | } 4476 | 4477 | .navbar-fixed-bottom .navbar-inner { 4478 | border-width: 1px 0 0; 4479 | } 4480 | 4481 | .navbar-fixed-top .navbar-inner, 4482 | .navbar-fixed-bottom .navbar-inner { 4483 | padding-right: 0; 4484 | padding-left: 0; 4485 | -webkit-border-radius: 0; 4486 | -moz-border-radius: 0; 4487 | border-radius: 0; 4488 | } 4489 | 4490 | .navbar-static-top .container, 4491 | .navbar-fixed-top .container, 4492 | .navbar-fixed-bottom .container { 4493 | width: 940px; 4494 | } 4495 | 4496 | .navbar-fixed-top { 4497 | top: 0; 4498 | } 4499 | 4500 | .navbar-fixed-top .navbar-inner, 4501 | .navbar-static-top .navbar-inner { 4502 | -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 4503 | -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 4504 | box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); 4505 | } 4506 | 4507 | .navbar-fixed-bottom { 4508 | bottom: 0; 4509 | } 4510 | 4511 | .navbar-fixed-bottom .navbar-inner { 4512 | -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); 4513 | -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); 4514 | box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); 4515 | } 4516 | 4517 | .navbar .nav { 4518 | position: relative; 4519 | left: 0; 4520 | display: block; 4521 | float: left; 4522 | margin: 0 10px 0 0; 4523 | } 4524 | 4525 | .navbar .nav.pull-right { 4526 | float: right; 4527 | margin-right: 0; 4528 | } 4529 | 4530 | .navbar .nav > li { 4531 | float: left; 4532 | } 4533 | 4534 | .navbar .nav > li > a { 4535 | float: none; 4536 | padding: 10px 15px 10px; 4537 | color: #777777; 4538 | text-decoration: none; 4539 | text-shadow: 0 1px 0 #ffffff; 4540 | } 4541 | 4542 | .navbar .nav .dropdown-toggle .caret { 4543 | margin-top: 8px; 4544 | } 4545 | 4546 | .navbar .nav > li > a:focus, 4547 | .navbar .nav > li > a:hover { 4548 | color: #333333; 4549 | text-decoration: none; 4550 | background-color: transparent; 4551 | } 4552 | 4553 | .navbar .nav > .active > a, 4554 | .navbar .nav > .active > a:hover, 4555 | .navbar .nav > .active > a:focus { 4556 | color: #555555; 4557 | text-decoration: none; 4558 | background-color: #e5e5e5; 4559 | -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); 4560 | -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); 4561 | box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); 4562 | } 4563 | 4564 | .navbar .btn-navbar { 4565 | display: none; 4566 | float: right; 4567 | padding: 7px 10px; 4568 | margin-right: 5px; 4569 | margin-left: 5px; 4570 | color: #ffffff; 4571 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 4572 | background-color: #ededed; 4573 | *background-color: #e5e5e5; 4574 | background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); 4575 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); 4576 | background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); 4577 | background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); 4578 | background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); 4579 | background-repeat: repeat-x; 4580 | border-color: #e5e5e5 #e5e5e5 #bfbfbf; 4581 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 4582 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); 4583 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 4584 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); 4585 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); 4586 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); 4587 | } 4588 | 4589 | .navbar .btn-navbar:hover, 4590 | .navbar .btn-navbar:active, 4591 | .navbar .btn-navbar.active, 4592 | .navbar .btn-navbar.disabled, 4593 | .navbar .btn-navbar[disabled] { 4594 | color: #ffffff; 4595 | background-color: #e5e5e5; 4596 | *background-color: #d9d9d9; 4597 | } 4598 | 4599 | .navbar .btn-navbar:active, 4600 | .navbar .btn-navbar.active { 4601 | background-color: #cccccc \9; 4602 | } 4603 | 4604 | .navbar .btn-navbar .icon-bar { 4605 | display: block; 4606 | width: 18px; 4607 | height: 2px; 4608 | background-color: #f5f5f5; 4609 | -webkit-border-radius: 1px; 4610 | -moz-border-radius: 1px; 4611 | border-radius: 1px; 4612 | -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); 4613 | -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); 4614 | box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); 4615 | } 4616 | 4617 | .btn-navbar .icon-bar + .icon-bar { 4618 | margin-top: 3px; 4619 | } 4620 | 4621 | .navbar .nav > li > .dropdown-menu:before { 4622 | position: absolute; 4623 | top: -7px; 4624 | left: 9px; 4625 | display: inline-block; 4626 | border-right: 7px solid transparent; 4627 | border-bottom: 7px solid #ccc; 4628 | border-left: 7px solid transparent; 4629 | border-bottom-color: rgba(0, 0, 0, 0.2); 4630 | content: ''; 4631 | } 4632 | 4633 | .navbar .nav > li > .dropdown-menu:after { 4634 | position: absolute; 4635 | top: -6px; 4636 | left: 10px; 4637 | display: inline-block; 4638 | border-right: 6px solid transparent; 4639 | border-bottom: 6px solid #ffffff; 4640 | border-left: 6px solid transparent; 4641 | content: ''; 4642 | } 4643 | 4644 | .navbar-fixed-bottom .nav > li > .dropdown-menu:before { 4645 | top: auto; 4646 | bottom: -7px; 4647 | border-top: 7px solid #ccc; 4648 | border-bottom: 0; 4649 | border-top-color: rgba(0, 0, 0, 0.2); 4650 | } 4651 | 4652 | .navbar-fixed-bottom .nav > li > .dropdown-menu:after { 4653 | top: auto; 4654 | bottom: -6px; 4655 | border-top: 6px solid #ffffff; 4656 | border-bottom: 0; 4657 | } 4658 | 4659 | .navbar .nav li.dropdown > a:hover .caret { 4660 | border-top-color: #555555; 4661 | border-bottom-color: #555555; 4662 | } 4663 | 4664 | .navbar .nav li.dropdown.open > .dropdown-toggle, 4665 | .navbar .nav li.dropdown.active > .dropdown-toggle, 4666 | .navbar .nav li.dropdown.open.active > .dropdown-toggle { 4667 | color: #555555; 4668 | background-color: #e5e5e5; 4669 | } 4670 | 4671 | .navbar .nav li.dropdown > .dropdown-toggle .caret { 4672 | border-top-color: #777777; 4673 | border-bottom-color: #777777; 4674 | } 4675 | 4676 | .navbar .nav li.dropdown.open > .dropdown-toggle .caret, 4677 | .navbar .nav li.dropdown.active > .dropdown-toggle .caret, 4678 | .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { 4679 | border-top-color: #555555; 4680 | border-bottom-color: #555555; 4681 | } 4682 | 4683 | .navbar .pull-right > li > .dropdown-menu, 4684 | .navbar .nav > li > .dropdown-menu.pull-right { 4685 | right: 0; 4686 | left: auto; 4687 | } 4688 | 4689 | .navbar .pull-right > li > .dropdown-menu:before, 4690 | .navbar .nav > li > .dropdown-menu.pull-right:before { 4691 | right: 12px; 4692 | left: auto; 4693 | } 4694 | 4695 | .navbar .pull-right > li > .dropdown-menu:after, 4696 | .navbar .nav > li > .dropdown-menu.pull-right:after { 4697 | right: 13px; 4698 | left: auto; 4699 | } 4700 | 4701 | .navbar .pull-right > li > .dropdown-menu .dropdown-menu, 4702 | .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { 4703 | right: 100%; 4704 | left: auto; 4705 | margin-right: -1px; 4706 | margin-left: 0; 4707 | -webkit-border-radius: 6px 0 6px 6px; 4708 | -moz-border-radius: 6px 0 6px 6px; 4709 | border-radius: 6px 0 6px 6px; 4710 | } 4711 | 4712 | .navbar-inverse .navbar-inner { 4713 | background-color: #1b1b1b; 4714 | background-image: -moz-linear-gradient(top, #222222, #111111); 4715 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); 4716 | background-image: -webkit-linear-gradient(top, #222222, #111111); 4717 | background-image: -o-linear-gradient(top, #222222, #111111); 4718 | background-image: linear-gradient(to bottom, #222222, #111111); 4719 | background-repeat: repeat-x; 4720 | border-color: #252525; 4721 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); 4722 | } 4723 | 4724 | .navbar-inverse .brand, 4725 | .navbar-inverse .nav > li > a { 4726 | color: #999999; 4727 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 4728 | } 4729 | 4730 | .navbar-inverse .brand:hover, 4731 | .navbar-inverse .nav > li > a:hover { 4732 | color: #ffffff; 4733 | } 4734 | 4735 | .navbar-inverse .brand { 4736 | color: #999999; 4737 | } 4738 | 4739 | .navbar-inverse .navbar-text { 4740 | color: #999999; 4741 | } 4742 | 4743 | .navbar-inverse .nav > li > a:focus, 4744 | .navbar-inverse .nav > li > a:hover { 4745 | color: #ffffff; 4746 | background-color: transparent; 4747 | } 4748 | 4749 | .navbar-inverse .nav .active > a, 4750 | .navbar-inverse .nav .active > a:hover, 4751 | .navbar-inverse .nav .active > a:focus { 4752 | color: #ffffff; 4753 | background-color: #111111; 4754 | } 4755 | 4756 | .navbar-inverse .navbar-link { 4757 | color: #999999; 4758 | } 4759 | 4760 | .navbar-inverse .navbar-link:hover { 4761 | color: #ffffff; 4762 | } 4763 | 4764 | .navbar-inverse .divider-vertical { 4765 | border-right-color: #222222; 4766 | border-left-color: #111111; 4767 | } 4768 | 4769 | .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, 4770 | .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, 4771 | .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { 4772 | color: #ffffff; 4773 | background-color: #111111; 4774 | } 4775 | 4776 | .navbar-inverse .nav li.dropdown > a:hover .caret { 4777 | border-top-color: #ffffff; 4778 | border-bottom-color: #ffffff; 4779 | } 4780 | 4781 | .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { 4782 | border-top-color: #999999; 4783 | border-bottom-color: #999999; 4784 | } 4785 | 4786 | .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, 4787 | .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, 4788 | .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { 4789 | border-top-color: #ffffff; 4790 | border-bottom-color: #ffffff; 4791 | } 4792 | 4793 | .navbar-inverse .navbar-search .search-query { 4794 | color: #ffffff; 4795 | background-color: #515151; 4796 | border-color: #111111; 4797 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); 4798 | -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); 4799 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); 4800 | -webkit-transition: none; 4801 | -moz-transition: none; 4802 | -o-transition: none; 4803 | transition: none; 4804 | } 4805 | 4806 | .navbar-inverse .navbar-search .search-query:-moz-placeholder { 4807 | color: #cccccc; 4808 | } 4809 | 4810 | .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { 4811 | color: #cccccc; 4812 | } 4813 | 4814 | .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { 4815 | color: #cccccc; 4816 | } 4817 | 4818 | .navbar-inverse .navbar-search .search-query:focus, 4819 | .navbar-inverse .navbar-search .search-query.focused { 4820 | padding: 5px 15px; 4821 | color: #333333; 4822 | text-shadow: 0 1px 0 #ffffff; 4823 | background-color: #ffffff; 4824 | border: 0; 4825 | outline: 0; 4826 | -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); 4827 | -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); 4828 | box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); 4829 | } 4830 | 4831 | .navbar-inverse .btn-navbar { 4832 | color: #ffffff; 4833 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 4834 | background-color: #0e0e0e; 4835 | *background-color: #040404; 4836 | background-image: -moz-linear-gradient(top, #151515, #040404); 4837 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); 4838 | background-image: -webkit-linear-gradient(top, #151515, #040404); 4839 | background-image: -o-linear-gradient(top, #151515, #040404); 4840 | background-image: linear-gradient(to bottom, #151515, #040404); 4841 | background-repeat: repeat-x; 4842 | border-color: #040404 #040404 #000000; 4843 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 4844 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); 4845 | filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); 4846 | } 4847 | 4848 | .navbar-inverse .btn-navbar:hover, 4849 | .navbar-inverse .btn-navbar:active, 4850 | .navbar-inverse .btn-navbar.active, 4851 | .navbar-inverse .btn-navbar.disabled, 4852 | .navbar-inverse .btn-navbar[disabled] { 4853 | color: #ffffff; 4854 | background-color: #040404; 4855 | *background-color: #000000; 4856 | } 4857 | 4858 | .navbar-inverse .btn-navbar:active, 4859 | .navbar-inverse .btn-navbar.active { 4860 | background-color: #000000 \9; 4861 | } 4862 | 4863 | .breadcrumb { 4864 | padding: 8px 15px; 4865 | margin: 0 0 20px; 4866 | list-style: none; 4867 | background-color: #f5f5f5; 4868 | -webkit-border-radius: 4px; 4869 | -moz-border-radius: 4px; 4870 | border-radius: 4px; 4871 | } 4872 | 4873 | .breadcrumb > li { 4874 | display: inline-block; 4875 | *display: inline; 4876 | text-shadow: 0 1px 0 #ffffff; 4877 | *zoom: 1; 4878 | } 4879 | 4880 | .breadcrumb > li > .divider { 4881 | padding: 0 5px; 4882 | color: #ccc; 4883 | } 4884 | 4885 | .breadcrumb > .active { 4886 | color: #999999; 4887 | } 4888 | 4889 | .pagination { 4890 | margin: 20px 0; 4891 | } 4892 | 4893 | .pagination ul { 4894 | display: inline-block; 4895 | *display: inline; 4896 | margin-bottom: 0; 4897 | margin-left: 0; 4898 | -webkit-border-radius: 4px; 4899 | -moz-border-radius: 4px; 4900 | border-radius: 4px; 4901 | *zoom: 1; 4902 | -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 4903 | -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 4904 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); 4905 | } 4906 | 4907 | .pagination ul > li { 4908 | display: inline; 4909 | } 4910 | 4911 | .pagination ul > li > a, 4912 | .pagination ul > li > span { 4913 | float: left; 4914 | padding: 4px 12px; 4915 | line-height: 20px; 4916 | text-decoration: none; 4917 | background-color: #ffffff; 4918 | border: 1px solid #dddddd; 4919 | border-left-width: 0; 4920 | } 4921 | 4922 | .pagination ul > li > a:hover, 4923 | .pagination ul > .active > a, 4924 | .pagination ul > .active > span { 4925 | background-color: #f5f5f5; 4926 | } 4927 | 4928 | .pagination ul > .active > a, 4929 | .pagination ul > .active > span { 4930 | color: #999999; 4931 | cursor: default; 4932 | } 4933 | 4934 | .pagination ul > .disabled > span, 4935 | .pagination ul > .disabled > a, 4936 | .pagination ul > .disabled > a:hover { 4937 | color: #999999; 4938 | cursor: default; 4939 | background-color: transparent; 4940 | } 4941 | 4942 | .pagination ul > li:first-child > a, 4943 | .pagination ul > li:first-child > span { 4944 | border-left-width: 1px; 4945 | -webkit-border-bottom-left-radius: 4px; 4946 | border-bottom-left-radius: 4px; 4947 | -webkit-border-top-left-radius: 4px; 4948 | border-top-left-radius: 4px; 4949 | -moz-border-radius-bottomleft: 4px; 4950 | -moz-border-radius-topleft: 4px; 4951 | } 4952 | 4953 | .pagination ul > li:last-child > a, 4954 | .pagination ul > li:last-child > span { 4955 | -webkit-border-top-right-radius: 4px; 4956 | border-top-right-radius: 4px; 4957 | -webkit-border-bottom-right-radius: 4px; 4958 | border-bottom-right-radius: 4px; 4959 | -moz-border-radius-topright: 4px; 4960 | -moz-border-radius-bottomright: 4px; 4961 | } 4962 | 4963 | .pagination-centered { 4964 | text-align: center; 4965 | } 4966 | 4967 | .pagination-right { 4968 | text-align: right; 4969 | } 4970 | 4971 | .pagination-large ul > li > a, 4972 | .pagination-large ul > li > span { 4973 | padding: 11px 19px; 4974 | font-size: 17.5px; 4975 | } 4976 | 4977 | .pagination-large ul > li:first-child > a, 4978 | .pagination-large ul > li:first-child > span { 4979 | -webkit-border-bottom-left-radius: 6px; 4980 | border-bottom-left-radius: 6px; 4981 | -webkit-border-top-left-radius: 6px; 4982 | border-top-left-radius: 6px; 4983 | -moz-border-radius-bottomleft: 6px; 4984 | -moz-border-radius-topleft: 6px; 4985 | } 4986 | 4987 | .pagination-large ul > li:last-child > a, 4988 | .pagination-large ul > li:last-child > span { 4989 | -webkit-border-top-right-radius: 6px; 4990 | border-top-right-radius: 6px; 4991 | -webkit-border-bottom-right-radius: 6px; 4992 | border-bottom-right-radius: 6px; 4993 | -moz-border-radius-topright: 6px; 4994 | -moz-border-radius-bottomright: 6px; 4995 | } 4996 | 4997 | .pagination-mini ul > li:first-child > a, 4998 | .pagination-small ul > li:first-child > a, 4999 | .pagination-mini ul > li:first-child > span, 5000 | .pagination-small ul > li:first-child > span { 5001 | -webkit-border-bottom-left-radius: 3px; 5002 | border-bottom-left-radius: 3px; 5003 | -webkit-border-top-left-radius: 3px; 5004 | border-top-left-radius: 3px; 5005 | -moz-border-radius-bottomleft: 3px; 5006 | -moz-border-radius-topleft: 3px; 5007 | } 5008 | 5009 | .pagination-mini ul > li:last-child > a, 5010 | .pagination-small ul > li:last-child > a, 5011 | .pagination-mini ul > li:last-child > span, 5012 | .pagination-small ul > li:last-child > span { 5013 | -webkit-border-top-right-radius: 3px; 5014 | border-top-right-radius: 3px; 5015 | -webkit-border-bottom-right-radius: 3px; 5016 | border-bottom-right-radius: 3px; 5017 | -moz-border-radius-topright: 3px; 5018 | -moz-border-radius-bottomright: 3px; 5019 | } 5020 | 5021 | .pagination-small ul > li > a, 5022 | .pagination-small ul > li > span { 5023 | padding: 2px 10px; 5024 | font-size: 11.9px; 5025 | } 5026 | 5027 | .pagination-mini ul > li > a, 5028 | .pagination-mini ul > li > span { 5029 | padding: 0 6px; 5030 | font-size: 10.5px; 5031 | } 5032 | 5033 | .pager { 5034 | margin: 20px 0; 5035 | text-align: center; 5036 | list-style: none; 5037 | *zoom: 1; 5038 | } 5039 | 5040 | .pager:before, 5041 | .pager:after { 5042 | display: table; 5043 | line-height: 0; 5044 | content: ""; 5045 | } 5046 | 5047 | .pager:after { 5048 | clear: both; 5049 | } 5050 | 5051 | .pager li { 5052 | display: inline; 5053 | } 5054 | 5055 | .pager li > a, 5056 | .pager li > span { 5057 | display: inline-block; 5058 | padding: 5px 14px; 5059 | background-color: #fff; 5060 | border: 1px solid #ddd; 5061 | -webkit-border-radius: 15px; 5062 | -moz-border-radius: 15px; 5063 | border-radius: 15px; 5064 | } 5065 | 5066 | .pager li > a:hover { 5067 | text-decoration: none; 5068 | background-color: #f5f5f5; 5069 | } 5070 | 5071 | .pager .next > a, 5072 | .pager .next > span { 5073 | float: right; 5074 | } 5075 | 5076 | .pager .previous > a, 5077 | .pager .previous > span { 5078 | float: left; 5079 | } 5080 | 5081 | .pager .disabled > a, 5082 | .pager .disabled > a:hover, 5083 | .pager .disabled > span { 5084 | color: #999999; 5085 | cursor: default; 5086 | background-color: #fff; 5087 | } 5088 | 5089 | .modal-backdrop { 5090 | position: fixed; 5091 | top: 0; 5092 | right: 0; 5093 | bottom: 0; 5094 | left: 0; 5095 | z-index: 1040; 5096 | background-color: #000000; 5097 | } 5098 | 5099 | .modal-backdrop.fade { 5100 | opacity: 0; 5101 | } 5102 | 5103 | .modal-backdrop, 5104 | .modal-backdrop.fade.in { 5105 | opacity: 0.8; 5106 | filter: alpha(opacity=80); 5107 | } 5108 | 5109 | .modal { 5110 | position: fixed; 5111 | top: 10%; 5112 | left: 50%; 5113 | z-index: 1050; 5114 | width: 560px; 5115 | margin-left: -280px; 5116 | background-color: #ffffff; 5117 | border: 1px solid #999; 5118 | border: 1px solid rgba(0, 0, 0, 0.3); 5119 | *border: 1px solid #999; 5120 | -webkit-border-radius: 6px; 5121 | -moz-border-radius: 6px; 5122 | border-radius: 6px; 5123 | outline: none; 5124 | -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); 5125 | -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); 5126 | box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); 5127 | -webkit-background-clip: padding-box; 5128 | -moz-background-clip: padding-box; 5129 | background-clip: padding-box; 5130 | } 5131 | 5132 | .modal.fade { 5133 | top: -25%; 5134 | -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; 5135 | -moz-transition: opacity 0.3s linear, top 0.3s ease-out; 5136 | -o-transition: opacity 0.3s linear, top 0.3s ease-out; 5137 | transition: opacity 0.3s linear, top 0.3s ease-out; 5138 | } 5139 | 5140 | .modal.fade.in { 5141 | top: 10%; 5142 | } 5143 | 5144 | .modal-header { 5145 | padding: 9px 15px; 5146 | border-bottom: 1px solid #eee; 5147 | } 5148 | 5149 | .modal-header .close { 5150 | margin-top: 2px; 5151 | } 5152 | 5153 | .modal-header h3 { 5154 | margin: 0; 5155 | line-height: 30px; 5156 | } 5157 | 5158 | .modal-body { 5159 | position: relative; 5160 | max-height: 400px; 5161 | padding: 15px; 5162 | overflow-y: auto; 5163 | } 5164 | 5165 | .modal-form { 5166 | margin-bottom: 0; 5167 | } 5168 | 5169 | .modal-footer { 5170 | padding: 14px 15px 15px; 5171 | margin-bottom: 0; 5172 | text-align: right; 5173 | background-color: #f5f5f5; 5174 | border-top: 1px solid #ddd; 5175 | -webkit-border-radius: 0 0 6px 6px; 5176 | -moz-border-radius: 0 0 6px 6px; 5177 | border-radius: 0 0 6px 6px; 5178 | *zoom: 1; 5179 | -webkit-box-shadow: inset 0 1px 0 #ffffff; 5180 | -moz-box-shadow: inset 0 1px 0 #ffffff; 5181 | box-shadow: inset 0 1px 0 #ffffff; 5182 | } 5183 | 5184 | .modal-footer:before, 5185 | .modal-footer:after { 5186 | display: table; 5187 | line-height: 0; 5188 | content: ""; 5189 | } 5190 | 5191 | .modal-footer:after { 5192 | clear: both; 5193 | } 5194 | 5195 | .modal-footer .btn + .btn { 5196 | margin-bottom: 0; 5197 | margin-left: 5px; 5198 | } 5199 | 5200 | .modal-footer .btn-group .btn + .btn { 5201 | margin-left: -1px; 5202 | } 5203 | 5204 | .modal-footer .btn-block + .btn-block { 5205 | margin-left: 0; 5206 | } 5207 | 5208 | .tooltip { 5209 | position: absolute; 5210 | z-index: 1030; 5211 | display: block; 5212 | padding: 5px; 5213 | font-size: 11px; 5214 | opacity: 0; 5215 | filter: alpha(opacity=0); 5216 | visibility: visible; 5217 | } 5218 | 5219 | .tooltip.in { 5220 | opacity: 0.8; 5221 | filter: alpha(opacity=80); 5222 | } 5223 | 5224 | .tooltip.top { 5225 | margin-top: -3px; 5226 | } 5227 | 5228 | .tooltip.right { 5229 | margin-left: 3px; 5230 | } 5231 | 5232 | .tooltip.bottom { 5233 | margin-top: 3px; 5234 | } 5235 | 5236 | .tooltip.left { 5237 | margin-left: -3px; 5238 | } 5239 | 5240 | .tooltip-inner { 5241 | max-width: 200px; 5242 | padding: 3px 8px; 5243 | color: #ffffff; 5244 | text-align: center; 5245 | text-decoration: none; 5246 | background-color: #000000; 5247 | -webkit-border-radius: 4px; 5248 | -moz-border-radius: 4px; 5249 | border-radius: 4px; 5250 | } 5251 | 5252 | .tooltip-arrow { 5253 | position: absolute; 5254 | width: 0; 5255 | height: 0; 5256 | border-color: transparent; 5257 | border-style: solid; 5258 | } 5259 | 5260 | .tooltip.top .tooltip-arrow { 5261 | bottom: 0; 5262 | left: 50%; 5263 | margin-left: -5px; 5264 | border-top-color: #000000; 5265 | border-width: 5px 5px 0; 5266 | } 5267 | 5268 | .tooltip.right .tooltip-arrow { 5269 | top: 50%; 5270 | left: 0; 5271 | margin-top: -5px; 5272 | border-right-color: #000000; 5273 | border-width: 5px 5px 5px 0; 5274 | } 5275 | 5276 | .tooltip.left .tooltip-arrow { 5277 | top: 50%; 5278 | right: 0; 5279 | margin-top: -5px; 5280 | border-left-color: #000000; 5281 | border-width: 5px 0 5px 5px; 5282 | } 5283 | 5284 | .tooltip.bottom .tooltip-arrow { 5285 | top: 0; 5286 | left: 50%; 5287 | margin-left: -5px; 5288 | border-bottom-color: #000000; 5289 | border-width: 0 5px 5px; 5290 | } 5291 | 5292 | .popover { 5293 | position: absolute; 5294 | top: 0; 5295 | left: 0; 5296 | z-index: 1010; 5297 | display: none; 5298 | width: 236px; 5299 | padding: 1px; 5300 | text-align: left; 5301 | white-space: normal; 5302 | background-color: #ffffff; 5303 | border: 1px solid #ccc; 5304 | border: 1px solid rgba(0, 0, 0, 0.2); 5305 | -webkit-border-radius: 6px; 5306 | -moz-border-radius: 6px; 5307 | border-radius: 6px; 5308 | -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 5309 | -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 5310 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 5311 | -webkit-background-clip: padding-box; 5312 | -moz-background-clip: padding; 5313 | background-clip: padding-box; 5314 | } 5315 | 5316 | .popover.top { 5317 | margin-top: -10px; 5318 | } 5319 | 5320 | .popover.right { 5321 | margin-left: 10px; 5322 | } 5323 | 5324 | .popover.bottom { 5325 | margin-top: 10px; 5326 | } 5327 | 5328 | .popover.left { 5329 | margin-left: -10px; 5330 | } 5331 | 5332 | .popover-title { 5333 | padding: 8px 14px; 5334 | margin: 0; 5335 | font-size: 14px; 5336 | font-weight: normal; 5337 | line-height: 18px; 5338 | background-color: #f7f7f7; 5339 | border-bottom: 1px solid #ebebeb; 5340 | -webkit-border-radius: 5px 5px 0 0; 5341 | -moz-border-radius: 5px 5px 0 0; 5342 | border-radius: 5px 5px 0 0; 5343 | } 5344 | 5345 | .popover-content { 5346 | padding: 9px 14px; 5347 | } 5348 | 5349 | .popover .arrow, 5350 | .popover .arrow:after { 5351 | position: absolute; 5352 | display: block; 5353 | width: 0; 5354 | height: 0; 5355 | border-color: transparent; 5356 | border-style: solid; 5357 | } 5358 | 5359 | .popover .arrow { 5360 | border-width: 11px; 5361 | } 5362 | 5363 | .popover .arrow:after { 5364 | border-width: 10px; 5365 | content: ""; 5366 | } 5367 | 5368 | .popover.top .arrow { 5369 | bottom: -11px; 5370 | left: 50%; 5371 | margin-left: -11px; 5372 | border-top-color: #999; 5373 | border-top-color: rgba(0, 0, 0, 0.25); 5374 | border-bottom-width: 0; 5375 | } 5376 | 5377 | .popover.top .arrow:after { 5378 | bottom: 1px; 5379 | margin-left: -10px; 5380 | border-top-color: #ffffff; 5381 | border-bottom-width: 0; 5382 | } 5383 | 5384 | .popover.right .arrow { 5385 | top: 50%; 5386 | left: -11px; 5387 | margin-top: -11px; 5388 | border-right-color: #999; 5389 | border-right-color: rgba(0, 0, 0, 0.25); 5390 | border-left-width: 0; 5391 | } 5392 | 5393 | .popover.right .arrow:after { 5394 | bottom: -10px; 5395 | left: 1px; 5396 | border-right-color: #ffffff; 5397 | border-left-width: 0; 5398 | } 5399 | 5400 | .popover.bottom .arrow { 5401 | top: -11px; 5402 | left: 50%; 5403 | margin-left: -11px; 5404 | border-bottom-color: #999; 5405 | border-bottom-color: rgba(0, 0, 0, 0.25); 5406 | border-top-width: 0; 5407 | } 5408 | 5409 | .popover.bottom .arrow:after { 5410 | top: 1px; 5411 | margin-left: -10px; 5412 | border-bottom-color: #ffffff; 5413 | border-top-width: 0; 5414 | } 5415 | 5416 | .popover.left .arrow { 5417 | top: 50%; 5418 | right: -11px; 5419 | margin-top: -11px; 5420 | border-left-color: #999; 5421 | border-left-color: rgba(0, 0, 0, 0.25); 5422 | border-right-width: 0; 5423 | } 5424 | 5425 | .popover.left .arrow:after { 5426 | right: 1px; 5427 | bottom: -10px; 5428 | border-left-color: #ffffff; 5429 | border-right-width: 0; 5430 | } 5431 | 5432 | .thumbnails { 5433 | margin-left: -20px; 5434 | list-style: none; 5435 | *zoom: 1; 5436 | } 5437 | 5438 | .thumbnails:before, 5439 | .thumbnails:after { 5440 | display: table; 5441 | line-height: 0; 5442 | content: ""; 5443 | } 5444 | 5445 | .thumbnails:after { 5446 | clear: both; 5447 | } 5448 | 5449 | .row-fluid .thumbnails { 5450 | margin-left: 0; 5451 | } 5452 | 5453 | .thumbnails > li { 5454 | float: left; 5455 | margin-bottom: 20px; 5456 | margin-left: 20px; 5457 | } 5458 | 5459 | .thumbnail { 5460 | display: block; 5461 | padding: 4px; 5462 | line-height: 20px; 5463 | border: 1px solid #ddd; 5464 | -webkit-border-radius: 4px; 5465 | -moz-border-radius: 4px; 5466 | border-radius: 4px; 5467 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); 5468 | -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); 5469 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); 5470 | -webkit-transition: all 0.2s ease-in-out; 5471 | -moz-transition: all 0.2s ease-in-out; 5472 | -o-transition: all 0.2s ease-in-out; 5473 | transition: all 0.2s ease-in-out; 5474 | } 5475 | 5476 | a.thumbnail:hover { 5477 | border-color: #0088cc; 5478 | -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); 5479 | -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); 5480 | box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); 5481 | } 5482 | 5483 | .thumbnail > img { 5484 | display: block; 5485 | max-width: 100%; 5486 | margin-right: auto; 5487 | margin-left: auto; 5488 | } 5489 | 5490 | .thumbnail .caption { 5491 | padding: 9px; 5492 | color: #555555; 5493 | } 5494 | 5495 | .media, 5496 | .media-body { 5497 | overflow: hidden; 5498 | *overflow: visible; 5499 | zoom: 1; 5500 | } 5501 | 5502 | .media, 5503 | .media .media { 5504 | margin-top: 15px; 5505 | } 5506 | 5507 | .media:first-child { 5508 | margin-top: 0; 5509 | } 5510 | 5511 | .media-object { 5512 | display: block; 5513 | } 5514 | 5515 | .media-heading { 5516 | margin: 0 0 5px; 5517 | } 5518 | 5519 | .media .pull-left { 5520 | margin-right: 10px; 5521 | } 5522 | 5523 | .media .pull-right { 5524 | margin-left: 10px; 5525 | } 5526 | 5527 | .media-list { 5528 | margin-left: 0; 5529 | list-style: none; 5530 | } 5531 | 5532 | .label, 5533 | .badge { 5534 | display: inline-block; 5535 | padding: 2px 4px; 5536 | font-size: 11.844px; 5537 | font-weight: bold; 5538 | line-height: 14px; 5539 | color: #ffffff; 5540 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 5541 | white-space: nowrap; 5542 | vertical-align: baseline; 5543 | background-color: #999999; 5544 | } 5545 | 5546 | .label { 5547 | -webkit-border-radius: 3px; 5548 | -moz-border-radius: 3px; 5549 | border-radius: 3px; 5550 | } 5551 | 5552 | .badge { 5553 | padding-right: 9px; 5554 | padding-left: 9px; 5555 | -webkit-border-radius: 9px; 5556 | -moz-border-radius: 9px; 5557 | border-radius: 9px; 5558 | } 5559 | 5560 | .label:empty, 5561 | .badge:empty { 5562 | display: none; 5563 | } 5564 | 5565 | a.label:hover, 5566 | a.badge:hover { 5567 | color: #ffffff; 5568 | text-decoration: none; 5569 | cursor: pointer; 5570 | } 5571 | 5572 | .label-important, 5573 | .badge-important { 5574 | background-color: #b94a48; 5575 | } 5576 | 5577 | .label-important[href], 5578 | .badge-important[href] { 5579 | background-color: #953b39; 5580 | } 5581 | 5582 | .label-warning, 5583 | .badge-warning { 5584 | background-color: #f89406; 5585 | } 5586 | 5587 | .label-warning[href], 5588 | .badge-warning[href] { 5589 | background-color: #c67605; 5590 | } 5591 | 5592 | .label-success, 5593 | .badge-success { 5594 | background-color: #468847; 5595 | } 5596 | 5597 | .label-success[href], 5598 | .badge-success[href] { 5599 | background-color: #356635; 5600 | } 5601 | 5602 | .label-info, 5603 | .badge-info { 5604 | background-color: #3a87ad; 5605 | } 5606 | 5607 | .label-info[href], 5608 | .badge-info[href] { 5609 | background-color: #2d6987; 5610 | } 5611 | 5612 | .label-inverse, 5613 | .badge-inverse { 5614 | background-color: #333333; 5615 | } 5616 | 5617 | .label-inverse[href], 5618 | .badge-inverse[href] { 5619 | background-color: #1a1a1a; 5620 | } 5621 | 5622 | .btn .label, 5623 | .btn .badge { 5624 | position: relative; 5625 | top: -1px; 5626 | } 5627 | 5628 | .btn-mini .label, 5629 | .btn-mini .badge { 5630 | top: 0; 5631 | } 5632 | 5633 | @-webkit-keyframes progress-bar-stripes { 5634 | from { 5635 | background-position: 40px 0; 5636 | } 5637 | to { 5638 | background-position: 0 0; 5639 | } 5640 | } 5641 | 5642 | @-moz-keyframes progress-bar-stripes { 5643 | from { 5644 | background-position: 40px 0; 5645 | } 5646 | to { 5647 | background-position: 0 0; 5648 | } 5649 | } 5650 | 5651 | @-ms-keyframes progress-bar-stripes { 5652 | from { 5653 | background-position: 40px 0; 5654 | } 5655 | to { 5656 | background-position: 0 0; 5657 | } 5658 | } 5659 | 5660 | @-o-keyframes progress-bar-stripes { 5661 | from { 5662 | background-position: 0 0; 5663 | } 5664 | to { 5665 | background-position: 40px 0; 5666 | } 5667 | } 5668 | 5669 | @keyframes progress-bar-stripes { 5670 | from { 5671 | background-position: 40px 0; 5672 | } 5673 | to { 5674 | background-position: 0 0; 5675 | } 5676 | } 5677 | 5678 | .progress { 5679 | height: 20px; 5680 | margin-bottom: 20px; 5681 | overflow: hidden; 5682 | background-color: #f7f7f7; 5683 | background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); 5684 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); 5685 | background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); 5686 | background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); 5687 | background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); 5688 | background-repeat: repeat-x; 5689 | -webkit-border-radius: 4px; 5690 | -moz-border-radius: 4px; 5691 | border-radius: 4px; 5692 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); 5693 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); 5694 | -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); 5695 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); 5696 | } 5697 | 5698 | .progress .bar { 5699 | float: left; 5700 | width: 0; 5701 | height: 100%; 5702 | font-size: 12px; 5703 | color: #ffffff; 5704 | text-align: center; 5705 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); 5706 | background-color: #0e90d2; 5707 | background-image: -moz-linear-gradient(top, #149bdf, #0480be); 5708 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); 5709 | background-image: -webkit-linear-gradient(top, #149bdf, #0480be); 5710 | background-image: -o-linear-gradient(top, #149bdf, #0480be); 5711 | background-image: linear-gradient(to bottom, #149bdf, #0480be); 5712 | background-repeat: repeat-x; 5713 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); 5714 | -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5715 | -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5716 | box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5717 | -webkit-box-sizing: border-box; 5718 | -moz-box-sizing: border-box; 5719 | box-sizing: border-box; 5720 | -webkit-transition: width 0.6s ease; 5721 | -moz-transition: width 0.6s ease; 5722 | -o-transition: width 0.6s ease; 5723 | transition: width 0.6s ease; 5724 | } 5725 | 5726 | .progress .bar + .bar { 5727 | -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5728 | -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5729 | box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); 5730 | } 5731 | 5732 | .progress-striped .bar { 5733 | background-color: #149bdf; 5734 | 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)); 5735 | 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); 5736 | 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); 5737 | 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); 5738 | 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); 5739 | -webkit-background-size: 40px 40px; 5740 | -moz-background-size: 40px 40px; 5741 | -o-background-size: 40px 40px; 5742 | background-size: 40px 40px; 5743 | } 5744 | 5745 | .progress.active .bar { 5746 | -webkit-animation: progress-bar-stripes 2s linear infinite; 5747 | -moz-animation: progress-bar-stripes 2s linear infinite; 5748 | -ms-animation: progress-bar-stripes 2s linear infinite; 5749 | -o-animation: progress-bar-stripes 2s linear infinite; 5750 | animation: progress-bar-stripes 2s linear infinite; 5751 | } 5752 | 5753 | .progress-danger .bar, 5754 | .progress .bar-danger { 5755 | background-color: #dd514c; 5756 | background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); 5757 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); 5758 | background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); 5759 | background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); 5760 | background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); 5761 | background-repeat: repeat-x; 5762 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); 5763 | } 5764 | 5765 | .progress-danger.progress-striped .bar, 5766 | .progress-striped .bar-danger { 5767 | background-color: #ee5f5b; 5768 | 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)); 5769 | 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); 5770 | 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); 5771 | 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); 5772 | 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); 5773 | } 5774 | 5775 | .progress-success .bar, 5776 | .progress .bar-success { 5777 | background-color: #5eb95e; 5778 | background-image: -moz-linear-gradient(top, #62c462, #57a957); 5779 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); 5780 | background-image: -webkit-linear-gradient(top, #62c462, #57a957); 5781 | background-image: -o-linear-gradient(top, #62c462, #57a957); 5782 | background-image: linear-gradient(to bottom, #62c462, #57a957); 5783 | background-repeat: repeat-x; 5784 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); 5785 | } 5786 | 5787 | .progress-success.progress-striped .bar, 5788 | .progress-striped .bar-success { 5789 | background-color: #62c462; 5790 | 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)); 5791 | 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); 5792 | 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); 5793 | 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); 5794 | 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); 5795 | } 5796 | 5797 | .progress-info .bar, 5798 | .progress .bar-info { 5799 | background-color: #4bb1cf; 5800 | background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); 5801 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); 5802 | background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); 5803 | background-image: -o-linear-gradient(top, #5bc0de, #339bb9); 5804 | background-image: linear-gradient(to bottom, #5bc0de, #339bb9); 5805 | background-repeat: repeat-x; 5806 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); 5807 | } 5808 | 5809 | .progress-info.progress-striped .bar, 5810 | .progress-striped .bar-info { 5811 | background-color: #5bc0de; 5812 | 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)); 5813 | 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); 5814 | 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); 5815 | 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); 5816 | 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); 5817 | } 5818 | 5819 | .progress-warning .bar, 5820 | .progress .bar-warning { 5821 | background-color: #faa732; 5822 | background-image: -moz-linear-gradient(top, #fbb450, #f89406); 5823 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); 5824 | background-image: -webkit-linear-gradient(top, #fbb450, #f89406); 5825 | background-image: -o-linear-gradient(top, #fbb450, #f89406); 5826 | background-image: linear-gradient(to bottom, #fbb450, #f89406); 5827 | background-repeat: repeat-x; 5828 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); 5829 | } 5830 | 5831 | .progress-warning.progress-striped .bar, 5832 | .progress-striped .bar-warning { 5833 | background-color: #fbb450; 5834 | 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)); 5835 | 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); 5836 | 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); 5837 | 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); 5838 | 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); 5839 | } 5840 | 5841 | .accordion { 5842 | margin-bottom: 20px; 5843 | } 5844 | 5845 | .accordion-group { 5846 | margin-bottom: 2px; 5847 | border: 1px solid #e5e5e5; 5848 | -webkit-border-radius: 4px; 5849 | -moz-border-radius: 4px; 5850 | border-radius: 4px; 5851 | } 5852 | 5853 | .accordion-heading { 5854 | border-bottom: 0; 5855 | } 5856 | 5857 | .accordion-heading .accordion-toggle { 5858 | display: block; 5859 | padding: 8px 15px; 5860 | } 5861 | 5862 | .accordion-toggle { 5863 | cursor: pointer; 5864 | } 5865 | 5866 | .accordion-inner { 5867 | padding: 9px 15px; 5868 | border-top: 1px solid #e5e5e5; 5869 | } 5870 | 5871 | .carousel { 5872 | position: relative; 5873 | margin-bottom: 20px; 5874 | line-height: 1; 5875 | } 5876 | 5877 | .carousel-inner { 5878 | position: relative; 5879 | width: 100%; 5880 | overflow: hidden; 5881 | } 5882 | 5883 | .carousel-inner > .item { 5884 | position: relative; 5885 | display: none; 5886 | -webkit-transition: 0.6s ease-in-out left; 5887 | -moz-transition: 0.6s ease-in-out left; 5888 | -o-transition: 0.6s ease-in-out left; 5889 | transition: 0.6s ease-in-out left; 5890 | } 5891 | 5892 | .carousel-inner > .item > img { 5893 | display: block; 5894 | line-height: 1; 5895 | } 5896 | 5897 | .carousel-inner > .active, 5898 | .carousel-inner > .next, 5899 | .carousel-inner > .prev { 5900 | display: block; 5901 | } 5902 | 5903 | .carousel-inner > .active { 5904 | left: 0; 5905 | } 5906 | 5907 | .carousel-inner > .next, 5908 | .carousel-inner > .prev { 5909 | position: absolute; 5910 | top: 0; 5911 | width: 100%; 5912 | } 5913 | 5914 | .carousel-inner > .next { 5915 | left: 100%; 5916 | } 5917 | 5918 | .carousel-inner > .prev { 5919 | left: -100%; 5920 | } 5921 | 5922 | .carousel-inner > .next.left, 5923 | .carousel-inner > .prev.right { 5924 | left: 0; 5925 | } 5926 | 5927 | .carousel-inner > .active.left { 5928 | left: -100%; 5929 | } 5930 | 5931 | .carousel-inner > .active.right { 5932 | left: 100%; 5933 | } 5934 | 5935 | .carousel-control { 5936 | position: absolute; 5937 | top: 40%; 5938 | left: 15px; 5939 | width: 40px; 5940 | height: 40px; 5941 | margin-top: -20px; 5942 | font-size: 60px; 5943 | font-weight: 100; 5944 | line-height: 30px; 5945 | color: #ffffff; 5946 | text-align: center; 5947 | background: #222222; 5948 | border: 3px solid #ffffff; 5949 | -webkit-border-radius: 23px; 5950 | -moz-border-radius: 23px; 5951 | border-radius: 23px; 5952 | opacity: 0.5; 5953 | filter: alpha(opacity=50); 5954 | } 5955 | 5956 | .carousel-control.right { 5957 | right: 15px; 5958 | left: auto; 5959 | } 5960 | 5961 | .carousel-control:hover { 5962 | color: #ffffff; 5963 | text-decoration: none; 5964 | opacity: 0.9; 5965 | filter: alpha(opacity=90); 5966 | } 5967 | 5968 | .carousel-caption { 5969 | position: absolute; 5970 | right: 0; 5971 | bottom: 0; 5972 | left: 0; 5973 | padding: 15px; 5974 | background: #333333; 5975 | background: rgba(0, 0, 0, 0.75); 5976 | } 5977 | 5978 | .carousel-caption h4, 5979 | .carousel-caption p { 5980 | line-height: 20px; 5981 | color: #ffffff; 5982 | } 5983 | 5984 | .carousel-caption h4 { 5985 | margin: 0 0 5px; 5986 | } 5987 | 5988 | .carousel-caption p { 5989 | margin-bottom: 0; 5990 | } 5991 | 5992 | .hero-unit { 5993 | padding: 60px; 5994 | margin-bottom: 30px; 5995 | font-size: 18px; 5996 | font-weight: 200; 5997 | line-height: 30px; 5998 | color: inherit; 5999 | background-color: #eeeeee; 6000 | -webkit-border-radius: 6px; 6001 | -moz-border-radius: 6px; 6002 | border-radius: 6px; 6003 | } 6004 | 6005 | .hero-unit h1 { 6006 | margin-bottom: 0; 6007 | font-size: 60px; 6008 | line-height: 1; 6009 | letter-spacing: -1px; 6010 | color: inherit; 6011 | } 6012 | 6013 | .hero-unit li { 6014 | line-height: 30px; 6015 | } 6016 | 6017 | .pull-right { 6018 | float: right; 6019 | } 6020 | 6021 | .pull-left { 6022 | float: left; 6023 | } 6024 | 6025 | .hide { 6026 | display: none; 6027 | } 6028 | 6029 | .show { 6030 | display: block; 6031 | } 6032 | 6033 | .invisible { 6034 | visibility: hidden; 6035 | } 6036 | 6037 | .affix { 6038 | position: fixed; 6039 | } 6040 | -------------------------------------------------------------------------------- /app/img/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qawemlilo/nodetube/dc6fc0ed6040ad8c2cf28691e0ea392cdef3a391/app/img/Thumbs.db -------------------------------------------------------------------------------- /app/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qawemlilo/nodetube/dc6fc0ed6040ad8c2cf28691e0ea392cdef3a391/app/img/bg.jpg -------------------------------------------------------------------------------- /app/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qawemlilo/nodetube/dc6fc0ed6040ad8c2cf28691e0ea392cdef3a391/app/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /app/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qawemlilo/nodetube/dc6fc0ed6040ad8c2cf28691e0ea392cdef3a391/app/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /app/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qawemlilo/nodetube/dc6fc0ed6040ad8c2cf28691e0ea392cdef3a391/app/img/loading.gif -------------------------------------------------------------------------------- /app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NodeTube - Download your youtube videos 6 | 7 | 8 | 9 | 10 | 11 | 12 | 49 | 50 | 51 | 54 | 55 | 56 | 57 | Fork me on GitHub 58 | 59 | 60 |
61 |
62 |

NodeTube

63 |

Download your YouTube videos

64 |
65 | 66 |
67 |
68 | 73 | 74 | 80 |
81 | 82 |
83 | 84 | 85 |
86 |
87 |
88 | 89 | 94 | 95 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /batch.js: -------------------------------------------------------------------------------- 1 | 2 | var ytdl = require('ytdl-core'); 3 | var fs = require('fs'); 4 | var parseFilename = require('./routes').parseFilename; 5 | var config = require('./config.json'); 6 | var videos = config.videos; 7 | var folder = config.folder; 8 | var ProgressBar = require('progress'); 9 | 10 | 11 | if (!fs.existsSync(folder)) { 12 | fs.mkdirSync(folder, 0777); 13 | } 14 | 15 | function exec() { 16 | "use strict"; 17 | 18 | if (!videos.length) { 19 | return; 20 | } 21 | 22 | var download; 23 | var writeStream; 24 | var url = videos.pop(); 25 | var filename; 26 | 27 | 28 | 29 | download = ytdl(url, {quality: config.quality}); 30 | 31 | download.on('info', function (info, data) { 32 | 33 | console.log(''); 34 | 35 | var bar = new ProgressBar('downloading [:bar] :percent :etas', { 36 | complete: '=', 37 | incomplete: ' ', 38 | width: 30, 39 | total: parseInt(data.size, 10) 40 | }); 41 | 42 | filename = parseFilename(info.title, config.format); 43 | 44 | writeStream = fs.createWriteStream(folder + filename); 45 | 46 | download.on('data', function (progress) { 47 | bar.tick(progress.length); 48 | }); 49 | 50 | download.pipe(writeStream); 51 | }); 52 | 53 | download.on('end', function () { 54 | console.log(filename + ' download complete!'); 55 | console.log(''); 56 | exec(); 57 | }); 58 | } 59 | 60 | exec(); 61 | -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "folder": "../youtube-downloads/", 3 | 4 | "format": "flv", 5 | 6 | "quality": "18", 7 | 8 | "videos": [ 9 | "https://www.youtube.com/watch?v=uiqJc6yz6tg" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodetube", 3 | "version": "0.1.1", 4 | "dependencies": { 5 | "balanced-match": { 6 | "version": "0.4.2", 7 | "from": "balanced-match@>=0.4.1 <0.5.0", 8 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", 9 | "dev": true 10 | }, 11 | "body-parser": { 12 | "version": "1.17.2", 13 | "from": "body-parser@>=1.15.2 <2.0.0", 14 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz" 15 | }, 16 | "brace-expansion": { 17 | "version": "1.1.7", 18 | "from": "brace-expansion@>=1.1.7 <2.0.0", 19 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", 20 | "dev": true 21 | }, 22 | "browser-stdout": { 23 | "version": "1.3.0", 24 | "from": "browser-stdout@1.3.0", 25 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 26 | "dev": true 27 | }, 28 | "bytes": { 29 | "version": "2.4.0", 30 | "from": "bytes@2.4.0", 31 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz" 32 | }, 33 | "commander": { 34 | "version": "2.9.0", 35 | "from": "commander@2.9.0", 36 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 37 | "dev": true 38 | }, 39 | "concat-map": { 40 | "version": "0.0.1", 41 | "from": "concat-map@0.0.1", 42 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 43 | "dev": true 44 | }, 45 | "connect": { 46 | "version": "3.6.2", 47 | "from": "connect@>=3.5.1 <4.0.0", 48 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz" 49 | }, 50 | "content-type": { 51 | "version": "1.0.2", 52 | "from": "content-type@>=1.0.2 <1.1.0", 53 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz" 54 | }, 55 | "debug": { 56 | "version": "2.6.7", 57 | "from": "debug@2.6.7", 58 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz" 59 | }, 60 | "depd": { 61 | "version": "1.1.0", 62 | "from": "depd@>=1.1.0 <1.2.0", 63 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" 64 | }, 65 | "destroy": { 66 | "version": "1.0.4", 67 | "from": "destroy@>=1.0.4 <1.1.0", 68 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz" 69 | }, 70 | "diff": { 71 | "version": "3.2.0", 72 | "from": "diff@3.2.0", 73 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 74 | "dev": true 75 | }, 76 | "ee-first": { 77 | "version": "1.1.1", 78 | "from": "ee-first@1.1.1", 79 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 80 | }, 81 | "encodeurl": { 82 | "version": "1.0.1", 83 | "from": "encodeurl@>=1.0.1 <1.1.0", 84 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz" 85 | }, 86 | "escape-html": { 87 | "version": "1.0.3", 88 | "from": "escape-html@>=1.0.3 <1.1.0", 89 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 90 | }, 91 | "escape-string-regexp": { 92 | "version": "1.0.5", 93 | "from": "escape-string-regexp@1.0.5", 94 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 95 | "dev": true 96 | }, 97 | "etag": { 98 | "version": "1.8.0", 99 | "from": "etag@>=1.8.0 <1.9.0", 100 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz" 101 | }, 102 | "finalhandler": { 103 | "version": "1.0.3", 104 | "from": "finalhandler@1.0.3", 105 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz" 106 | }, 107 | "fresh": { 108 | "version": "0.5.0", 109 | "from": "fresh@0.5.0", 110 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz" 111 | }, 112 | "fs.realpath": { 113 | "version": "1.0.0", 114 | "from": "fs.realpath@>=1.0.0 <2.0.0", 115 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 116 | "dev": true 117 | }, 118 | "glob": { 119 | "version": "7.1.1", 120 | "from": "glob@7.1.1", 121 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 122 | "dev": true 123 | }, 124 | "graceful-readlink": { 125 | "version": "1.0.1", 126 | "from": "graceful-readlink@>=1.0.0", 127 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 128 | "dev": true 129 | }, 130 | "growl": { 131 | "version": "1.9.2", 132 | "from": "growl@1.9.2", 133 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 134 | "dev": true 135 | }, 136 | "has-flag": { 137 | "version": "1.0.0", 138 | "from": "has-flag@>=1.0.0 <2.0.0", 139 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 140 | "dev": true 141 | }, 142 | "html-entities": { 143 | "version": "1.2.1", 144 | "from": "html-entities@>=1.1.3 <2.0.0", 145 | "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz" 146 | }, 147 | "http-errors": { 148 | "version": "1.6.1", 149 | "from": "http-errors@>=1.6.1 <1.7.0", 150 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz" 151 | }, 152 | "iconv-lite": { 153 | "version": "0.4.15", 154 | "from": "iconv-lite@0.4.15", 155 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz" 156 | }, 157 | "inflight": { 158 | "version": "1.0.6", 159 | "from": "inflight@>=1.0.4 <2.0.0", 160 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 161 | "dev": true 162 | }, 163 | "inherits": { 164 | "version": "2.0.3", 165 | "from": "inherits@2.0.3", 166 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" 167 | }, 168 | "json3": { 169 | "version": "3.3.2", 170 | "from": "json3@3.3.2", 171 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 172 | "dev": true 173 | }, 174 | "lodash._baseassign": { 175 | "version": "3.2.0", 176 | "from": "lodash._baseassign@>=3.0.0 <4.0.0", 177 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 178 | "dev": true 179 | }, 180 | "lodash._basecopy": { 181 | "version": "3.0.1", 182 | "from": "lodash._basecopy@>=3.0.0 <4.0.0", 183 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 184 | "dev": true 185 | }, 186 | "lodash._basecreate": { 187 | "version": "3.0.3", 188 | "from": "lodash._basecreate@>=3.0.0 <4.0.0", 189 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 190 | "dev": true 191 | }, 192 | "lodash._getnative": { 193 | "version": "3.9.1", 194 | "from": "lodash._getnative@>=3.0.0 <4.0.0", 195 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 196 | "dev": true 197 | }, 198 | "lodash._isiterateecall": { 199 | "version": "3.0.9", 200 | "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", 201 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 202 | "dev": true 203 | }, 204 | "lodash.create": { 205 | "version": "3.1.1", 206 | "from": "lodash.create@3.1.1", 207 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 208 | "dev": true 209 | }, 210 | "lodash.isarguments": { 211 | "version": "3.1.0", 212 | "from": "lodash.isarguments@>=3.0.0 <4.0.0", 213 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 214 | "dev": true 215 | }, 216 | "lodash.isarray": { 217 | "version": "3.0.4", 218 | "from": "lodash.isarray@>=3.0.0 <4.0.0", 219 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 220 | "dev": true 221 | }, 222 | "lodash.keys": { 223 | "version": "3.1.2", 224 | "from": "lodash.keys@>=3.0.0 <4.0.0", 225 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 226 | "dev": true 227 | }, 228 | "m3u8stream": { 229 | "version": "0.1.2", 230 | "from": "m3u8stream@>=0.1.1 <0.2.0", 231 | "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.1.2.tgz" 232 | }, 233 | "media-typer": { 234 | "version": "0.3.0", 235 | "from": "media-typer@0.3.0", 236 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" 237 | }, 238 | "mime": { 239 | "version": "1.3.4", 240 | "from": "mime@1.3.4", 241 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" 242 | }, 243 | "mime-db": { 244 | "version": "1.27.0", 245 | "from": "mime-db@>=1.27.0 <1.28.0", 246 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" 247 | }, 248 | "mime-types": { 249 | "version": "2.1.15", 250 | "from": "mime-types@>=2.1.15 <2.2.0", 251 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" 252 | }, 253 | "miniget": { 254 | "version": "1.0.0", 255 | "from": "miniget@>=1.0.0 <2.0.0", 256 | "resolved": "https://registry.npmjs.org/miniget/-/miniget-1.0.0.tgz" 257 | }, 258 | "minimatch": { 259 | "version": "3.0.4", 260 | "from": "minimatch@>=3.0.2 <4.0.0", 261 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 262 | "dev": true 263 | }, 264 | "minimist": { 265 | "version": "0.0.8", 266 | "from": "minimist@0.0.8", 267 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 268 | "dev": true 269 | }, 270 | "mkdirp": { 271 | "version": "0.5.1", 272 | "from": "mkdirp@0.5.1", 273 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 274 | "dev": true 275 | }, 276 | "mocha": { 277 | "version": "3.4.2", 278 | "from": "mocha@>=3.1.2 <4.0.0", 279 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", 280 | "dev": true, 281 | "dependencies": { 282 | "debug": { 283 | "version": "2.6.0", 284 | "from": "debug@2.6.0", 285 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", 286 | "dev": true 287 | }, 288 | "ms": { 289 | "version": "0.7.2", 290 | "from": "ms@0.7.2", 291 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 292 | "dev": true 293 | } 294 | } 295 | }, 296 | "ms": { 297 | "version": "2.0.0", 298 | "from": "ms@2.0.0", 299 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 300 | }, 301 | "on-finished": { 302 | "version": "2.3.0", 303 | "from": "on-finished@>=2.3.0 <2.4.0", 304 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" 305 | }, 306 | "once": { 307 | "version": "1.4.0", 308 | "from": "once@>=1.3.0 <2.0.0", 309 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 310 | "dev": true 311 | }, 312 | "parseurl": { 313 | "version": "1.3.1", 314 | "from": "parseurl@>=1.3.1 <1.4.0", 315 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" 316 | }, 317 | "path-is-absolute": { 318 | "version": "1.0.1", 319 | "from": "path-is-absolute@>=1.0.0 <2.0.0", 320 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 321 | "dev": true 322 | }, 323 | "progress": { 324 | "version": "1.1.8", 325 | "from": "progress@>=1.1.7 <2.0.0", 326 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz" 327 | }, 328 | "qs": { 329 | "version": "6.4.0", 330 | "from": "qs@6.4.0", 331 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz" 332 | }, 333 | "range-parser": { 334 | "version": "1.2.0", 335 | "from": "range-parser@>=1.2.0 <1.3.0", 336 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" 337 | }, 338 | "raw-body": { 339 | "version": "2.2.0", 340 | "from": "raw-body@>=2.2.0 <2.3.0", 341 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz" 342 | }, 343 | "sax": { 344 | "version": "1.2.2", 345 | "from": "sax@>=1.1.3 <2.0.0", 346 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.2.tgz" 347 | }, 348 | "send": { 349 | "version": "0.15.3", 350 | "from": "send@0.15.3", 351 | "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz" 352 | }, 353 | "serve-static": { 354 | "version": "1.12.3", 355 | "from": "serve-static@>=1.11.1 <2.0.0", 356 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz" 357 | }, 358 | "setprototypeof": { 359 | "version": "1.0.3", 360 | "from": "setprototypeof@1.0.3", 361 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz" 362 | }, 363 | "should": { 364 | "version": "11.2.1", 365 | "from": "should@>=11.1.2 <12.0.0", 366 | "resolved": "https://registry.npmjs.org/should/-/should-11.2.1.tgz", 367 | "dev": true 368 | }, 369 | "should-equal": { 370 | "version": "1.0.1", 371 | "from": "should-equal@>=1.0.0 <2.0.0", 372 | "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-1.0.1.tgz", 373 | "dev": true 374 | }, 375 | "should-format": { 376 | "version": "3.0.3", 377 | "from": "should-format@>=3.0.2 <4.0.0", 378 | "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", 379 | "dev": true 380 | }, 381 | "should-type": { 382 | "version": "1.4.0", 383 | "from": "should-type@>=1.4.0 <2.0.0", 384 | "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", 385 | "dev": true 386 | }, 387 | "should-type-adaptors": { 388 | "version": "1.0.1", 389 | "from": "should-type-adaptors@>=1.0.1 <2.0.0", 390 | "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.0.1.tgz", 391 | "dev": true 392 | }, 393 | "should-util": { 394 | "version": "1.0.0", 395 | "from": "should-util@>=1.0.0 <2.0.0", 396 | "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.0.tgz", 397 | "dev": true 398 | }, 399 | "statuses": { 400 | "version": "1.3.1", 401 | "from": "statuses@>=1.3.1 <2.0.0", 402 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" 403 | }, 404 | "supports-color": { 405 | "version": "3.1.2", 406 | "from": "supports-color@3.1.2", 407 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 408 | "dev": true 409 | }, 410 | "type-is": { 411 | "version": "1.6.15", 412 | "from": "type-is@>=1.6.15 <1.7.0", 413 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz" 414 | }, 415 | "unpipe": { 416 | "version": "1.0.0", 417 | "from": "unpipe@1.0.0", 418 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 419 | }, 420 | "utils-merge": { 421 | "version": "1.0.0", 422 | "from": "utils-merge@1.0.0", 423 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" 424 | }, 425 | "wrappy": { 426 | "version": "1.0.2", 427 | "from": "wrappy@>=1.0.0 <2.0.0", 428 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 429 | "dev": true 430 | }, 431 | "ytdl-core": { 432 | "version": "0.14.2", 433 | "from": "ytdl-core@>=0.14.2 <0.15.0", 434 | "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-0.14.2.tgz" 435 | } 436 | } 437 | } 438 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodetube", 3 | "version": "0.1.1", 4 | "private": true, 5 | "scripts": { 6 | "start": "node app.js", 7 | "deploy": "git push heroku master", 8 | "test": "mocha test" 9 | }, 10 | "dependencies": { 11 | "body-parser": "^1.15.2", 12 | "connect": "^3.5.1", 13 | "serve-static": "^1.11.1", 14 | "ytdl-core": "^0.14.2", 15 | "progress": "^1.1.7" 16 | }, 17 | "engines": { 18 | "node": "0.14.x", 19 | "npm": "2.14.x" 20 | }, 21 | "devDependencies": { 22 | "mocha": "^3.1.2", 23 | "should": "^11.1.2" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /routes.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var ytdl = require('ytdl-core'); 4 | var fs = require('fs'); 5 | var URL = require('url'); 6 | var active = false; 7 | 8 | 9 | 10 | 11 | /* 12 | Helper functions 13 | */ 14 | 15 | // Parses a given youtube url 16 | // @return - (String) video id 17 | function parseUrl (urlStr) { 18 | 19 | var urlObject = URL.parse(urlStr, true), 20 | regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/, 21 | match = urlStr.match(regExp), 22 | vId = false; 23 | 24 | if (urlObject.query.v) { 25 | vId = urlObject.query.v; 26 | } 27 | else if (match && match[7].length === 11) { 28 | vId = match[7]; 29 | } 30 | 31 | return vId; 32 | } 33 | 34 | 35 | // Parses a video title and concatenates the video extension 36 | // @return - (String) clean video filename 37 | function parseFilename (title, ext) { 38 | 39 | var fname = title.replace(/[\.,\/#!$%\^&\*;:{}=\-_`~()]/g, ''); 40 | 41 | fname = fname.replace(/ /g, '-') + '.' + ext; 42 | 43 | return fname; 44 | } 45 | 46 | 47 | // Server error page 48 | function errorPage (req, res, msg, fn) { 49 | res.writeHead(500, {'Content-Type': 'text/html'}); 50 | res.end('

' + msg + '. [ Back ]

'); 51 | 52 | if (fn) { 53 | fn(); 54 | } 55 | } 56 | 57 | 58 | 59 | /* 60 | Main function 61 | */ 62 | 63 | function download (req, res, next) { 64 | 65 | console.log('download called'); 66 | 67 | var url = req.body.video, 68 | format = req.body.format || 'flv', 69 | quality = req.body.quality || '18', 70 | contentType = (format === 'flv') ? 'video/x-flv' : 'video/mp4', 71 | stream, 72 | filename, 73 | vId = parseUrl(url), 74 | vUrl; 75 | 76 | 77 | if (!vId) { 78 | return errorPage(req, res, 'NodeTube does not understand the URL you entered'); 79 | } 80 | 81 | else if (active) { 82 | return errorPage(req, res, 'This app is currently active and only allows one download at a time. Please try again later'); 83 | } 84 | 85 | else { 86 | vUrl = 'https://www.youtube.com/watch?v=' + vId; 87 | 88 | stream = ytdl(vUrl, {quality: quality}); 89 | 90 | stream.on('error', function (error) { 91 | console.error(error); 92 | errorPage(req, res, ':( An error occured while trying to fetch the video from YouTube'); 93 | active = false; 94 | }); 95 | 96 | stream.on('progress', function(chunkLength, downloaded, total) { 97 | process.stdout.cursorTo(0); 98 | process.stdout.clearLine(1); 99 | process.stdout.write((downloaded / total * 100).toFixed(2) + '% '); 100 | }); 101 | 102 | stream.on('info', function (info, data) { 103 | filename = parseFilename(info.title, format); 104 | 105 | // if file is bigger than limit 106 | active = true; 107 | 108 | res.writeHead(200, { 109 | 'Content-disposition': 'attachment; filename=' + filename, 110 | 'Content-Type': contentType 111 | }); 112 | 113 | stream.pipe(res); 114 | 115 | req.on('close', function (chunk) { 116 | console.log('request cancelled'); 117 | stream.unpipe(res); 118 | stream.end(); 119 | res.end(); 120 | }); 121 | 122 | 123 | stream.on('end', function () { 124 | console.log('stream ended \n'); 125 | active = false; 126 | res.end(); 127 | }); 128 | }); 129 | } 130 | } 131 | 132 | 133 | 134 | module.exports.download = download; 135 | module.exports.parseFilename = parseFilename; 136 | module.exports.parseUrl = parseUrl; 137 | module.exports.errorPage = errorPage; 138 | -------------------------------------------------------------------------------- /test/test.routes.js: -------------------------------------------------------------------------------- 1 | var should = require('should'), 2 | routes = require('../routes'); 3 | 4 | describe('Routes', function() { 5 | "use strict"; 6 | 7 | describe("#errorPage", function(done) { 8 | var mockRes, mockReq, msg; 9 | 10 | msg = "An error occured"; 11 | mockRes = { 12 | writeHead: function writeHead(code, obj) { 13 | code.should.be.eql(500); 14 | }, 15 | 16 | end: function writeHead(content) { 17 | content.should.include(msg); 18 | } 19 | }; 20 | 21 | it('should load error page', function() { 22 | routes.errorPage(null, mockRes, msg); 23 | }); 24 | }); 25 | 26 | 27 | describe("#parseUrl", function(done) { 28 | var url = 'http://www.youtube.com/watch?v=gXGLGVWWwKI', id; 29 | 30 | it('should return YouTube video ID', function() { 31 | id = routes.parseUrl(url); 32 | 33 | id.should.be.eql('gXGLGVWWwKI'); 34 | }); 35 | }); 36 | 37 | 38 | describe("#parseFilename", function(done) { 39 | var title = 'My Awesome video!!!', filename; 40 | 41 | it('should clean a video title, remove unwanted chars returns a video filename', function() { 42 | filename = routes.parseFilename(title, 'mp4'); 43 | 44 | filename.should.be.eql('My-Awesome-video.mp4'); 45 | }); 46 | }); 47 | }); --------------------------------------------------------------------------------