From c710247bd08907ee2efc7c4529a6c9bcb4e0054b Mon Sep 17 00:00:00 2001 From: chriswmackey Date: Thu, 20 Jun 2024 23:58:29 +0000 Subject: [PATCH] deploy: update docs --- .nojekyll | 1 + README.md | 1 + docs/.buildinfo | 4 + docs/.doctrees/environment.pickle | Bin 0 -> 124396 bytes docs/.doctrees/index.doctree | Bin 0 -> 6687 bytes .../ladybug_geometry_polyskel.doctree | Bin 0 -> 3908 bytes ...adybug_geometry_polyskel.polygraph.doctree | Bin 0 -> 80554 bytes ...ladybug_geometry_polyskel.polyskel.doctree | Bin 0 -> 28272 bytes ...adybug_geometry_polyskel.polysplit.doctree | Bin 0 -> 30285 bytes docs/.doctrees/modules.doctree | Bin 0 -> 2823 bytes docs/.nojekyll | 0 docs/README.md | 1 + docs/_modules/index.html | 191 + .../ladybug_geometry_polyskel/polygraph.html | 786 ++ .../ladybug_geometry_polyskel/polyskel.html | 1014 ++ .../ladybug_geometry_polyskel/polysplit.html | 659 + docs/_sources/index.rst.txt | 25 + ...adybug_geometry_polyskel.polygraph.rst.txt | 7 + ...ladybug_geometry_polyskel.polyskel.rst.txt | 7 + ...adybug_geometry_polyskel.polysplit.rst.txt | 7 + .../ladybug_geometry_polyskel.rst.txt | 20 + docs/_sources/modules.rst.txt | 7 + .../_sphinx_javascript_frameworks_compat.js | 134 + docs/_static/basic.css | 899 ++ .../css/bootstrap-responsive.css | 1109 ++ .../css/bootstrap-responsive.min.css | 9 + .../_static/bootstrap-2.3.2/css/bootstrap.css | 6167 +++++++++ .../bootstrap-2.3.2/css/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12799 bytes docs/_static/bootstrap-2.3.2/js/bootstrap.js | 2287 ++++ .../bootstrap-2.3.2/js/bootstrap.min.js | 6 + .../bootstrap-3.4.1/css/bootstrap-theme.css | 587 + .../css/bootstrap-theme.css.map | 1 + .../css/bootstrap-theme.min.css | 6 + .../css/bootstrap-theme.min.css.map | 1 + .../_static/bootstrap-3.4.1/css/bootstrap.css | 6834 ++++++++++ .../bootstrap-3.4.1/css/bootstrap.css.map | 1 + .../bootstrap-3.4.1/css/bootstrap.min.css | 6 + .../bootstrap-3.4.1/css/bootstrap.min.css.map | 1 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes docs/_static/bootstrap-3.4.1/js/bootstrap.js | 2580 ++++ .../bootstrap-3.4.1/js/bootstrap.min.js | 6 + docs/_static/bootstrap-3.4.1/js/npm.js | 13 + docs/_static/bootstrap-sphinx.css | 223 + docs/_static/bootstrap-sphinx.js | 175 + .../bootswatch-2.3.2/amelia/bootstrap.min.css | 9 + .../cerulean/bootstrap.min.css | 9 + .../bootswatch-2.3.2/cosmo/bootstrap.min.css | 9 + .../bootswatch-2.3.2/cyborg/bootstrap.min.css | 9 + .../bootswatch-2.3.2/flatly/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../img/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../journal/bootstrap.min.css | 9 + .../readable/bootstrap.min.css | 9 + .../simplex/bootstrap.min.css | 9 + .../bootswatch-2.3.2/slate/bootstrap.min.css | 9 + .../spacelab/bootstrap.min.css | 9 + .../bootswatch-2.3.2/spruce/bootstrap.min.css | 9 + .../superhero/bootstrap.min.css | 9 + .../bootswatch-2.3.2/united/bootstrap.min.css | 9 + .../cerulean/bootstrap.min.css | 11 + .../bootswatch-3.4.1/cosmo/bootstrap.min.css | 11 + .../bootswatch-3.4.1/cyborg/bootstrap.min.css | 11 + .../bootswatch-3.4.1/darkly/bootstrap.min.css | 11 + .../bootswatch-3.4.1/flatly/bootstrap.min.css | 11 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../journal/bootstrap.min.css | 11 + .../bootswatch-3.4.1/lumen/bootstrap.min.css | 11 + .../bootswatch-3.4.1/paper/bootstrap.min.css | 11 + .../readable/bootstrap.min.css | 11 + .../sandstone/bootstrap.min.css | 11 + .../simplex/bootstrap.min.css | 11 + .../bootswatch-3.4.1/slate/bootstrap.min.css | 11 + .../spacelab/bootstrap.min.css | 11 + .../superhero/bootstrap.min.css | 11 + .../bootswatch-3.4.1/united/bootstrap.min.css | 11 + .../bootswatch-3.4.1/yeti/bootstrap.min.css | 11 + docs/_static/custom.css | 48 + docs/_static/doctools.js | 156 + docs/_static/documentation_options.js | 14 + docs/_static/file.png | Bin 0 -> 286 bytes docs/_static/jquery-3.6.0.js | 10881 ++++++++++++++++ docs/_static/jquery.js | 2 + docs/_static/js/jquery-1.12.4.min.js | 5 + docs/_static/js/jquery-fix.js | 2 + docs/_static/language_data.js | 199 + docs/_static/minus.png | Bin 0 -> 90 bytes docs/_static/plus.png | Bin 0 -> 90 bytes docs/_static/pygments.css | 84 + docs/_static/searchtools.js | 566 + docs/_static/sphinx_highlight.js | 144 + docs/_static/underscore-1.13.1.js | 2042 +++ docs/_static/underscore.js | 6 + docs/genindex.html | 411 + docs/index.html | 247 + docs/ladybug_geometry_polyskel.html | 281 + docs/ladybug_geometry_polyskel.polygraph.html | 592 + docs/ladybug_geometry_polyskel.polyskel.html | 334 + docs/ladybug_geometry_polyskel.polysplit.html | 323 + docs/modules.html | 223 + docs/objects.inv | Bin 0 -> 731 bytes docs/py-modindex.html | 223 + docs/search.html | 215 + docs/searchindex.js | 1 + 113 files changed, 41652 insertions(+) create mode 100644 .nojekyll create mode 100644 README.md create mode 100644 docs/.buildinfo create mode 100644 docs/.doctrees/environment.pickle create mode 100644 docs/.doctrees/index.doctree create mode 100644 docs/.doctrees/ladybug_geometry_polyskel.doctree create mode 100644 docs/.doctrees/ladybug_geometry_polyskel.polygraph.doctree create mode 100644 docs/.doctrees/ladybug_geometry_polyskel.polyskel.doctree create mode 100644 docs/.doctrees/ladybug_geometry_polyskel.polysplit.doctree create mode 100644 docs/.doctrees/modules.doctree create mode 100644 docs/.nojekyll create mode 100644 docs/README.md create mode 100644 docs/_modules/index.html create mode 100644 docs/_modules/ladybug_geometry_polyskel/polygraph.html create mode 100644 docs/_modules/ladybug_geometry_polyskel/polyskel.html create mode 100644 docs/_modules/ladybug_geometry_polyskel/polysplit.html create mode 100644 docs/_sources/index.rst.txt create mode 100644 docs/_sources/ladybug_geometry_polyskel.polygraph.rst.txt create mode 100644 docs/_sources/ladybug_geometry_polyskel.polyskel.rst.txt create mode 100644 docs/_sources/ladybug_geometry_polyskel.polysplit.rst.txt create mode 100644 docs/_sources/ladybug_geometry_polyskel.rst.txt create mode 100644 docs/_sources/modules.rst.txt create mode 100644 docs/_static/_sphinx_javascript_frameworks_compat.js create mode 100644 docs/_static/basic.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap.css create mode 100644 docs/_static/bootstrap-2.3.2/css/bootstrap.min.css create mode 100644 docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png create mode 100644 docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png create mode 100644 docs/_static/bootstrap-2.3.2/js/bootstrap.js create mode 100644 docs/_static/bootstrap-2.3.2/js/bootstrap.min.js create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap-theme.min.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.css.map create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.min.css create mode 100644 docs/_static/bootstrap-3.4.1/css/bootstrap.min.css.map create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/_static/bootstrap-3.4.1/fonts/glyphicons-halflings-regular.woff2 create mode 100644 docs/_static/bootstrap-3.4.1/js/bootstrap.js create mode 100644 docs/_static/bootstrap-3.4.1/js/bootstrap.min.js create mode 100644 docs/_static/bootstrap-3.4.1/js/npm.js create mode 100644 docs/_static/bootstrap-sphinx.css create mode 100644 docs/_static/bootstrap-sphinx.js create mode 100644 docs/_static/bootswatch-2.3.2/amelia/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cerulean/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cosmo/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/cyborg/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/flatly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/img/glyphicons-halflings-white.png create mode 100644 docs/_static/bootswatch-2.3.2/img/glyphicons-halflings.png create mode 100644 docs/_static/bootswatch-2.3.2/journal/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/readable/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/simplex/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/slate/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/spacelab/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/spruce/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/superhero/bootstrap.min.css create mode 100644 docs/_static/bootswatch-2.3.2/united/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cerulean/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cosmo/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/cyborg/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/darkly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/flatly/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/_static/bootswatch-3.4.1/fonts/glyphicons-halflings-regular.woff2 create mode 100644 docs/_static/bootswatch-3.4.1/journal/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/lumen/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/paper/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/readable/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/sandstone/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/simplex/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/slate/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/spacelab/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/superhero/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/united/bootstrap.min.css create mode 100644 docs/_static/bootswatch-3.4.1/yeti/bootstrap.min.css create mode 100644 docs/_static/custom.css create mode 100644 docs/_static/doctools.js create mode 100644 docs/_static/documentation_options.js create mode 100644 docs/_static/file.png create mode 100644 docs/_static/jquery-3.6.0.js create mode 100644 docs/_static/jquery.js create mode 100644 docs/_static/js/jquery-1.12.4.min.js create mode 100644 docs/_static/js/jquery-fix.js create mode 100644 docs/_static/language_data.js create mode 100644 docs/_static/minus.png create mode 100644 docs/_static/plus.png create mode 100644 docs/_static/pygments.css create mode 100644 docs/_static/searchtools.js create mode 100644 docs/_static/sphinx_highlight.js create mode 100644 docs/_static/underscore-1.13.1.js create mode 100644 docs/_static/underscore.js create mode 100644 docs/genindex.html create mode 100644 docs/index.html create mode 100644 docs/ladybug_geometry_polyskel.html create mode 100644 docs/ladybug_geometry_polyskel.polygraph.html create mode 100644 docs/ladybug_geometry_polyskel.polyskel.html create mode 100644 docs/ladybug_geometry_polyskel.polysplit.html create mode 100644 docs/modules.html create mode 100644 docs/objects.inv create mode 100644 docs/py-modindex.html create mode 100644 docs/search.html create mode 100644 docs/searchindex.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..ebfb366 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# documentation diff --git a/docs/.buildinfo b/docs/.buildinfo new file mode 100644 index 0000000..03e9ce9 --- /dev/null +++ b/docs/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 6f9e40a70ebd7ab254b30737e6f4f74e +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/.doctrees/environment.pickle b/docs/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..a33608ae065081da6c151a597d64293de06161b0 GIT binary patch literal 124396 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/index.doctree b/docs/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3d7761af4aec4b5ef07e7908b7b3305a25adc750 GIT binary patch literal 6687 zcmcIp-D@1z6_+gSN~>?lv76X&x^77=H{Mk!4hd?TkGj+twTnrdgiykGcINKhSF0T(&s=RwDb=sg|?JJ`#X2$&d#o+l}uZK zq@6S8o_o*N@1Aq^?)1A4otw}jt6AM5<=p&`J6%km>#O@*C;*({)vg z?Hv&&vBOd|0Skv<(W~AMvS1DiS=lKGEluz*s>edE_6*l4| z2w1$a6UN&cerBIWH@8nC%I!1e4b%`DUf{CbW-OrEV_T<^HhIG9+ub2ge6`uEYvSf+ zol6;QZfxxA>@@RDn=%Z2u|b+i2<&&wp3Nxe&Sn1iJj}o^!ZBaO@8kHrgx||B!&DM` zsoHozsi~TC?7;P0J2SDGd@kjiBH>T)#=ubg3UsPyooeu(-Hq*tmm}=?7wW#(j%~!# zjwg9t$k_I}T-GVFm<)qDf{ll+s3*b;y7f^jH#6nVs{dZlAlSYE1)k45-Qtf?Jn^Hf zNBTa?FK9ihM(?D}iUsQGPL@Lr88${wU&Kg5G)zeA97=8DCiPUlo^mi>UpFyUH!*fF z2W{hDI^i5nHkB!)PfAfXp8?1K09Fh^E!+r%w0%E2iq7V)m0=*m>LRvGj2Kt*^FR(l6W|=6GWIfb zTkrzMPh8gV{2cE3_O8n!$LDVl!3KT|aE6`>M)4*TrqJuNHGD z1z|Qw`fV07H{F_0bNcQOVc_q9cMg|Q=>YU-cHuv!fV`Kd%p%P3gHhY5d2d0_``@ z;@2k+G)kS1GIq71ua17`Ch%$b@_57KQXVUBjyxX)WRU$1|KaOtON}}DoAAVaTpPc) z`MX=w{6{VRlYRc)K7W6o|8#4D|7@TC9Cv2!-;V+P(-8aHQUCH^9qP|qHI8+|{xkH0si`>*J^na<;&*nE(*;fxEaIPM6in6IlNDJ8uI<)QLo4Jk=iLIYPqBfk;`MTU7>zA%owfT%kH(vLe@-rVvlWQ9q!Xw>C4=4fZ7#FNkPodlYPOM8iKyLLF+fQ(b6_CE%QZ+yx3TPR|xc+Op zqmy<&!oz&F4KAQy8;^7OV-ov#T11&XKWwHOr1PdQ@}f?rV! zP(~mHvi22Gle1Yx1GE&e$f9Zhsf0|%#wdj%ge$hD*j5kIG(=#?0yS7DB&xZ{k7C(1zlmyCGinoSY6&ElrVWJm9Tti?2@ z?_;wX@C8ZWQmZzrE+C}(R*_wW0+xu#!Taj0J{Q^_7E?=y$R#Ve2<3USV8tU+Zg6P{wwC^RzYXO0$^>g-U`JrRy zz2yamW6tBi@mapXm3k|z-cBN%k!F&*S>-;5tlYhuR;GgnOdcOn!^nO9NovINJ6|;Jr$zN*m4_o}xmS$-s{2~qa zZel$70fsA|@Q?H={#l|H%h95DTSWD%GlL>Dqfky8zD%t$CF8@O5W&%Jhkg-&n)RU( zV!>S-l2|jl>P2fq@&V7Wr2F8^sI2@A#tT3k2ZIuX73z2=L|3He*tm6OuI2Rmu;sn< zMWi1ljYwq7b_KwWHpEDEN$d$EtDz3=zhVGh^hfI4EgFQ^F_&R61usT#VO?-sG{v}a z9Lt~y#3ZTLJT|bx; kN2b@W{UQ6h=dF}~oYS_>y_GUG=hDrbUt(16C++5c07Lb_od5s; literal 0 HcmV?d00001 diff --git a/docs/.doctrees/ladybug_geometry_polyskel.doctree b/docs/.doctrees/ladybug_geometry_polyskel.doctree new file mode 100644 index 0000000000000000000000000000000000000000..721a64ec4bc20927ed357cdf6062c17594e75d4f GIT binary patch literal 3908 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/ladybug_geometry_polyskel.polyskel.doctree b/docs/.doctrees/ladybug_geometry_polyskel.polyskel.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff8073610f45466afebe5d1fd59066a0145932bb GIT binary patch literal 28272 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/ladybug_geometry_polyskel.polysplit.doctree b/docs/.doctrees/ladybug_geometry_polyskel.polysplit.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fe015a855d017adc8ef184396ad6abc1fbc57650 GIT binary patch literal 30285 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 literal 0 HcmV?d00001 diff --git a/docs/.doctrees/modules.doctree b/docs/.doctrees/modules.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9e51cf85d8ca5297d16bfa0783e24d915e76412f GIT binary patch literal 2823 zcmaJ@OK%%D5O!?qX-R&hDOx0M5d>)xG_s1KhoGkd1$r^+Ly;QDAt0z-N+iT3w$`N#g>|MYjtKYwU*F4Xdjrm4~?v%z;$ zofH{UE_?{j{tR!!Q{OZ6%Id--EchL0BwWbUFcn@0KZ@#3NPAYF?^u>Np;dF7w|JX( zUWcc==UYxV$u_q9=aQzYX)z~rrZeWuisV|Z?1IS<58=%IOSX)`d`$ISC?kcdyS|-M z#O4A&_C3-h!}ol<&f&uEOQBe}D5li+sdGk53y0ieu6rW2F|SS{skIQ|cT3T%`qfQ~ z{AMww$-=N%)G2(&(Rtho{E*-01O9;T@l$^};Ye#@3Zy`1zxWvXe+B9XLM5_D*-Rir0K$KuzMIiy%5ulU`91)pdC3dFKbLwM zu6>(}GzE>W{jfgW2)e4srp&N3obUL4$r`JbTtT-FHr@nQ@UQu|{FFZjBKrV-f}--x z?EGO3!uZP2JZC1*&4lCm@lC;^9q@uRCYrqeTQ3-@(QB0chsAUaZS>TKr@e|AWyGlA zcC?$JHH78Q0iotR)qpeb+MQgqov|kDJDv8Lb=xLwx&^$^zwCcQ!w~ z@Vz+$HL24kV3ATZf}>fE#X;qU!1e;me!VP=#A*msNo;_)3wNzpl2!00Gp(J{j%{q7 z-|@pZ6;M;MoN1EQi2WzIp8LC z`h{;NTFsCn;1DUvG2g^8@U|b(!fA3N^1A|z8m2{-lZJIbwG;>t&L}FQ!NXDlXqAn% zzY*n@6{#l6Eb{4yEpu%d**sZNByr@8u%hDUAxVX$QyCMfqwK7^fj{>HBxAvUS`V6G ztwz>U$&YfD6Xb-^qLMP-L6l4>Tt{O2&$x5B{eCim*q-Gp$F(}sW{^mQtF*38{miZ{TG5^)tJQ|Hgx-FPF6U@y@A86SLcbSBJTDZn>_OMCycA1K*z}oFX9_Z~d3>;Wbg_AfZY%#s1C$dOhscF@U@%~-}a0YioivC?81kRX) zlY0rY7KCL~NP<_5VdX9U-XGWR5|CBSs+o4}2bG1=yv6A~rryMNf$vtc1zk{o*pIw9E$E?v693dUF%h0Zb~XW1dn28Q!N`pm8zfI z5;oesEsMRi*YeQGmVL}x + + + + + + Overview: module code — ladybug-geometry-polyskel documentation + + + + + + + + + + + + + + + + + + + + + + +

+ + +
+
+

+ Back to top + +

+

+ © Copyright 2024, Ladybug Tools.
+ Created using Sphinx 5.3.0.
+

+
+
+ + \ No newline at end of file diff --git a/docs/_modules/ladybug_geometry_polyskel/polygraph.html b/docs/_modules/ladybug_geometry_polyskel/polygraph.html new file mode 100644 index 0000000..7ccc0ed --- /dev/null +++ b/docs/_modules/ladybug_geometry_polyskel/polygraph.html @@ -0,0 +1,786 @@ + + + + + + + ladybug_geometry_polyskel.polygraph — ladybug-geometry-polyskel documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +

Source code for ladybug_geometry_polyskel.polygraph

+# coding=utf-8
+"""
+Implementation of a Directed Graph.
+"""
+
+from __future__ import division
+
+# Geometry classes
+from ladybug_geometry.geometry2d.line import LineSegment2D
+from ladybug_geometry import intersection2d
+from math import log10
+
+
+def _vector2hash(vector, tol):
+    """Hashes spatial coordinates for use in dictionary.
+
+    Args:
+        vector: A Vector2D object.
+        tol: floating point precision tolerance.
+
+    Returns:
+        Hash of vector as a string of rounded coordinates.
+    """
+    try:
+        rtol = int(log10(tol)) * -1
+    except ValueError:
+        rtol = 0
+
+    return str((round(vector.x, rtol), round(vector.y, rtol)))
+
+
+class _Node(object):
+    """Private class to handle nodes in PolygonDirectedGraph.
+
+        Args:
+            val: A Point2D object.
+            key: Hash of Point2D object.
+            order: integer counting order of Node (based on dg propagation)
+            adj_lst: list of keys adjacent to this node.
+            exterior: Node boundary condition. None if not set by user, else True
+                or False according to user.
+
+        Properties:
+        * pt: A Point2D object.
+        * key: Hash of Point2D object.
+        * adj_lst: A list of keys adjacent to this node.
+        * exterior: Node boundary condition. None if not set by user, else True or
+            False according to user.
+        * adj_count: Number of adjacent nodes to this node.
+    """
+    __slots__ = ('key', 'pt', '_order', 'adj_lst', 'exterior')
+
+    def __init__(self, key, val, order, adj_lst, exterior):
+        """Initialize _Node"""
+
+        self.key = key
+        self.pt = val
+        self._order = order
+        self.adj_lst = adj_lst
+        # Potentially change exterior to data (similar to networkX)
+        # and pass conditional function to get_exterior
+        # this resolves redundancy between unidirect and exterior
+        # node/edge properties.
+        self.exterior = exterior
+
+    def __repr__(self):
+        return '{}: {}'.format(self._order, self.key)
+
+    @property
+    def adj_count(self):
+        """Number of adjacent nodes"""
+        return len(self.adj_lst)
+
+
+
[docs]class PolygonDirectedGraph(object): + """A directed graph for point and edge adjacency relationships. + + This class assumes that exterior edges are naked (unidirectional), oriented + counter-clockwise, and interior edges are bidirectional. + + Args: + tol: floating point precision used for hashing points. + + Properties: + * outer_root_key: Root key for outside exterior boundary (i.e not holes). + * hole_root_keys: List of root keys for inside exterior boundary (holes). + * num_nodes: Number of nodes in graph. + * nodes: An iterable of nodes in graph. + * ordered_nodes: An iterable of nodes in graph in order they were added. + * exterior_cycles: A list of unidirectional edge arrays. + """ + + def __init__(self, tol): + """Initialize a PolygonDirectedGraph.""" + self._directed_graph = {} + self._tol = tol + self.outer_root_key = None + self.hole_root_keys = [] + + def __repr__(self): + s = '' + for n in self.ordered_nodes: + s += '{}, [{}]\n'.format( + n.pt.to_array(), + ', '.join([str(_n.pt.to_array()) for _n in n.adj_lst])) + return s + +
[docs] @classmethod + def from_polygon(cls, polygon, tol): + """Generate a directed graph from a polygon. + + Args: + polygon: A Polygon2D object. + """ + return cls.from_point_array(polygon.vertices, tol, loop=True)
+ +
[docs] @classmethod + def from_point_array(cls, point_array, tol, loop=True): + """Generate a directed graph from a 1-dimensional array of points. + + Args: + point_array: Array of Point2D objects. + loop: Optional parameter to connect 1d array + tol: Tolerance for point equivalence. + """ + + dg = cls(tol) + for i in range(len(point_array) - 1): + dg.add_node(point_array[i], [point_array[i + 1]], exterior=True) + + if loop: + dg.add_node(point_array[-1], [point_array[0]], exterior=True) + + return dg
+ + @property + def num_nodes(self): + return len(self.nodes) + + @property + def nodes(self): + """Get an iterable of pt nodes""" + return self._directed_graph.values() + + @property + def ordered_nodes(self): + """Get an iterable of pt nodes in order of addition""" + nodes = list(self.nodes) + nodes.sort(key=lambda v: v._order) + return nodes + + @property + def exterior_cycles(self): + """Computes all exterior boundaries. + + Returns: + List of boundaries as list of nodes. The first polygon will + be the outer exterior edge (in counter-clockwise order), and + subsequent edges will be the edges of the holes in the graph + (in clockwise order). + """ + + exterior_poly_lst = [] + exterior_check = {} + + for root_node in self.ordered_nodes: + + # Store node in check + exterior_check[root_node.key] = None + + # Get next exterior adjacent node + next_node = self.next_exterior_node(root_node) + + is_valid = (next_node is not None) and \ + (next_node.key not in exterior_check) + + if not is_valid: + continue + + # Create list of exterior points + exterior_poly = [root_node] + # Add to dict to prevent repetition + exterior_check[next_node.key] = None + + # CWM: hard-code a max iteration count to avoid endless loops + MAX_ITER_COUNT = 10000 + iter_i = 0 + while next_node.key != root_node.key: + exterior_poly.append(next_node) + exterior_check[next_node.key] = None + next_node = self.next_exterior_node(next_node) + iter_i += 1 + if iter_i > MAX_ITER_COUNT: + return [] + + exterior_poly_lst.append(exterior_poly) + + return exterior_poly_lst + +
[docs] def node(self, key): + """Retrieves the node based on passed value. + + Args: + val: The key for a node in the directed graph. + + Returns: + The node for the passed key. + """ + + try: + return self._directed_graph[key] + except KeyError: + return None
+ +
[docs] def add_adj(self, node, adj_val_lst): + """Adds nodes to node.adj_lst. + + This method will ensure no repetitions will occur in adj_lst. + + Args: + node: _Node to add adjacencies to. + adj_val_lst: List of Point2D objects to add as adjacent nodes. + """ + adj_keys = {n.key: None for n in node.adj_lst} + adj_keys[node.key] = None + for adj_val in adj_val_lst: + adj_key = _vector2hash(adj_val, self._tol) + if adj_key in adj_keys: + continue + + self._add_node(adj_key, adj_val, exterior=None) + adj_keys[adj_key] = None + node.adj_lst.append(self.node(adj_key))
+ +
[docs] def remove_adj(self, node, adj_key_lst): + """Removes nodes in node.adj_lst. + + Args: + node: _Node to remove adjacencies to. + adj_val_lst: List of adjacency keys to remove as adjacent nodes. + """ + node.adj_lst = [n for n in node.adj_lst if n.key not in set(adj_key_lst)]
+ + def _add_node(self, key, val, exterior=None): + """If key doesn't exist, add to dg. + + Helper function for add_node. + """ + if key not in self._directed_graph: + self._directed_graph[key] = _Node(key, val, self.num_nodes, [], exterior) + return self._directed_graph[key] + +
[docs] def add_node(self, val, adj_lst, exterior=None): + """Consumes a polygon point, and computes its key value, and adds it in the + graph if it doesn't exist. If it does exist it appends adj_lst to existing pt. + + Args: + val: A Point2D object + adj_lst: A list of Point2D objects + + Returns: + The hashed key from the existing or new node. + """ + + # Get key + key = _vector2hash(val, self._tol) + + # Get node if it exists + self._add_node(key, val, exterior) + + node = self._directed_graph[key] + + # Add the adj_lst to dg, and leave exterior None + self.add_adj(node, adj_lst) + + # If pass exterior boolean, change node attribute + if exterior is not None: + node.exterior = exterior + + return node.key
+ +
[docs] def insert_node(self, node, new_val, next_node, exterior=None): + """Insert node in the middle of an edge defined by node and next_node. + + Args: + node: _Node to left. + new_val: Value for middle node. + next_node: _Node to right. + exterior: Optional boolean for exterior attribute. + + Returns: + key of new_val node. + """ + # Add new_val as a node, with next_node as an adjacency + new_key = self.add_node(new_val, [next_node.pt], exterior=exterior) + + # Update parent by adding new adjacency, and removing old adjacency + self.add_adj(node, [self.node(new_key).pt]) + + # Edge case where the new point is coincident to parent or next_point. + # This occurs when intersection passes through a corner. + if (new_key == next_node.key) or (new_key == node.key): + return new_key + + self.remove_adj(node, [next_node.key]) + + return new_key
+ +
[docs] def node_exists(self, key): + """True if node in directed graph else False""" + return key in self._directed_graph
+ +
[docs] def pt_exists(self, pt): + """True if a point (as Point2D) in directed graph exists as node else False. + """ + return self.node_exists(_vector2hash(pt, self._tol))
+ +
[docs] def polygon_exists(self, polygon): + """Check if polygon is in directed graph. + + Args: + polygons: A Polygon2D object. + dg: A PolygonDirectedGraph. + + Return: + True if exists, else False. + """ + vertices_loop = list(polygon.vertices) + vertices_loop = vertices_loop + [vertices_loop[0]] + + for i in range(len(vertices_loop) - 1): + pt1 = vertices_loop[i] + pt2 = vertices_loop[i + 1] + + if not self.pt_exists(pt1): + return False + + node1 = self.node(_vector2hash(pt1, self._tol)) + node2 = self.node(_vector2hash(pt2, self._tol)) + if node2.key in [n.key for n in node1.adj_lst]: + return False + + return True
+ +
[docs] def adj_matrix(self): + """Gets an adjacency matrix of the directed graph where: + + * 1 = adjacency from row node to col node. + * 0 = no adjacency. + + Returns: + N x N square matrix where N is number of nodes. + """ + nodes = self.ordered_nodes + + # Initialize amtx with no adjacencies + amtx = [[0 for i in range(self.num_nodes)] + for j in range(self.num_nodes)] + + for i in range(self.num_nodes): + adj_indices = [adj._order for adj in nodes[i].adj_lst] + for adj_idx in adj_indices: + amtx[i][adj_idx] = 1 + + return amtx
+ +
[docs] def adj_matrix_labels(self): + """Returns a dictionary where label key corresponds to index in adj_matrix + and value is node key""" + return {i: node.key for i, node in enumerate(self.ordered_nodes)}
+ +
[docs] def intersect_graph_with_segment(self, segment): + """Update graph with intersection of partial segment that crosses through polygon. + + Args: + segment: LineSegment2D to intersect. Does not need to be contained within + polygon. + """ + int_key_lst = [] + + for node in self.ordered_nodes: + + # Convert graph edge to trimming segment + next_node = node.adj_lst[0] + trim_seg = LineSegment2D.from_end_points(node.pt, next_node.pt) + int_pt = intersection2d.intersect_line2d_infinite(trim_seg, segment) + + # Add intersection point as new node in graph + if int_pt: + int_key = self.insert_node( + node, int_pt, next_node, exterior=False) + int_key_lst.append(int_key) + + # Add intersection edges + if len(int_key_lst) == 2: + # Typical case with convex cases + # Make edge between intersection nodes + n1, n2 = self.node(int_key_lst[0]), self.node(int_key_lst[1]) + self.add_node(n1.pt, [n2.pt], exterior=False) + self.add_node(n2.pt, [n1.pt], exterior=False) + + elif len(int_key_lst) > 2: + # Edge case with concave geometry creates multiple intersections + # Sort distance and add adjacency + n = self.node(int_key_lst[0]) + distances = [(0, 0.0)] + + for i, k in enumerate(int_key_lst[1:]): + distance = LineSegment2D.from_end_points(n.pt, self.node(k).pt).length + distances.append((i + 1, distance)) + + distances = sorted(distances, key=lambda t: t[1]) + + for i in range(len(distances) - 1): + k1, k2 = distances[i][0], distances[i + 1][0] + n1, n2 = self.node(int_key_lst[k1]), self.node(int_key_lst[k2]) + + # Add bidirection so the min cycle works + self.add_node(n1.pt, [n2.pt], exterior=False) + self.add_node(n2.pt, [n1.pt], exterior=False)
+ +
[docs] @staticmethod + def is_edge_bidirect(node1, node2): + """Are two nodes bidirectional. + + Args: + node1: _Node object + node2: _Node object + + Returns: + True if node1 and node2 are in each other's adjacency list, + else False. + """ + return node1.key in (n.key for n in node2.adj_lst) and \ + node2.key in (n.key for n in node1.adj_lst)
+ +
[docs] @staticmethod + def next_unidirect_node(node): + """Retrieves the first unidirectional point adjacent + to consumed point. They define an exterior or naked edge. + + Args: + node: _Node + + Returns: + Next node that defines unidirectional edge, or None if all + adjacencies are bidirectional. + """ + # Check bidirectionality + next_node = None + for _next_node in node.adj_lst: + if not PolygonDirectedGraph.is_edge_bidirect(node, _next_node): + next_node = _next_node + break + + return next_node
+ +
[docs] @staticmethod + def next_exterior_node(node): + """Retrieves the first exterior node adjacent + to consumed node. They define an exterior or naked edge. + + Args: + node: _Node + + Returns: + Next node that defines exterior edge, or None if all + adjacencies are bidirectional. + """ + + # Check bidirectionality + next_node = None + for _next_node in node.adj_lst: + + if _next_node.exterior is None: + # If user-assigned attribute isn't defined, check bidirectionality. + if not PolygonDirectedGraph.is_edge_bidirect(node, _next_node): + next_node = _next_node + break + elif _next_node.exterior is True: + next_node = _next_node + break + + return next_node
+ +
[docs] @staticmethod + def exterior_cycle(cycle_root): + """Computes exterior boundary from a given node. + + This method assumes that exterior edges are naked (unidirectional) and + interior edges are bidirectional. + + Args: + cycle_root: Starting _Node in exterior cycle. + Returns: + List of nodes on exterior if a cycle exists, else None. + """ + + # Get the first exterior edge + curr_node = cycle_root + next_node = PolygonDirectedGraph.next_exterior_node(curr_node) + if not next_node: + return None + + ext_cycle = [curr_node] + while next_node.key != cycle_root.key: + ext_cycle.append(next_node) + next_node = PolygonDirectedGraph.next_exterior_node(next_node) + if not next_node: + return None + + return ext_cycle
+ + @staticmethod + def _min_ccw_cycle(curr_node, next_node, cycle): + """Identify the counter-clockwise adjacent node with the minimum angle. + + Args: + curr_node: A node that defines first point of a counter-clockwise + polygon edge. + next_node: A node connected to the curr_node that defines the second + point of a counter-clockwise polygon edge. + cycle: Current list of nodes that will form a polygon. + Returns: + The next connected node that contains the minimum counter-clockwise angle + by the edge defined by the curr_node and next_node. + """ + # Get current edge direction vector + # N.B point subtraction or addition results in Vector2D + edge_dir = next_node.pt - curr_node.pt + + # Initialize values for comparison + min_theta = float("inf") + min_node = None + + # Identify the node with the smallest ccw angle + for adj_node in next_node.adj_lst: + # Make sure this node isn't backtracking by checking + # new node isn't parent of next_node + if adj_node.key == cycle[-2].key: + continue + + # Get next edge direction vector + next_edge_dir = adj_node.pt - next_node.pt + theta = edge_dir.angle_clockwise(next_edge_dir * -1) + + if theta < min_theta: + min_theta = theta + min_node = adj_node + + return min_node + +
[docs] @staticmethod + def min_ccw_cycle(curr_node, next_node, recurse_limit=3000, print_recurse=False): + """Recursively identify most counter-clockwise adjacent node and get closed loop. + + Args: + curr_node: The first node, for first edge. + next_node: The node next to ref_node that constitutes a polygon edge. + recurse_limit: optional parameter to limit the number of while loop cycles. + Default: 3000. + print_recurse: optional boolean to print cycle loop cycles, for debugging. + Default: False. + + Returns: + A list of nodes that form a polygon if the cycle exists, else None. + """ + # Set parameters + count = 0 + cycle = [curr_node, next_node] + while next_node.key != cycle[0].key: + if print_recurse: + print('"recursion" cycle: {}'.format(count)) + # Checks to ensure not trapped in while loop by degenerate skeleton. + if recurse_limit and count >= recurse_limit: + # Base case 1: recursion limit is hit + raise RuntimeError('Error finding the minimum counterclockwise cycle ' + 'in this polygon. Recursion limit of {} is ' + 'exceeded.'.format(recurse_limit)) + elif next_node is None: + # Base case 2: No node exists in adjacency list + raise RuntimeError('Error finding the minimum counterclockwise cycle ' + 'in this polygon') + + # Calculate minimum counter-clockwise cycle + min_ccw_node = PolygonDirectedGraph._min_ccw_cycle( + curr_node, next_node, cycle) + + # Update parameter names + curr_node = next_node + next_node = min_ccw_node + cycle.append(next_node) + count += 1 + + # Remove final node which is duplicate of first node + cycle.pop(0) + + return cycle
+
+ +
+ +
+
+
+
+

+ Back to top + +

+

+ © Copyright 2024, Ladybug Tools.
+ Created using Sphinx 5.3.0.
+

+
+
+ + \ No newline at end of file diff --git a/docs/_modules/ladybug_geometry_polyskel/polyskel.html b/docs/_modules/ladybug_geometry_polyskel/polyskel.html new file mode 100644 index 0000000..a23f3bd --- /dev/null +++ b/docs/_modules/ladybug_geometry_polyskel/polyskel.html @@ -0,0 +1,1014 @@ + + + + + + + ladybug_geometry_polyskel.polyskel — ladybug-geometry-polyskel documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +

Source code for ladybug_geometry_polyskel.polyskel

+# coding=utf-8
+"""
+Implementation of the straight skeleton algorithm by Felkel and Obdrzalek[1].
+[1] Felkel, Petr and Stepan Obdrzalek. 1998. "Straight Skeleton Implementation." In
+Proceedings of Spring Conference on Computer Graphics, Budmerice, Slovakia. 210 - 218.
+"""
+
+from __future__ import division
+
+import logging
+import heapq
+from itertools import tee, islice, cycle, chain
+from collections import namedtuple
+import operator
+
+# Geometry classes
+from ladybug_geometry.geometry2d.pointvector import Point2D
+from ladybug_geometry.geometry2d.line import LineSegment2D
+from ladybug_geometry.geometry2d.ray import Ray2D
+from ladybug_geometry import intersection2d
+
+# Polygon sorting classes
+_OriginalEdge = namedtuple('_OriginalEdge', 'edge bisector_left, bisector_right')
+Subtree = namedtuple('Subtree', 'source, height, sinks')
+_SplitEventSubClass = namedtuple('_SplitEvent',
+                                 'distance, intersection_point, vertex, opposite_edge')
+_EdgeEventSubClass = namedtuple('_EdgeEvent',
+                                'distance intersection_point vertex_a vertex_b')
+
+log = logging.getLogger("__name__")
+# logging.basicConfig(filename='dg.log',level=logging.DEBUG)
+
+
+class _Debug:
+    """The _Debug class stores the bisectors for each edge event."""
+
+    def __init__(self, image):
+        if image is not None:
+            self.im = image[0]
+            self.draw = image[1]
+            self.do = True
+        else:
+            self.do = False
+
+    def line(self, *args, **kwargs):
+        if self.do:
+            self.draw.line(*args, **kwargs)
+
+    def rectangle(self, *args, **kwargs):
+        if self.do:
+            self.draw.rectangle(*args, **kwargs)
+
+    def show(self):
+        if self.do:
+            self.im.show()
+
+
+_debug = _Debug(None)
+
+
+# Debug set function
+
[docs]def set_debug(image): + global _debug + _debug = _Debug(image)
+ + +class _SplitEvent(_SplitEventSubClass): + """A Split Event is a reflex vertex that splits an Edge Event. + + They therefore split the entire polygon and create new adjacencies between the split + edge and each of the two edges incident to the reflex vertex + (Felkel and Obdrzalek 1998, 1). + """ + + __slots__ = () + + def __str__(self): + return "{} Split event @ {} from {} to {}".format( + self.distance, + self.intersection_point, + self.vertex, + self.opposite_edge) + + +class _EdgeEvent(_EdgeEventSubClass): + """ + An Edge Event is an edge extended from a perimeter edge, that shrinks to zero. + + This will make its neighoring edges adjacent (Felkel and Obdrzalek 1998, 2). + """ + __slots__ = () + + def __str__(self): + return "{} Edge event @ {} between {} and {}".format( + self.distance, + self.intersection_point, + self.vertex_a, + self.vertex_b) + + +class _LAVertex: + """A LAVertex is a vertex in a double connected circular list of active vertices.""" + + def __init__(self, point, edge_left, edge_right, direction_vectors=None, tol=1e-10): + self.point = point + self.edge_left = edge_left + self.edge_right = edge_right + self.prev = None + self.next = None + self.lav = None + self.tol = tol + self.id = None + # this should be handled better. Maybe membership in lav implies validity? + self._valid = True + creator_vectors = (edge_left.v.normalize() * -1, edge_right.v.normalize()) + if direction_vectors is None: + direction_vectors = creator_vectors + # The determinant of two 2d vectors equals the sign of their cross product + # If second vector is to left, then sign of det is pos, else neg + # So if cw polygon, convex angle will be neg (since second vector to right) + # In this case, since we flip first vector, concave will be neg + self._is_reflex = direction_vectors[0].determinant(direction_vectors[1]) < 0.0 + self._bisector = Ray2D( + self.point, + operator.add(*creator_vectors) * (-1 if self.is_reflex else 1) + ) + log.info("Created vertex %s", self.__repr__()) + _debug.line( + (self.bisector.p.x, self.bisector.p.y, + self.bisector.p.x + self.bisector.v.x * 100, + self.bisector.p.y + self.bisector.v.y * 100), + fill="blue") + + @property + def bisector(self): + return self._bisector + + def __eq__(self, other): + """Equality of this _LAvertex with another.""" + return self.point.is_equivalent(other.point, self.tol) and \ + self.edge_left.is_equivalent(other.edge_left, self.tol) and \ + self.edge_right.is_equivalent(other.edge_right, self.tol) and \ + self.next.point.is_equivalent(other.next.point, self.tol) and \ + self.prev.point.is_equivalent(other.prev.point, self.tol) + + @property + def is_reflex(self): + return self._is_reflex + + @property + def original_edges(self): + return self.lav._slav._original_edges + + def next_event(self): + """ Computes the event (change to edge) associated with each polygon vertex. + + Reflex vertices can result in split or edge events, while non-reflex vertices + will result in only edge events. + + Returns: + EdgeEvent associated with self. + """ + events = [] + if self.is_reflex: + # a reflex vertex may generate a split event + # split events happen when a vertex hits an opposite edge, + # splitting the polygon in two. + log.debug("looking for split candidates for vertex %s", self) + for edge in self.original_edges: + cond_1 = edge.edge.is_equivalent(self.edge_left, self.tol) + if cond_1 or edge.edge.is_equivalent(self.edge_right, self.tol): + continue + + log.debug('\tconsidering EDGE %s', edge) + + # A potential b is at the intersection of between our own bisector and + # the bisector of the angle between the tested edge and any one of our + # own edges. + + # We choose the 'less parallel' edge (in order to exclude a + # potentially parallel edge) + + # Make normalized copies of vectors + norm_edge_left_v = self.edge_left.v.normalize() + norm_edge_right_v = self.edge_right.v.normalize() + norm_edge_v = edge.edge.v.normalize() + + # Compute dot + leftdot = abs(norm_edge_left_v.dot(norm_edge_v)) + rightdot = abs(norm_edge_right_v.dot(norm_edge_v)) + selfedge = self.edge_left if leftdot < rightdot else self.edge_right + # otheredge = self.edge_left if leftdot > rightdot else self.edge_right + + # Make copies of edges and compute intersection + self_edge_copy = LineSegment2D(selfedge.p, selfedge.v) + edge_edge_copy = LineSegment2D(edge.edge.p, edge.edge.v) + # Ray line intersection + i = intersection2d.intersect_line2d_infinite( + edge_edge_copy, + self_edge_copy) + + if (i is not None) and (not i.is_equivalent(self.point, self.tol)): + # locate candidate b + linvec = (self.point - i).normalize() + edvec = edge.edge.v.normalize() + if linvec.dot(edvec) < 0: + edvec = -edvec + + bisecvec = edvec + linvec + if abs(bisecvec.magnitude) < self.tol: + continue + bisector = LineSegment2D(i, bisecvec) + b = intersection2d.intersect_line2d(self.bisector, bisector) + if b is None: + continue + + # check eligibility of b + # a valid b should lie within the area limited by the edge and the + # bisectors of its two vertices: + _left_bisector_norm = edge.bisector_left.v.normalize() + _left_to_b_norm = (b - edge.bisector_left.p).normalize() + xleft = _left_bisector_norm.determinant(_left_to_b_norm) > 0 + + _right_bisector_norm = edge.bisector_right.v.normalize() + _right_to_b_norm = (b - edge.bisector_right.p).normalize() + xright = _right_bisector_norm.determinant(_right_to_b_norm) < 0 + + _edge_edge_norm = edge.edge.v.normalize() + _b_to_edge_norm = (b - edge.edge.p).normalize() + xedge = _edge_edge_norm.determinant(_b_to_edge_norm) < 0 + + if not (xleft and xright and xedge): + log.debug( + '\t\tDiscarded candidate %s (%s-%s-%s)', + b, xleft, xright, xedge) + continue + + log.debug('\t\tFound valid candidate %s', b) + _dist_line_to_b = LineSegment2D( + edge.edge.p, + edge.edge.v).distance_to_point(b) + if _dist_line_to_b < self.tol: + _dist_line_to_b = 0.0 + _new_split_event = _SplitEvent(_dist_line_to_b, b, self, edge.edge) + events.append(_new_split_event) + + # Intersect line2d with line2d (does not assume lines are infinite) + i_prev = intersection2d.intersect_line2d_infinite( + self.prev.bisector, self.bisector) + i_next = intersection2d.intersect_line2d_infinite( + self.next.bisector, self.bisector) + # Make EdgeEvent and append to events + if i_prev is not None: + dist_to_i_prev = LineSegment2D( + self.edge_left.p.duplicate(), + self.edge_left.v.duplicate()).distance_to_point(i_prev) + if dist_to_i_prev < self.tol: + dist_to_i_prev = 0.0 + events.append(_EdgeEvent(dist_to_i_prev, i_prev, self.prev, self)) + + if i_next is not None: + dist_to_i_next = LineSegment2D( + self.edge_right.p.duplicate(), + self.edge_right.v.duplicate()).distance_to_point(i_next) + if dist_to_i_next < self.tol: + dist_to_i_next = 0.0 + events.append(_EdgeEvent(dist_to_i_next, i_next, self, self.next)) + + if not events: + return None + + ev = min(events, + key=lambda event: + self.point.distance_to_point(event.intersection_point)) + + log.info('Generated new event for %s: %s', self, ev) + return ev + + def invalidate(self): + """Mutates invalidate attribute of self. + """ + if self.lav is not None: + self.lav.invalidate(self) + else: + self._valid = False + + @property + def is_valid(self): + return self._valid + + def __str__(self): + return 'Vertex ({:.2f};{:.2f})'.format(self.point.x, self.point.y) + + def __lt__(self, other): + if isinstance(other, _LAVertex): + return self.point.x < other.point.x + + def __repr__(self): + return 'Vertex ({}) ({:.2f};{:.2f}), bisector {}, edges {} {}'.format( + 'reflex' if self.is_reflex else 'convex', + self.point.x, + self.point.y, + self.bisector, + self.edge_left, + self.edge_right) + + +class _SLAV: + """ A SLAV is a set of circular lists of active vertices. + + It stores a loop of vertices for the outer boundary, and for all holes and + sub-polygons created during the straight skeleton computation + (Felkel and Obdrzalek 1998, 2). + """ + + def __init__(self, polygon, holes, tol): + self.tol = tol + contours = [_normalize_contour(polygon, tol)] + contours.extend([_normalize_contour(hole, tol) for hole in holes]) + + self._lavs = [_LAV.from_polygon(contour, self) for contour in contours] + + # Store original polygon edges for calculating split events + self._original_edges = [ + _OriginalEdge( + LineSegment2D.from_end_points(vertex.prev.point, vertex.point), + vertex.prev.bisector, + vertex.bisector + ) for vertex in chain.from_iterable(self._lavs) + ] + + def __iter__(self): + for lav in self._lavs: + yield lav + + def __len__(self): + return len(self._lavs) + + def empty(self): + return len(self._lavs) == 0 + + def handle_edge_event(self, event): + """Resolves adjacency of new edge event. + + This function resolves the edge event with previous edges, LAV, and then stores + edge information in a Subtree. + + Args: + event: EdgeEvent + + Returns: + Subtree namedTuple + """ + sinks = [] + events = [] + + lav = event.vertex_a.lav + # Triangle, one sink point + if event.vertex_a.prev.point.is_equivalent(event.vertex_b.next.point, self.tol): + log.info('%.2f Peak event at intersection %s from <%s,%s,%s> in %s', + event.distance, event.intersection_point, event.vertex_a, + event.vertex_b, event.vertex_a.prev, lav) + self._lavs.remove(lav) + lst_lav = list(lav) + for vi, vertex in enumerate(lst_lav): + sinks.append(vertex.point) + vertex.invalidate() + else: + log.info('%.2f Edge event at intersection %s from <%s,%s> in %s', + event.distance, event.intersection_point, event.vertex_a, + event.vertex_b, lav) + new_vertex = lav.unify(event.vertex_a, + event.vertex_b, event.intersection_point) + if lav.head in (event.vertex_a, event.vertex_b): + lav.head = new_vertex + + sinks.extend((event.vertex_a.point, event.vertex_b.point)) + next_event = new_vertex.next_event() + if next_event is not None: + events.append(next_event) + + return (Subtree(event.intersection_point, event.distance, sinks), events) + + def handle_split_event(self, event): + """Consumes a split event. + + This function resolves the adjacency of new split event with previous edges, LAV, + and then stores edge information in a Subtree. + + Args: + event: EdgeEvent + + Returns: + Subtree namedTuple + """ + lav = event.vertex.lav + log.info( + '%.2f Split event at intersection %s from vertex %s, for edge %s in %s', + event.distance, + event.intersection_point, + event.vertex, + event.opposite_edge, + lav) + + sinks = [event.vertex.point] + vertices = [] + x = None # right vertex + y = None # left vertex + norm = event.opposite_edge.v.normalize() + for v in chain.from_iterable(self._lavs): + log.debug('%s in %s', v, v.lav) + equal_to_edge_left_p = event.opposite_edge.p.is_equivalent( + v.edge_left.p, self.tol) + equal_to_edge_right_p = event.opposite_edge.p.is_equivalent( + v.edge_right.p, self.tol) + + _pnorm = Point2D(norm.x, norm.y) + if _pnorm.is_equivalent(v.edge_left.v.normalize(), self.tol) \ + and equal_to_edge_left_p: + x = v + y = x.prev + elif _pnorm.is_equivalent(v.edge_right.v.normalize(), self.tol) \ + and equal_to_edge_right_p: + y = v + x = y.next + + if x: + xleft = y.bisector.v.normalize().determinant( + (event.intersection_point - y.point).normalize()) >= 0 + + xright = x.bisector.v.normalize().determinant( + (event.intersection_point - x.point).normalize()) <= 0 + + log.debug( + 'Vertex %s holds edge as %s edge (%s, %s)', v, + ('left' if x == v else 'right'), xleft, xright) + + if xleft and xright: + break + else: + x = None + y = None + + if x is None: + log.info( + 'Failed split event %s (equivalent edge event is expected to follow)', + event + ) + return (None, []) + + v1 = _LAVertex( + event.intersection_point, + event.vertex.edge_left, + event.opposite_edge, + tol=self.tol + ) + v2 = _LAVertex( + event.intersection_point, + event.opposite_edge, + event.vertex.edge_right, + tol=self.tol + ) + + v1.prev = event.vertex.prev + v1.next = x + event.vertex.prev.next = v1 + x.prev = v1 + + v2.prev = y + v2.next = event.vertex.next + event.vertex.next.prev = v2 + y.next = v2 + + new_lavs = None + self._lavs.remove(lav) + if lav != x.lav: + # the split event actually merges two lavs + self._lavs.remove(x.lav) + new_lavs = [_LAV.from_chain(v1, self)] + else: + new_lavs = [_LAV.from_chain(v1, self), _LAV.from_chain(v2, self)] + + for lv in new_lavs: + log.debug(lv) + if len(lv) > 2: + self._lavs.append(lv) + vertices.append(lv.head) + else: + log.info( + 'LAV %s has collapsed into the line %s--%s', + lv, lv.head.point, lv.head.next.point + ) + sinks.append(lv.head.next.point) + for v in list(lv): + v.invalidate() + + events = [] + for vertex in vertices: + next_event = vertex.next_event() + if next_event is not None: + events.append(next_event) + + event.vertex.invalidate() + return (Subtree(event.intersection_point, event.distance, sinks), events) + + +class _LAV: + """A single circular list of active vertices. + + Stored in a SLAV (Felkel and Obdrzalek 1998, 2). + """ + + def __init__(self, slav): + self.head = None + self._slav = slav + self._len = 0 + self.tol = slav.tol + log.debug('Created LAV %s', self) + + @classmethod + def from_polygon(cls, polygon, slav): + """Construct a LAV from a list of point coordinates representing a polygon. + + Args: + polygon: list of points (tuple of x,y coordinates). + slav: SLAV (a set of circular lists of active vertices). + tol: tolerance for point equality. + + Returns: + LAV (single circular list of active vertices). + """ + lav = cls(slav) + for prev, point, next in _window(polygon): + lav._len += 1 + vertex = _LAVertex( + point, + LineSegment2D.from_end_points(prev, point), + LineSegment2D.from_end_points(point, next), + tol=slav.tol + ) + vertex.lav = lav + if lav.head is None: + lav.head = vertex + vertex.prev = vertex.next = vertex + else: + vertex.next = lav.head + vertex.prev = lav.head.prev + vertex.prev.next = vertex + lav.head.prev = vertex + return lav + + @classmethod + def from_chain(cls, head, slav): + """Creates new LAV from consumed _LAVertex, and reference _SLAV. + + Args: + head: Head _LAVertex that creates new _LAV loop. + slav: Reference SLAV (a set of circular lists of active vertices). + + Returns: + LAV (a single circular list of active vertices). + """ + lav = cls(slav) + lav.head = head + for vertex in lav: + lav._len += 1 + vertex.lav = lav + return lav + + def invalidate(self, vertex): + """Sets vertex validity to False, and handles head relationship. + + Args: + vertex: _LAVertex to be invalidated. + """ + assert vertex.lav is self, 'Tried to invalidate a vertex thats not mine' + log.debug('Invalidating %s', vertex) + vertex._valid = False + if self.head == vertex: + self.head = self.head.next + vertex.lav = None + + def unify(self, vertex_a, vertex_b, point): + """Generate a new _LAVertex from input Point2D and resolve adjacency to old edges + + Args: + vertex_a = _LAVertex + vertex_b = _LAVertex + point = intersection point from angle bisectors from vertex_a + and vertex_b as a Point2D. + Returns: + _LAVertex of intersection point. + """ + normed_b_bisector = vertex_b.bisector.v.normalize() + normed_a_bisector = vertex_a.bisector.v.normalize() + replacement = _LAVertex( + point, + vertex_a.edge_left, + vertex_b.edge_right, + (normed_b_bisector, normed_a_bisector), + tol=vertex_a.tol, + ) + replacement.lav = self + + if self.head in [vertex_a, vertex_b]: + self.head = replacement + + vertex_a.prev.next = replacement + vertex_b.next.prev = replacement + replacement.prev = vertex_a.prev + replacement.next = vertex_b.next + + vertex_a.invalidate() + vertex_b.invalidate() + + self._len -= 1 + return replacement + + def __str__(self): + return 'LAV {}'.format(id(self)) + + def __repr__(self): + return '{} = {}'.format(str(self), [vertex for vertex in self]) + + def __len__(self): + return self._len + + def __iter__(self): + cur = self.head + while True: + yield cur + try: + cur = cur.next + if cur == self.head: + raise StopIteration + except StopIteration: + return + + def _show(self): + """ Iterates through _LAV linked list and prints _LAVertex.""" + cur = self.head + while True: + print(cur.__repr__()) + cur = cur.next + if cur == self.head: + break + + +class _EventQueue: + """ + An EventQueue is a priority queue that stores vertices of the polygon. + """ + + def __init__(self): + self.__data = [] + + def put(self, item): + if item is not None: + heapq.heappush(self.__data, item) + + def put_all(self, iterable): + for item in iterable: + heapq.heappush(self.__data, item) + + def get(self): + return heapq.heappop(self.__data) + + def empty(self): + return len(self.__data) == 0 + + def peek(self): + return self.__data[0] + + def show(self): + for item in self.__data: + print(item) + + +# Skeleton Code +def _window(lst): + """ + Window operator for lists. + + Consume a list of items, and returns a zipped list of the previous, current and next + items in the list, accessible by the same index. + + Args: + lst: list + + Returns: + Zipped list of previous, current and next items in list. + """ + prevs, items, nexts = tee(lst, 3) + prevs = islice(cycle(prevs), len(lst) - 1, None) + nexts = islice(cycle(nexts), 1, None) + return zip(prevs, items, nexts) + + +def _normalize_contour(contour, tol): + """ + Consumes list of x,y coordinate tuples and returns list of Point2Ds. + + Args: + contour: list of x,y tuples from contour. + tol: Number for point equivalence tolerance. + Return: + list of Point2Ds of contour. + """ + contour = [Point2D(float(x), float(y)) for (x, y) in contour] + normed_contour = [] + for prev, point, next in _window(contour): + normed_prev = (point - prev).normalize() + normed_next = (next - point).normalize() + + if not point.is_equivalent(next, tol) or \ + normed_prev.is_equivalent(normed_next, tol): + normed_contour.append(point) + + return normed_contour + + +def _skeletonize(slav): + """ + Compute polygon straight skeleton from a Set of List of Active vertex (SLAV). + + The SLAV will represent the polygon as a double linked list of vertices in + counter-clockwise order. Holes is a similar list with the vertices of which + should be in clockwise order. + + Args: + slav: SLAV object. + Returns: + List of subtrees. + """ + output = [] + prioque = _EventQueue() + + for lav in slav: + for vertex in lav: + v = vertex.next_event() + prioque.put(v) + + # While the priority queue or SLAV is not empty, compute the intersection of + # bisectors at edge. The 'handle_edge_event' method computes the next event + # from the new intersection via the next_event method. Thus, this while loop + # iteratively adds new events without recursion. + while not (prioque.empty() or slav.empty()): + log.debug('SLAV is %s', [repr(lav) for lav in slav]) + i = prioque.get() # vertex a, b is self or next vertex + + # Handle edge or split events. + # arc: subtree(event.intersection_point, event.distance, sinks) + # events: updated events with new vertex + if isinstance(i, _EdgeEvent): + if not i.vertex_a.is_valid or not i.vertex_b.is_valid: + log.info('%.2f Discarded outdated edge event %s', i.distance, i) + continue + (arc, events) = slav.handle_edge_event(i) + elif isinstance(i, _SplitEvent): + if not i.vertex.is_valid: + log.info('%.2f Discarded outdated split event %s', i.distance, i) + continue + (arc, events) = slav.handle_split_event(i) + prioque.put_all(events) + # As we traverse priorque, output list of "subtrees", which are in the form + # of (source, height, sinks) where source is the highest points, height is + # its distance to an edge, and sinks are the point connected to the source. + if arc is not None: + output.append(arc) + for sink in arc.sinks: + _debug.line((arc.source.x, arc.source.y, sink.x, sink.y), fill='red') + _debug.show() + + return output + + +
[docs]def skeleton_as_subtree_list(polygon, holes=None, tol=1e-10): + """Compute polygon straight skeleton as a list of subtree source and sink points. + + Args: + polygon: nested list of endpoint coordinates in counter-clockwise order. + Example square: [[0,0], [1,0], [1,1], [0,1]] + holes: list of polygons representing holes in clockwise order. + Example hole: [[.25,.75], [.75,.75], [.75,.25], [.25,.25]] + tol: Tolerance for point equivalence. (Default: 1e-10). + + Returns: + List of subtrees. + """ + + # Reverse order to ensure cw order for input + holes = [] if holes is None else [reversed(hole) for hole in holes] + slav = _SLAV(reversed(polygon), holes, tol) + + subtree_list = _skeletonize(slav) + + return subtree_list
+ + +
[docs]def skeleton_as_edge_list(polygon, holes=None, tol=1e-10): + """Compute the straight skeleton of a polygon and returns skeleton as list of edges. + + Args: + polygon: list of list of point coordinates in counter-clockwise order. + Example square: [[0,0], [1,0], [1,1], [0,1]] + holes: list of polygons representing holes in clockwise order. + Example hole: [[.25,.75], [.75,.75], [.75,.25], [.25,.25]]. + tol: Tolerance for point equivalence. (Default: 1e-10). + + Returns: + list of lines as coordinate tuples. + """ + edge_lst = [] + + # Reverse order to ensure cw order for input + holes = [] if holes is None else [hole[::-1] for hole in holes] + slav = _SLAV(polygon[::-1], holes, tol) + subtree_list = _skeletonize(slav) + + for subtree in subtree_list: + source_pt = subtree.source + for sink_pt in subtree.sinks: + edge_arr = ((source_pt.x, source_pt.y), (sink_pt.x, sink_pt.y)) + edge_lst.append(edge_arr) + + return edge_lst
+
+ +
+ +
+
+
+
+

+ Back to top + +

+

+ © Copyright 2024, Ladybug Tools.
+ Created using Sphinx 5.3.0.
+

+
+
+ + \ No newline at end of file diff --git a/docs/_modules/ladybug_geometry_polyskel/polysplit.html b/docs/_modules/ladybug_geometry_polyskel/polysplit.html new file mode 100644 index 0000000..c3f1d61 --- /dev/null +++ b/docs/_modules/ladybug_geometry_polyskel/polysplit.html @@ -0,0 +1,659 @@ + + + + + + + ladybug_geometry_polyskel.polysplit — ladybug-geometry-polyskel documentation + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +

Source code for ladybug_geometry_polyskel.polysplit

+# coding=utf-8
+"""Functions for splitting a polygon into subpolygons based on skeleton topology."""
+from __future__ import division
+
+from ladybug_geometry.geometry2d.polygon import Polygon2D
+from ladybug_geometry.geometry2d.line import LineSegment2D
+from ladybug_geometry.geometry3d.pointvector import Vector3D
+from ladybug_geometry.intersection2d import does_intersection_exist_line2d
+
+from ladybug_geometry_polyskel import polyskel
+from ladybug_geometry_polyskel.polygraph import PolygonDirectedGraph, _vector2hash
+
+POLYSKELETON_ERROR_MSG = \
+    'The straight skeleton topology calculated for this geometry is incorrect.'
+
+
+
[docs]def skeleton_subpolygons(polygon, holes=None, tol=1e-8, recurse_limit=3000, + print_recurse=False): + """Compute the polygon straight skeleton as a list of polygon point arrays. + + Args: + polygon: list of Polygon2D objects. + holes: list of Polygon2D objects representing holes in cw order. (Default: None). + tol: Tolerance for point equivalence. (Default: 1e-10). + recurse_limit: optional parameter to limit the number of cycles looking for + polygons in skeleton graph. (Default: 3000). + print_recurse: optional boolean to print cycle loop cycles, for + debugging. (Default: False). + + Returns: + A list of the straight skeleton subpolygons as Polygon2D objects. + """ + subs1, subs2 = perimeter_core_subpolygons( + polygon, float('inf'), holes=holes, tol=tol, recurse_limit=recurse_limit, + print_recurse=print_recurse) + + return subs1 + subs2
+ + +
[docs]def perimeter_core_subpolygons(polygon, distance, holes=None, tol=1e-8, + recurse_limit=3000, print_recurse=False): + """Compute the perimeter and core sub-polygons from the polygon straight skeleton. + + Args: + polygon: A Polygon2D to split into perimeter and core subpolygons. + distance: Distance in model units to offset perimeter subpolygon. + holes: A list of Polygon2D objects representing holes in the + polygon. (Default: None). + tol: Tolerance for point equivalence. (Default: 1e-10). + recurse_limit: optional parameter to limit the number of cycles looking for + polygons in skeleton graph. (Default: 3000). + print_recurse: optional boolean to print cycle loop cycles, for + debugging. (Default: False). + + Returns: + A tuple with two lists. + + * perimeter_sub_polys -- A list of perimeter subpolygons as Polygon2D objects. + + * core_sub_polys -- A list of core subpolygons as Polygon2D objects. In the + event of a core sub-polygon with a hole, a list with be returned with + the first item being a boundary and successive items as hole polygons. + """ + # Initialize sub polygon lists + perimeter_sub_polys, core_sub_polys, hole_sub_polys = [], [], [] + + # Compute the straight skeleton of the polygon and get exterior edges + dg = _skeleton_as_directed_graph(polygon, holes, tol) + + if holes is not None: + holes_exist = all([_hole_exists_in_skeleton(hole, dg) for hole in holes]) + if not holes_exist: + # try to get the polygons simply by offsetting (works for shallow offsets) + perimeter_sub_polys, core_sub_poly = \ + perimeter_core_by_offset(polygon, distance, holes) + if core_sub_poly is not None: + return perimeter_sub_polys, core_sub_poly + else: # the offset distance was too deep + raise RuntimeError( + POLYSKELETON_ERROR_MSG + ' Error calculating the ' + 'holes for the polygon. Try changing the geometry ' + 'of the hole.') + + # Make list of roots for graph traversal of just the exterior cycles + root_keys = [dg.outer_root_key] + dg.hole_root_keys + + for i, root_key in enumerate(root_keys): + try: + # Compute the polygons on the perimeter of the polygon + _perimeter_sub_polys, _perimeter_sub_dg = \ + _split_perimeter_subpolygons( + dg, distance, root_key, tol, recurse_limit, print_recurse) + except (RuntimeError, TypeError) as e: # self-intersecting skeleton + # try to get the polygons simply by offsetting (works for shallow offsets) + perimeter_sub_polys, core_sub_poly = \ + perimeter_core_by_offset(polygon, distance, holes) + if core_sub_poly is not None: + return perimeter_sub_polys, core_sub_poly + else: # the offset distance was too deep + raise RuntimeError( + 'Generating perimeter_core_subpolygons failed.\n{}'.format(e)) + + # Add perimeter subpolygons + perimeter_sub_polys.extend(_perimeter_sub_polys) + + # Compute the polygons on the core of the polygon + _core_sub_polys = _exterior_cycles_as_polygons(_perimeter_sub_dg) + if len(_core_sub_polys) == 0: + raise RuntimeError('Generating perimeter_core_subpolygons failed.') + + # Reverse polygons b/c graph traversals will put interior polys as cw + _core_sub_polys = [p.reverse() for p in _core_sub_polys] + + # Add to lists + if i == 0: + # If polygon is not a hole, get rid of largest area + core_sub_polys.extend(_core_sub_polys[:-1]) + else: + # If polygon is a hole, get rid of smallest area + hole_sub_polys.extend(_core_sub_polys[1:]) + + if len(hole_sub_polys) > 0: + # Remake cores w/ holes + core_sub_polys = _add_holes_to_polygons(core_sub_polys, hole_sub_polys) + + return perimeter_sub_polys, core_sub_polys
+ + +
[docs]def perimeter_core_by_offset(polygon, distance, holes=None): + """Compute perimeter and core sub-polygons using a simple offset method. + + This method will only return polygons when the distance is shallow enough + that the perimeter offset does not intersect itself or turn inward on itself. + Otherwise, the method will simple return None. This means that there will + only ever be one core polygon. + + Args: + polygon: A Polygon2D to split into perimeter and core subpolygons. + distance: Distance in model units to offset perimeter subpolygon. + holes: A list of Polygon2D objects representing holes in the + polygon. (Default: None). + + Returns: + A tuple with two items. + + * perimeter_sub_polys -- A list of perimeter subpolygons as Polygon2D + objects. Will be None if the offset distance is too deep. + + * core_sub_polys -- A list of core subpolygons as Polygon2D objects. In the + event of a core sub-polygon with a hole, a list with be returned with + the first item being a boundary and successive items as hole polygons. + Will be None if the offset distance is too deep. + """ + # extract the core polygon and make sure it doesn't intersect itself + core_sub_poly = polygon.offset(distance, check_intersection=True) + if core_sub_poly is None: + return None, None + # generate the perimeter polygons + if holes is None: + perimeter_sub_polys = [] + for out_seg, in_seg in zip(polygon.segments, core_sub_poly.segments): + pts = (out_seg.p1, out_seg.p2, in_seg.p2, in_seg.p1) + perimeter_sub_polys.append(Polygon2D(pts)) + return perimeter_sub_polys, [core_sub_poly] + else: + # offset all of the holes into the shape + core_sub_polys = [core_sub_poly] + for hole in holes: + hole_sub_poly = hole.offset(-distance, check_intersection=True) + if hole_sub_poly is None: + return None, None + core_sub_polys.append(hole_sub_poly) + # check that None of the holes intersect one another + for i, c_pgon in enumerate(core_sub_polys): + for other_pgon in core_sub_polys[i + 1:]: + if _do_polygons_intersect(c_pgon, other_pgon): + return None, None + # if nothing intersects, we can build the perimeter polygons + out_polys = [polygon] + list(holes) + perimeter_sub_polys = [] + for p_count, (out_poly, in_poly) in enumerate(zip(out_polys, core_sub_polys)): + for out_seg, in_seg in zip(out_poly.segments, in_poly.segments): + if p_count == 0: + pts = (out_seg.p1, out_seg.p2, in_seg.p2, in_seg.p1) + else: + if not out_poly.is_clockwise: + pts = (out_seg.p1, in_seg.p1, in_seg.p2, out_seg.p2) + else: + (out_seg.p1, out_seg.p2, in_seg.p2, in_seg.p1) + perimeter_sub_polys.append(Polygon2D(pts)) + return perimeter_sub_polys, core_sub_polys
+ + +def _do_polygons_intersect(polygon_1, polygon_2): + """Test to see if two polygons intersect one another.""" + for seg in polygon_1.segments: + for _s in polygon_2.segments: + if does_intersection_exist_line2d(seg, _s): + return True + return False + + +def _skeleton_as_directed_graph(_polygon, holes, tol): + """Compute the straight skeleton of a polygon as a PolygonDirectedGraph. + + Args: + polygon: polygon as Polygon2D. + holes: holes as list of Polygon2Ds. + tol: Tolerance for point equivalence. + + Returns: + A PolygonDirectedGraph object. + """ + + if _polygon.is_clockwise: + # Exterior polygon must be in counter-clockwise order. + _polygon = _polygon.reverse() + if holes is not None: + # Interior polygon must be in counter-clockwise order. + for i, hole in enumerate(holes): + if hole.is_clockwise: + holes[i] = hole.reverse() + + # Make directed graph + dg = PolygonDirectedGraph(tol=tol) + + # Reverse order to ensure cw order for input + holes_array = [] if holes is None else [hole.to_array() for hole in holes] + polygon = _polygon.reverse() # flip to cw order + slav = polyskel._SLAV(polygon.to_array(), holes_array, tol) + + # Get the exterior polygon coordinates making sure to flip back to ccw + for lav in slav._lavs: + vertices = list(reversed(list(lav))) + + # Get order, account for the fact we flip outer polygons back to ccw order + is_lav_cw_order = not Polygon2D.from_array( + [v.point for v in vertices]).is_clockwise + + # Start with last point to be consistent with order of point input, and then + # add rest of vertices in order. + for j in range(len(vertices) - 1): + curr_v = vertices[j] + next_v = vertices[j + 1] + k = dg.add_node(curr_v.point, [next_v.point], exterior=True) + + # Add roots + if j == 0: + if is_lav_cw_order: # Outer polygon + if dg.outer_root_key is None: + dg.outer_root_key = k + else: + raise RuntimeError('Outer root key is already assigned. ' + 'Cannot reassign outer root key.') + else: + dg.hole_root_keys.append(k) + + # Close loop + dg.add_node(vertices[-1].point, [vertices[0].point], exterior=True) + + # Compute the skeleton + subtree_list = polyskel._skeletonize(slav) + + for subtree in subtree_list: + event_pt = subtree.source + for sink_pt in subtree.sinks: + # Add a bidirectional edge to represent skeleton edges + dg.add_node(sink_pt, [event_pt]) + dg.add_node(event_pt, [sink_pt], exterior=False) + + return dg + + +def _split_polygon_graph(node1, node2, distance, poly_graph, tol, + recurse_limit=3000, print_recurse=False): + """Split the PolygonDirectedGraph by an edge offset at a distance. + + Args: + node1: A node defining the edge to offset for splitting. If the graph + defines a counter-clockwise polygon, this node should represent + the left hand-most point. + node2: A node defining the edge to offset for splitting. If the graph + defines a counter-clockwise polygon, this node should represent + the right hand-most point. + distance: The distance to offset the splitting edge, in model units. + poly_graph: A PolygonDirectedGraph representing a single polygon. + tol: Tolerance for point equivalence. + recurse_limit: optional parameter to limit the number of cycles looking for + polygons in skeleton graph. (Default: 3000). + print_recurse: optional boolean to print cycle loop cycles, for + debugging. (Default: False). + + Returns: + A list of nodes representing the split polygon adjacent to the exterior + edge defined by node1 and node2. + """ + + ext_seg = LineSegment2D.from_end_points(node1.pt, node2.pt) + + # Compute normal facing into the polygon + ext_arr = ext_seg.v.to_array() + ext_seg_v = Vector3D(ext_arr[0], ext_arr[1], 0) + normal = ext_seg_v.cross(Vector3D(0, 0, -1)).normalize() * distance + + # Move segment by normal to get offset segment + offset_seg = ext_seg.move(normal) + + poly_graph = PolygonDirectedGraph.from_point_array( + [n.pt for n in poly_graph], tol=tol) + poly_graph.outer_root_key = poly_graph.ordered_nodes[0].key + + # Update graph by intersecting offset segment with other edges + poly_graph.intersect_graph_with_segment(offset_seg) + + # Get the minimum cycle. Since we start at the exterior edge, this will + # return the perimeter offset. + root_node = poly_graph.node(poly_graph.outer_root_key) + next_node = root_node.adj_lst[0] + + split_poly_nodes = poly_graph.min_ccw_cycle( + root_node, next_node, recurse_limit=recurse_limit, print_recurse=print_recurse) + + return split_poly_nodes + + +def _split_perimeter_subpolygons(dg, distance, root_key, tol, recurse_limit=3000, + print_recurse=False): + """ + Split polygons in the PolygonDirectedGraph into perimeter subpolygons. + + Args: + dg: A PolygonDirected Graph. + distance: The distance to offset the perimeter in model units. + root_key: A key representing any node that identifies the polygon to be split. + This will be used as the starting point for the graph traversal. + tol: A number representing the tolerance for point equivalence. + recurse_limit: optional parameter to limit the number of cycles looking for + polygons in skeleton graph. (Default: 3000). + print_recurse: Flag to print loop cycles. (Default: False). + + Returns: + A tuple with two lists: + + A list of perimeter subpolygons as Polygon2D objects. + + A PolygonDirectedGraph of just the perimeter subpolygons. The edges of + this graph that are not bidirectional (exterior edges) define the + exterior of the polygon and it's core subpolygons. + """ + + # Start an empty directed graph, and extract exterior cycle associated + # with the root_key + perimeter_subpolygons = [] + perimeter_sub_dg = PolygonDirectedGraph(tol=tol) + exterior = dg.exterior_cycle(dg.node(root_key)) + + if exterior is None: + raise RuntimeError(POLYSKELETON_ERROR_MSG + ' Error traversing the skeleton ' + 'for the following polygon:\n{}'.format( + [n.pt.to_array() for n in exterior])) + + # Cycle through exterior nodes and split polygons by distance + for exterior_node in exterior: + + next_node = exterior_node.adj_lst[0] + + # Find the smallest polygon defined by the exterior node + min_ccw_poly_graph = PolygonDirectedGraph.min_ccw_cycle( + exterior_node, next_node, recurse_limit=recurse_limit, + print_recurse=print_recurse) + + # Offset edge from specified distance, and cut a perimeter polygon + split_poly_graph = _split_polygon_graph( + exterior_node, next_node, distance, min_ccw_poly_graph, tol, + recurse_limit=recurse_limit, print_recurse=print_recurse) + + # Store perimeter nodes in DG + pts = [node.pt for node in split_poly_graph] + for i in range(len(pts) - 1): + perimeter_sub_dg.add_node(pts[i], [pts[i + 1]]) + perimeter_sub_dg.add_node(pts[-1], [pts[0]]) + + # Store perimeter points in list as polygon + perimeter_subpolygons.append(Polygon2D(pts)) + + return perimeter_subpolygons, perimeter_sub_dg + + +def _exterior_cycles_as_polygons(dg): + """Convert and sort exterior cycles in a PolygonDirectedGraph to a list of polygons. + + Args: + dg: A PolygonDirectedGraph. + + Returns: + A list of Polygon2D objects sorted by area. + """ + + # Get all exterior cycles as polygons + ext_cycles = dg.exterior_cycles + exterior_polys = [Polygon2D([node.pt for node in cycle]) + for cycle in ext_cycles] + + # Sort by area and return + return sorted(exterior_polys, key=lambda p: p.area) + + +def _add_holes_to_polygons(polys, hole_polys): + """Add holes to a list of polygons. + + Note that this method will add holes to the polygon only if it is inside or + partially inside the polygon. + + Args: + polys: A list of Polygon2Ds to add holes to. + hole_polys: A list of Polygon2Ds representing the holes. + + Returns: + A list of the Polygon2D polygons with holes. + """ + holed_polys = [] + for poly in polys: + # Check to see if hole is not outside of core + # Often, the hole is only partially inside the core, so + # we can't check if it's inside + inside_holes = [hole for hole in hole_polys + if not poly.is_polygon_outside(hole)] + + if len(inside_holes) == 0: + holed_polys.append(poly) + else: + holed_polys.append([poly] + inside_holes) + + return holed_polys + + +def _hole_exists_in_skeleton(polygon, dg): + """Check if polygon is in directed graph skeleton. + + This method is based on the PolygonDirectedGraph.polygon_exist method, + with modifications to detect incorrect straight skeletons. + + Args: + polygons: A Polygon2D object. + dg: A PolygonDirectedGraph. + + Return: + True if exists, else False. + """ + vertices_loop = list(polygon.vertices) + vertices_loop = vertices_loop + [vertices_loop[0]] + + for i in range(len(vertices_loop) - 1): + pt1 = vertices_loop[i] + pt2 = vertices_loop[i + 1] + + if not dg.pt_exists(pt1): + return False + + node1 = dg.node(_vector2hash(pt1, dg._tol)) + node2 = dg.node(_vector2hash(pt2, dg._tol)) + key_lst = [n.key for n in node1.adj_lst] + + if node2.key in key_lst: + return False + + if len(key_lst) == 1: + # Check to make sure hole is connected to skeleton + return False + + return True +
+ +
+ +
+
+
+
+

+ Back to top + +

+

+ © Copyright 2024, Ladybug Tools.
+ Created using Sphinx 5.3.0.
+

+
+
+ + \ No newline at end of file diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt new file mode 100644 index 0000000..b08dc06 --- /dev/null +++ b/docs/_sources/index.rst.txt @@ -0,0 +1,25 @@ +Welcome to Ladybug Geometry Polyskel's documentation! +=================================== + +.. image:: http://www.ladybug.tools/assets/img/ladybug.png + +A library with straight skeleton methods using ladybug-geometry. + +Installation +============ + +``pip install -U ladybug-geometry-polyskel`` + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + +.. include:: modules.rst + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/_sources/ladybug_geometry_polyskel.polygraph.rst.txt b/docs/_sources/ladybug_geometry_polyskel.polygraph.rst.txt new file mode 100644 index 0000000..fea903e --- /dev/null +++ b/docs/_sources/ladybug_geometry_polyskel.polygraph.rst.txt @@ -0,0 +1,7 @@ +ladybug\_geometry\_polyskel.polygraph module +============================================ + +.. automodule:: ladybug_geometry_polyskel.polygraph + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/ladybug_geometry_polyskel.polyskel.rst.txt b/docs/_sources/ladybug_geometry_polyskel.polyskel.rst.txt new file mode 100644 index 0000000..82bf8ec --- /dev/null +++ b/docs/_sources/ladybug_geometry_polyskel.polyskel.rst.txt @@ -0,0 +1,7 @@ +ladybug\_geometry\_polyskel.polyskel module +=========================================== + +.. automodule:: ladybug_geometry_polyskel.polyskel + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/ladybug_geometry_polyskel.polysplit.rst.txt b/docs/_sources/ladybug_geometry_polyskel.polysplit.rst.txt new file mode 100644 index 0000000..35a80c0 --- /dev/null +++ b/docs/_sources/ladybug_geometry_polyskel.polysplit.rst.txt @@ -0,0 +1,7 @@ +ladybug\_geometry\_polyskel.polysplit module +============================================ + +.. automodule:: ladybug_geometry_polyskel.polysplit + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/ladybug_geometry_polyskel.rst.txt b/docs/_sources/ladybug_geometry_polyskel.rst.txt new file mode 100644 index 0000000..b1d9390 --- /dev/null +++ b/docs/_sources/ladybug_geometry_polyskel.rst.txt @@ -0,0 +1,20 @@ +ladybug\_geometry\_polyskel package +=================================== + +Submodules +---------- + +.. toctree:: + :maxdepth: 4 + + ladybug_geometry_polyskel.polygraph + ladybug_geometry_polyskel.polyskel + ladybug_geometry_polyskel.polysplit + +Module contents +--------------- + +.. automodule:: ladybug_geometry_polyskel + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/_sources/modules.rst.txt b/docs/_sources/modules.rst.txt new file mode 100644 index 0000000..5c9445c --- /dev/null +++ b/docs/_sources/modules.rst.txt @@ -0,0 +1,7 @@ +ladybug_geometry_polyskel +========================= + +.. toctree:: + :maxdepth: 4 + + ladybug_geometry_polyskel diff --git a/docs/_static/_sphinx_javascript_frameworks_compat.js b/docs/_static/_sphinx_javascript_frameworks_compat.js new file mode 100644 index 0000000..8549469 --- /dev/null +++ b/docs/_static/_sphinx_javascript_frameworks_compat.js @@ -0,0 +1,134 @@ +/* + * _sphinx_javascript_frameworks_compat.js + * ~~~~~~~~~~ + * + * Compatability shim for jQuery and underscores.js. + * + * WILL BE REMOVED IN Sphinx 6.0 + * xref RemovedInSphinx60Warning + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} diff --git a/docs/_static/basic.css b/docs/_static/basic.css new file mode 100644 index 0000000..eeb0519 --- /dev/null +++ b/docs/_static/basic.css @@ -0,0 +1,899 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} +dl.field-list > dt:after { + content: ":"; +} + + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css new file mode 100644 index 0000000..09e88ce --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.css @@ -0,0 +1,1109 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@-ms-viewport { + width: device-width; +} + +.hidden { + display: none; + visibility: hidden; +} + +.visible-phone { + display: none !important; +} + +.visible-tablet { + display: none !important; +} + +.hidden-desktop { + display: none !important; +} + +.visible-desktop { + display: inherit !important; +} + +@media (min-width: 768px) and (max-width: 979px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important ; + } + .visible-tablet { + display: inherit !important; + } + .hidden-tablet { + display: none !important; + } +} + +@media (max-width: 767px) { + .hidden-desktop { + display: inherit !important; + } + .visible-desktop { + display: none !important; + } + .visible-phone { + display: inherit !important; + } + .hidden-phone { + display: none !important; + } +} + +.visible-print { + display: none !important; +} + +@media print { + .visible-print { + display: inherit !important; + } + .hidden-print { + display: none !important; + } +} + +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 30px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 1170px; + } + .span12 { + width: 1170px; + } + .span11 { + width: 1070px; + } + .span10 { + width: 970px; + } + .span9 { + width: 870px; + } + .span8 { + width: 770px; + } + .span7 { + width: 670px; + } + .span6 { + width: 570px; + } + .span5 { + width: 470px; + } + .span4 { + width: 370px; + } + .span3 { + width: 270px; + } + .span2 { + width: 170px; + } + .span1 { + width: 70px; + } + .offset12 { + margin-left: 1230px; + } + .offset11 { + margin-left: 1130px; + } + .offset10 { + margin-left: 1030px; + } + .offset9 { + margin-left: 930px; + } + .offset8 { + margin-left: 830px; + } + .offset7 { + margin-left: 730px; + } + .offset6 { + margin-left: 630px; + } + .offset5 { + margin-left: 530px; + } + .offset4 { + margin-left: 430px; + } + .offset3 { + margin-left: 330px; + } + .offset2 { + margin-left: 230px; + } + .offset1 { + margin-left: 130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.564102564102564%; + *margin-left: 2.5109110747408616%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.564102564102564%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.45299145299145%; + *width: 91.39979996362975%; + } + .row-fluid .span10 { + width: 82.90598290598291%; + *width: 82.8527914166212%; + } + .row-fluid .span9 { + width: 74.35897435897436%; + *width: 74.30578286961266%; + } + .row-fluid .span8 { + width: 65.81196581196582%; + *width: 65.75877432260411%; + } + .row-fluid .span7 { + width: 57.26495726495726%; + *width: 57.21176577559556%; + } + .row-fluid .span6 { + width: 48.717948717948715%; + *width: 48.664757228587014%; + } + .row-fluid .span5 { + width: 40.17094017094017%; + *width: 40.11774868157847%; + } + .row-fluid .span4 { + width: 31.623931623931625%; + *width: 31.570740134569924%; + } + .row-fluid .span3 { + width: 23.076923076923077%; + *width: 23.023731587561375%; + } + .row-fluid .span2 { + width: 14.52991452991453%; + *width: 14.476723040552828%; + } + .row-fluid .span1 { + width: 5.982905982905983%; + *width: 5.929714493544281%; + } + .row-fluid .offset12 { + margin-left: 105.12820512820512%; + *margin-left: 105.02182214948171%; + } + .row-fluid .offset12:first-child { + margin-left: 102.56410256410257%; + *margin-left: 102.45771958537915%; + } + .row-fluid .offset11 { + margin-left: 96.58119658119658%; + *margin-left: 96.47481360247316%; + } + .row-fluid .offset11:first-child { + margin-left: 94.01709401709402%; + *margin-left: 93.91071103837061%; + } + .row-fluid .offset10 { + margin-left: 88.03418803418803%; + *margin-left: 87.92780505546462%; + } + .row-fluid .offset10:first-child { + margin-left: 85.47008547008548%; + *margin-left: 85.36370249136206%; + } + .row-fluid .offset9 { + margin-left: 79.48717948717949%; + *margin-left: 79.38079650845607%; + } + .row-fluid .offset9:first-child { + margin-left: 76.92307692307693%; + *margin-left: 76.81669394435352%; + } + .row-fluid .offset8 { + margin-left: 70.94017094017094%; + *margin-left: 70.83378796144753%; + } + .row-fluid .offset8:first-child { + margin-left: 68.37606837606839%; + *margin-left: 68.26968539734497%; + } + .row-fluid .offset7 { + margin-left: 62.393162393162385%; + *margin-left: 62.28677941443899%; + } + .row-fluid .offset7:first-child { + margin-left: 59.82905982905982%; + *margin-left: 59.72267685033642%; + } + .row-fluid .offset6 { + margin-left: 53.84615384615384%; + *margin-left: 53.739770867430444%; + } + .row-fluid .offset6:first-child { + margin-left: 51.28205128205128%; + *margin-left: 51.175668303327875%; + } + .row-fluid .offset5 { + margin-left: 45.299145299145295%; + *margin-left: 45.1927623204219%; + } + .row-fluid .offset5:first-child { + margin-left: 42.73504273504273%; + *margin-left: 42.62865975631933%; + } + .row-fluid .offset4 { + margin-left: 36.75213675213675%; + *margin-left: 36.645753773413354%; + } + .row-fluid .offset4:first-child { + margin-left: 34.18803418803419%; + *margin-left: 34.081651209310785%; + } + .row-fluid .offset3 { + margin-left: 28.205128205128204%; + *margin-left: 28.0987452264048%; + } + .row-fluid .offset3:first-child { + margin-left: 25.641025641025642%; + *margin-left: 25.53464266230224%; + } + .row-fluid .offset2 { + margin-left: 19.65811965811966%; + *margin-left: 19.551736679396257%; + } + .row-fluid .offset2:first-child { + margin-left: 17.094017094017094%; + *margin-left: 16.98763411529369%; + } + .row-fluid .offset1 { + margin-left: 11.11111111111111%; + *margin-left: 11.004728132387708%; + } + .row-fluid .offset1:first-child { + margin-left: 8.547008547008547%; + *margin-left: 8.440625568285142%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 30px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 1156px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 1056px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 956px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 856px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 756px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 656px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 556px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 456px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 356px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 256px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 156px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 56px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .nav > li > a:focus, + .nav-collapse .dropdown-menu a:hover, + .nav-collapse .dropdown-menu a:focus { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .nav > li > a:focus, + .navbar-inverse .nav-collapse .dropdown-menu a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:focus { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css new file mode 100644 index 0000000..f4ede63 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap.css b/docs/_static/bootstrap-2.3.2/css/bootstrap.css new file mode 100644 index 0000000..b725064 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap.css @@ -0,0 +1,6167 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css b/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css new file mode 100644 index 0000000..b6428e6 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover,a:focus{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover,a.muted:focus{color:#808080}.text-warning{color:#c09853}a.text-warning:hover,a.text-warning:focus{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover,a.text-error:focus{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover,a.text-info:focus{color:#2d6987}.text-success{color:#468847}a.text-success:hover,a.text-success:focus{color:#356635}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;*display:inline;padding-right:5px;padding-left:5px;*zoom:1}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{display:inline-block;margin-bottom:10px;font-size:0;white-space:nowrap;vertical-align:middle}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu,.input-append .popover,.input-prepend .popover{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:focus>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:focus>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{width:16px;background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus,.dropdown-submenu:hover>a,.dropdown-submenu:focus>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #ccc;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:focus,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover,.btn:focus{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:focus,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover,.btn-link:focus{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover,.nav-list>.active>a:focus{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover,.nav-tabs>li>a:focus{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover,.nav-tabs>.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover,.nav-pills>.active>a:focus{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover,.nav-tabs.nav-stacked>li>a:focus{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret,.nav .dropdown-toggle:focus .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover,.nav>.dropdown.active>a:focus{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover,.nav>li.dropdown.open.active>a:focus{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret,.nav li.dropdown.open a:focus .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover,.tabs-stacked .open>a:focus{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover,.tabs-below>.nav-tabs>li>a:focus{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover,.tabs-below>.nav-tabs>.active>a:focus{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover,.tabs-left>.nav-tabs>li>a:focus{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover,.tabs-left>.nav-tabs .active>a:focus{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover,.tabs-right>.nav-tabs>li>a:focus{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover,.tabs-right>.nav-tabs .active>a:focus{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover,.nav>.disabled>a:focus{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover,.navbar .brand:focus{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover,.navbar-link:focus{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn,.navbar .input-prepend .btn-group,.navbar .input-append .btn-group{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:focus,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret,.navbar .nav li.dropdown>a:focus .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover,.navbar-inverse .brand:focus,.navbar-inverse .nav>li>a:focus{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover,.navbar-inverse .navbar-link:focus{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret,.navbar-inverse .nav li.dropdown>a:focus .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>li>a:focus,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>a:focus{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover,a.thumbnail:focus{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.label:focus,a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:rgba(255,255,255,0.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png b/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png b/docs/_static/bootstrap-2.3.2/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/docs/_static/bootstrap-2.3.2/js/bootstrap.js b/docs/_static/bootstrap-2.3.2/js/bootstrap.js new file mode 100644 index 0000000..638bb18 --- /dev/null +++ b/docs/_static/bootstrap-2.3.2/js/bootstrap.js @@ -0,0 +1,2287 @@ +/* =================================================== + * bootstrap-transition.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.$jqTheme || window.jQuery); +/* ========================================================== + * bootstrap-alert.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.$jqTheme || window.jQuery); +/* ============================================================ + * bootstrap-button.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.$jqTheme || window.jQuery); +/* ========================================================== + * bootstrap-carousel.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.$jqTheme || window.jQuery); +/* ============================================================= + * bootstrap-collapse.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.$jqTheme || window.jQuery); +/* ============================================================ + * bootstrap-dropdown.js v2.3.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement) { + // if mobile we we use a backdrop because click events don't delegate + $('