code:
/** theme: neo-gnu
 *
 * @package   GNUsocial
 * @author    Samantha Doherty <sammy@status.net>
 * @modified  MeikoDis <meikodis@meikodis.org>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported
 * @link      http://gnu.io/
 */

@media screen, projection, tv {

/* general styles and layout */

body {
    /* background-color: #C6C8CC;
    background-image: url(../images/bg.png); */
    background-color: #e9eaed;
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: #222;
}

input, textarea, select, option {
    font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}

a {color: #666;}
a:hover {color: #a22430;}

abbr {border-bottom: none;}

h1 {font-size: 1.6em;}
h2 {font-size: 1.6em;}
h3 {font-size: 1.4em;}
h4 {font-size: 1.4em;}
h5 {font-size: 1.2em;}
h6 {font-size: 1em;}

#wrap {
    background: #fff url('../images/brdr_black_dot.png') repeat-x 0px 10px;
}

#header {
    padding-top: 12px;
}

#core {
    border-top: 3px solid #ccc;
    border-left: 1px solid #d8dae6;
    border-right: 1px solid #d8dae6;
}

#aside_primary_wrapper {
    background-color: #ECECF2;
}

#content_wrapper  {
    border-right: 1px solid #d8dae6;
}

#site_nav_local_views_wrapper  {
    background-color: #ECECF2;
    border-right: 1px solid #d8dae6;
}

#footer {
    top: -6px;
    -webkit-border-top-left-radius: 6px;
    -webkit-border-top-right-radius: 6px;
    -moz-border-radius-topleft: 6px;
    -moz-border-radius-topright: 6px;
    border-top-left-radius: 6px;
    border-top-right-radius: 6px;
}

/* header elements */

address img {
    max-width: 150px;
}

#site_nav_global_primary {
    top: 16px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    background: #ccc;
    background: -moz-linear-gradient(top, #666 0%, #ccc 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#666), color-stop(100%,#ccc));
    background: -webkit-linear-gradient(top, #666 0%,#ccc 100%);
    background: -o-linear-gradient(top, #666 0%,#ccc 100%);
    background: -ms-linear-gradient(top, #666 0%,#ccc 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666', endColorstr='#ccc',GradientType=0 );
    background: linear-gradient(top, #666 0%,#ccc 100%);
}

#site_nav_global_primary li {
    margin-right: 0px;
}

#site_nav_global_primary li:last-child {
    margin-right: 10px;
}

#site_nav_global_primary a {
    padding: 2px 10px 2px 10px;
    height: 20px;
    display: block;
    float: left;
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
}

#site_nav_global_primary a:hover {
    color: #fff;
    text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.5);
}

#header-search {
    top: 1px;
    margin-left: 6px;
}

#header-search #search-q {
    position: relative;
    width: 131px;
    height: 12px;
    margin-right: 10px;
    padding: 2px 22px 2px 6px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border: none;
    font-size: 0.88em;
}

#header-search input[type="submit"] {
    border: 0;
    background: url(../images/magnifier.png) no-repeat 2px 1px;
    text-indent: -9999px;
    width: 20px;
    height: 18px;
    position: absolute;
    right: 10px;
    top: 2px;
    z-index: 2;
    cursor: pointer;
}

#site_notice {
    margin: 28px 0px 0px 160px;
    padding: 2px;
    background-color: #fff;
}

/* input forms */

.input_forms {
    float: left;
    top: -20px;
    left: -20px;
    padding: 18px 20px 0px 20px;
    border-bottom: none;
    margin-bottom: 0px;
    background: #fafafa url('../images/brdr_black_dot.png') repeat-x bottom left;
}

#input_form_nav li a {
    display: block;
    float: left;
    padding: 0px 10px 1px 10px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    border: 1px solid #ECECF2;
    font-weight: bold;
    line-height: 1.4em;
    color: #666;
    text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.9);
    background: #ececf2;
    background: -moz-linear-gradient(top, #ffffff 0%, #ececf2 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#ececf2));
    background: -webkit-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    background: -o-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    background: -ms-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ececf2',GradientType=0 );
    background: linear-gradient(top, #ffffff 0%,#ececf2 100%);
}

#input_form_nav li:hover a, #input_form_nav li.current a {
    color: #fff;
    text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.5);
    border: 1px solid #ececf2;
    background: #ccc;
    background: -moz-linear-gradient(top, #666 0%, #ccc 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#666), color-stop(100%,#ccc));
    background: -webkit-linear-gradient(top, #666 0%,#ccc 100%);
    background: -o-linear-gradient(top, #666 0%,#ccc 100%);
    background: -ms-linear-gradient(top, #666 0%,#ccc 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666', endColorstr='#ccc',GradientType=0 );
    background: linear-gradient(top, #7b8dbb 0%,#ccc 100%);
}

.input_form_nav_tab a, .input_form_nav_tab.current a {
    text-decoration: none;
}

.input_form fieldset fieldset label {
    background: none;
}

.form_notice .error,
.form_notice .success,
.form_notice .notice-status {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
}

.form_notice_placeholder .placeholder,
.form_notice textarea ,
.input_form .form_settings li input,
.input_form .form_settings li textarea,
.threaded-replies .placeholder { /* TODO combine all these declarations */
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

.input_form .form_settings .submit {
    font-size: 1.1em;
}

/* site nav local views */

#site_nav_local_views H3 {
    margin-bottom: 10px;
    padding-bottom: 6px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
    color: #7a7c87;
    font-size: 1.1em;
    letter-spacing: 2px;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

#site_nav_local_views a {
    display: block;
    width: 118px;
    padding: 0px 10px 1px 10px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    text-transform: uppercase;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    word-wrap: break-word;
}

#site_nav_local_views a:hover, #site_nav_local_views .current a {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #ccc;
    background: -moz-linear-gradient(top, #666 0%, #ccc 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#666), color-stop(100%,#ccc));
    background: -webkit-linear-gradient(top, #666 0%,#ccc 100%);
    background: -o-linear-gradient(top, #666 0%,#ccc 100%);
    background: -ms-linear-gradient(top, #666 0%,#ccc 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666', endColorstr='#ccc',GradientType=0 );
    background: linear-gradient(top, #666 0%,#ccc 100%);
}

/* aside primary */

#aside_primary .section {
    font-size: 0.88em;
}

#aside_primary h2 {
    margin-bottom: 10px;
    padding-bottom: 6px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
    color: #7a7c87;
    font-size: 1.25em;
    letter-spacing: 2px;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

.profile_block .entity_actions {
    float: right;
    width: 110px;
    margin-top: 2px;
    margin-bottom: 2px;
}

.profile_block .entity_moderation:hover ul,
.profile_block .entity_role:hover ul {
    right: 20px;
}

.profile_block_name {
    font-size: 14px;
    font-weight: bold;
}

.profile_block_location {
    font-weight: bold;
}

.profile_block_description {
    line-height: 1.2em;
}

#site_nav_object ul {
    background: url('../images/brdr_black_dot.png') repeat-x top left;
}

#site_nav_object li {
    display: block;
    margin: -8px 0px 8px 0px;
    padding-top: 8px;
}

#site_nav_object a {
    font-size: 14px;
    display: block;
    padding: 0px 0px 1px 10px;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    text-transform: uppercase;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

#site_nav_object a:hover, #site_nav_object .current a {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #ccc;
    background: -moz-linear-gradient(top, #666 0%, #ccc 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#666), color-stop(100%,#ccc));
    background: -webkit-linear-gradient(top, #666 0%,#ccc 100%);
    background: -o-linear-gradient(top, #666 0%,#ccc 100%);
    background: -ms-linear-gradient(top, #666 0%,#ccc 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666', endColorstr='#ccc',GradientType=0 );
    background: linear-gradient(top, #666 0%,#ccc 100%);
}

.section ul.entities {
    width: 240px;
}

.section .entities li {
    margin-right: 3.6px;
    margin-bottom: 5px;
    width: 24px;
}

#popular_notices .avatar {
    position: relative;
    top: 4px;
    margin-bottom: 6px;
}

#aside_primary td {
    padding-right: 20px;
    padding-bottom: 14px;
}

#aside_primary td .nickname {
    line-height: 1.6em;
}

.section .avatar {
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
    -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
}

.invite_button {
    height: 2.1em;
    line-height: 2.1em;
    display: block;
    text-align: center;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.2em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #c33541;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background: #a22430;
    background: -moz-linear-gradient(top, #a22430 0%, #c33541 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a22430), color-stop(100%,#c33541));
    background: -webkit-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -o-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -ms-linear-gradient(top, #a22430 0%,#c33541 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a22430', endColorstr='#c33541',GradientType=0 );
    background: linear-gradient(top, #a22430 0%,#c33541 100%);
}

.invite_button:hover {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #a22430;
    background: -moz-linear-gradient(top, #c33541 0%, #d44652 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c33541), color-stop(100%,#d44652));
    background: -webkit-linear-gradient(top, #a22430 0%,#d44652 100%);
    background: -o-linear-gradient(top, #a22430 0%,#d44652 100%);
    background: -ms-linear-gradient(top, #a22430 0%,#d44652 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a22430', endColorstr='#d44652',GradientType=0 );
    background: linear-gradient(top, #a22430 0%,#d44652 100%);

}

/* notices etc */

#content h1 {
    border-bottom: 3px solid #A6ADBF;
    color: #A6ADBF;
    font-size: 1.4em;
    letter-spacing: 4px;
    text-transform: none;
}

#content .notice {
    padding-bottom: 4px;
    border-bottom: 2px dotted #eee;
}

.notice div.entry-content {
    font-size: 0.88em;
    line-height: 1.2em;
    margin-top: 6px;
    opacity: 0.6;
}

.notice:hover div.entry-content {
    opacity: 1;
}

.user_in .notice div.entry-content {
    max-width: 440px;
}

div.entry-content a.response:before {
	content: "(";
}

div.entry-content a.response:after {
	content: ")";
}

.notice-options {
    margin-top: 4px;
}

.notice-options .form_repeat.dialogbox {
    margin-right: 0px;
    border: 1px solid #aaa;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
}

.notice-options .form_repeat.dialogbox legend {
    padding-top: 10px;
}

#content .threaded-replies .notice .author .photo {
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
    -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
}

.user_in.realtime-popup .notice div.entry-content {
    max-width: 320px;
}

.realtime-popup .threaded-replies {
    margin-left: 15px;
}

.realtime-popup .threaded-replies .form_notice textarea {
    width: 385px !important;
}

.realtime-popup .threaded-replies .form_notice label.notice_data-attach {
    top: 10px !important;
    right: 10px !important;
}

.pagination {
    height: 1.2em;
}

.entity_profile {
    float: left;
    width: 360px;
    margin-top: 4px;
}

.entity_profile .entity_depiction {
    margin-top: 4px;
}

.entity_actions {
    width: 140px;
    margin-top: 8px;
    margin-bottom: 10px;
}

.entity_actions a, .entity_actions p, .entity_actions .entity_subscribe input, .entity_actions .entity_block input, .entity_actions .entity_moderation input, .entity_actions .entity_role input, .entity_actions .entity_nudge input, .entity_actions .entity_delete input, .entity_actions input.submit {
   	text-shadow:0 1px 0 rgba(255,255,255,0.4);
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background-color: #CDD1DD !important;
}

.entity_moderation:hover ul,
.entity_role:hover ul {
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
}

.entity_send-a-message .form_notice legend {
   	text-shadow:0 1px 0 rgba(255,255,255,0.4);
}

.entity_send-a-message .form_notice {
    border: 1px solid #7B4E82;
}

.entity_send-a-message .form_notice #notice_action-submit {
    color: #fff !important;
    top: 46px;
}

.entity_subscribe .dialogbox, .entity_tag .dialogbox {
    border: 1px solid #aaa;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
}

.entity_subscribe .dialogbox input.submit_dialogbox, .entity_tag .dialogbox input.submit_dialogbox {
    color: #fff !important;
}

#filter_tags_item .submit {
  left: 6px;
  top: -3px;
}

#pagination {
    height: 1.2em;
    padding-bottom: 12px;
    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    border-radius: 6px;
}

#pagination a {
    color: #666;
}

#footer a {
    color: #666;
}

#site_nav_global_secondary {
    margin-bottom: 10px;
}

.error, .success, .notice-status {
    -webkit-border-radius: 6px;
    -moz-border-radius: 6px;
    border-radius: 6px;
}

.form_notice input.submit, .form_settings input.submit, .form_settings input.cancel, #form_invite input.submit,
.entity_subscribe .dialogbox input.submit_dialogbox,
.entity_tag .dialogbox input.submit_dialogbox,
.form_repeat.dialogbox input.submit_dialogbox
{ /* TODO combine all these declarations */
    height: 1.9em;
    padding: 0px 10px;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.2em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #c33541;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background: #a22430;
    background: -moz-linear-gradient(top, #a22430 0%, #c33541 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a22430), color-stop(100%,#c33541));
    background: -webkit-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -o-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -ms-linear-gradient(top, #a22430 0%,#c33541 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a22430', endColorstr='#c33541',GradientType=0 );
    background: linear-gradient(top, #a22430 0%,#c33541 100%);
}

.form_notice input.submit:hover, .form_settings input.submit:hover, .form_settings input.cancel:hover, #form_invite input.submit:hover,
.entity_subscribe .dialogbox input.submit_dialogbox:hover,
.entity_tag .dialogbox input.submit_dialogbox:hover,
.form_repeat.dialogbox input.submit_dialogbox:hover
{
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #a22430;
    background: -moz-linear-gradient(top, #c33541 0%, #d44652 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c33541), color-stop(100%,#d44652));
    background: -webkit-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -o-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -ms-linear-gradient(top, #c33541 0%,#d44652 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c33541', endColorstr='#d44652',GradientType=0 );
    background: linear-gradient(top, #c33541 0%,#d44652 100%);
}

.form_settings input#cancel, #form_action-no {
    background: #f2f2f2;
    color: #c33541;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.form_settings input#cancel:hover, #form_action-no:hover {
    background: #fff;
    color: #c33541;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.form_settings fieldset fieldset {
    margin-bottom: 30px;
    padding-top: 25px;
}

#invite #content p {
    margin-bottom: 15px;
}

#invite #content ul {
    list-style-type: none;
    margin-bottom: 25px;
    margin-left: 25px;
}

#invite #content li {
    background: url(../images/resultset_next.png) no-repeat 0px 3px;
    padding-left: 20px;
    margin-bottom: 10px;
}

#invite #content #form_invite ul, #invite #content #form_invite li {
    margin-left: 0px;
    padding-left: 0px;
    background: none;
}

#form_invite input[type=text], #form_invite textarea {
    width: 250px;
    padding: 5px;
    border: 1px solid #a6a6a6;
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

#form_invite textarea {
    clear: left;
    width: 508px;
    height: 48px;
}

#form_invite a.add_row, #form_invite a.remove_row {
    display: block;
    height: 16px;
    width: 16px;
    overflow: hidden;
    background-image: url('../../base/images/icons/icons-01.gif');
    background-repeat: no-repeat;
}

#form_invite a.remove_row {
    background-position: 0px -1252px;
    display: inline-block;
    position: relative;
    top: 4px;
    left: 10px;
    line-height: 4em;
}

#form_invite a.add_row {
    clear: both;
    position: relative;
    top: 10px;
    background-position: 0px -1186px;
    width: 120px;
    padding-left: 20px;
    line-height: 1.2em;
}

#form_invite label[for=personal] {
    display: block;
    margin-top: 25px;
}

#content thead th {
text-align:left;
}
#content tbody th {
vertical-align:top;
text-align:left;
font-weight:normal;
padding-top:11px;
padding-right:18px;
}
#content tbody tr {
    border-top: 1px dotted #bbb;
}
#content td {
padding:11px 18px 11px 0;
vertical-align:top;
}
#content td:last-child {
padding-right:0;
}

/* Search */

#form_search {
    padding-bottom: 10px;
    margin-bottom: 20px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
}

#form_search fieldset {
    margin-bottom: 0px;
}

#form_search ul.form_data #q {
    margin-left: 10px;
    width: 210px;
}

#form_search input.submit {
    height: 1.6em;
    line-height: 1.6em;
    font-size: 1.1em;
    padding-bottom: 2px;
    margin-left: 5px;
}

#noticesearch .entity_actions {
    margin: 0px;
}

#noticesearch p.error {
    margin-top: 60px;
}

/* Limited-scope */

.limited-scope .entry-content .timestamp {
    padding-left: 20px;
    position: relative;
}

.limited-scope .entry-content .timestamp:before {
    content: url(../images/lock.png);
    position: absolute;
    top: -2px;
    left: 0px;
}

.limited-scope li .entry-content .timestamp {
    padding-left: 0px;
}

.limited-scope li .entry-content .timestamp:before {
    content: none;
}

.limited-scope li.limited-scope .entry-content .timestamp {
    padding-left: 20px;
}

.limited-scope li.limited-scope .entry-content .timestamp:before {
    content: url(../images/lock.png);
    position: absolute;
    top: -2px;
    left: 0px;
}

/* Blog */

label[for=blog-entry-content] {
    display: none !important;
}

#input_form_blog td {
    padding-top: 0px;
    padding-bottom: 0px;
}

#input_form_blog td.mceToolbar {
    padding-top: 4px;
}

h4.blog-entry-title {
    margin-bottom: 8px;
    line-height: 1.2em;
}

/* Bookmark specific styles */
/* TODO separate base styles and move to plugin */

.bookmark h3 {
    margin: 0px 0px 8px 0px;
    float: left;
    line-height: 1.2em;
    max-width: 92%;
}

.bookmark-notice-count {
    border-radius: 4px;
	-moz-border-radius: 4px;
	-webkit-border-radius: 4px;
    padding: 1px 6px;
    font-size: 1.2em;
    line-height: 1.2em;
    background: #fff;
    border: 1px solid #7b8dbb;
    color: #666 !important;
    position: relative;
    right: 4px;
    margin-left: 10px;
}

.bookmark-notice-count:hover {
    text-decoration: none;
    background: #f2f2f2;
    border: 1px solid #7b8dbb;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.notice .bookmark-description {
    clear: both;
    margin-left: 0px;
    margin-bottom: 0px;
}

.notice .bookmark-author {
    margin-left: 0px;
    float: left;
}

.bookmark-tags {
    clear: both;
    margin-bottom: 8px;
    line-height: 1.6em;
}

ul.bookmark-tags a {
    border-radius: 4px;
	-moz-border-radius: 4px;
	-webkit-border-radius: 4px;
    padding: 1px 6px;
    background: #f2f2f2;
    color: #666 !important;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    font-size: 0.88em;
}

ul.bookmark-tags a:hover {
    background-color: #cdd1dd;
    text-decoration: none;
}

.bookmark-avatar {
    float: none !important;
    position: relative;
    top: 2px;
}

.bookmark div.entry-content {
    font-size: 0.88em;
    line-height: 1.2em;
    margin-top: 6px;
    opacity: 0.6;
    margin-bottom: 0px;
}

.bookmark:hover div.entry-content {
    opacity: 1;
}

#bookmarkpopup {
    min-width: 600px;
    margin-top: 0px;
    height: 100%;
    border: 10px solid #364A84;
    background: #364A84;
}

#bookmarkpopup #wrap {
    width: auto;
    min-width: 560px;
    padding: 40px 0px 25px 0px;
    margin-right: 2px;
    background: #fff url(../mobilelogo.png) no-repeat 6px 6px;
}

#bookmarkpopup #header {
    width: auto;
    padding: 0px 10px;
}

#bookmarkpopup .form_settings label {
    margin-top: 2px;
    text-align: right;
    width: 24%;
    font-size: 1.2em;
}

#bookmarkpopup .form_settings .form_data input {
    width: 60%;
}

#bookmarkpopup .form_guide {
    color: #777;
}

#bookmarkpopup #bookmark-submit {
    min-width: 100px;
}

#bookmarkpopup fieldset fieldset {
    margin-bottom: 10px;
}

#form_initial_bookmark.form_settings .form_data li {
    margin-bottom: 0px;
}

#form_new_bookmark.form_settings .bookmarkform-thumbnail {
    position: absolute;
    top: 50px;
    right: 0px;
}

/* Onboard specific styles */
/* TODO move to plugin */

#cboxOverlay{
    background: url(../images/lightbox_bg.png) repeat 0 0 !important;
}

#cboxContent{
    background: #fff url(../logo.png) no-repeat 10px bottom !important;
}

.onboard_iframe {
    background: none;
    padding: 10px;
}

.onboard_iframe #wrap {
    width: auto;
    background: none;
}

.onboard_welcome p {
    margin-bottom: 10px;
}

.onboard_welcome ul {
    list-style-type: none;
    margin-bottom: 10px;
}

.onboard_welcome ul li {
    background: url(../images/resultset_next.png) no-repeat 0px 3px;
    padding-left: 20px;
    margin-left: 10px;
}

#aside_primary #onboard_section {
    background: #f2f2f2;
    width: 196px;
    padding: 10px;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border: 1px solid #516499;
    background: #fafafa;
}

#onboard_section H2 {
    -webkit-border-top-left-radius: 4px;
    -moz-border-radius-topleft: 4px;
    border-top-left-radius: 4px;
    -webkit-border-top-right-radius: 4px;
    -moz-border-radius-topright: 4px;
    border-top-right-radius: 4px;
    position: relative;
    top: -11px;
    left: -11px;
    padding: 2px 0px 2px 10px;
    margin-right: -22px;
    margin-bottom: 5px;
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #ccc;
    background: -moz-linear-gradient(top, #666 0%, #ccc 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#666), color-stop(100%,#ccc));
    background: -webkit-linear-gradient(top, #666 0%,#ccc 100%);
    background: -o-linear-gradient(top, #666 0%,#ccc 100%);
    background: -ms-linear-gradient(top, #666 0%,#ccc 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#666', endColorstr='#ccc',GradientType=0 );
    background: linear-gradient(top, #666 0%,#ccc 100%);
}

#onboard_section ul {
    list-style-type: none;
}

#onboard_section .onboard-step-incomplete {
    background: url(../images/resultset_next.png) no-repeat 0px 1px;
    padding-left: 20px;
    margin-bottom: 10px;
}

#onboard_section .onboard-step-complete {
    background: url(../images/tick.png) no-repeat 0px 1px;
    padding-left: 20px;
    margin-bottom: 10px;
    text-decoration: line-through;
    color: #555;
}

/* Billing specific styles */
/* TODO move to plugin */

#content table.billing_info {
    margin-top: 10px;
    background:rgba(240, 240, 240, 0.4);
}

#content table.billing_info th {
    text-align: right;
    width: 50%;
}

.invalid {
    border: solid 2px red !important;
}

#payment_history table {
    width: 100%;
}

#billingadminpanel .form_settings input {
    margin-right: 0px;
}

/* Directory specific styles */
/* TODO separate base styles and move to plugin */

div#profile_directory div.alpha_nav > a {
    border-left: 1px solid #ccc !important;
    padding-left: 3.5px !important;
    padding-right: 4px !important;
    margin-right: 0px;
    float: left;
    line-height: 1.4em;
}

div#profile_directory div.alpha_nav > a.first {
    border-left: none !important;
}

div#profile_directory div.alpha_nav a.current {
    background-color: #ECECF2 !important;
}

table.profile_list {
    margin-top: 25px;
}

.profile_list th {
    font-size: 0.8em;
}

.profile_list th#created {
    width: 100px;
}

.profile_list th#subscriptions {
    width: 90px;
}

.profile_list th.current {
        background: none !important;
}

.profile_list th.current.reverse {
        background: none !important;
}

.profile_list th.current a {
        padding-right: 25px;
        background: url(../images/bluearrow_down.png) no-repeat top right;
}

.profile_list th.current.reverse a {
        background: url(../images/bluearrow_up.png) no-repeat top right;
}

table.profile_list tr.alt {
    background-color: #fafafa !important;
    border: none !important;
}

td.entity_profile {
    width: auto;
    min-width: 250px;
}

.profile_list .fn {
    display: block;
    font-size: 1.1em;
    width: auto;
}

.profile_list .nickname, .profile_list .fn.nickname {
    position: relative;
    top: -8px;
    display: block;
    margin-bottom: -12px;
    font-size: 1.4em;
}

.profile_list .label {
    display: block;
    margin-left: 59px !important;
}

.profile_list .note {
    font-size: 0.88em;
    line-height: 1.36em;
}

.profile_list .entry_created, .profile_list .entry_subscriber_count, .profile_list .entry_notice_count {
    font-size: 0.88em;
}

.profile_list td.entity_actions {
    width: 24px;
    max-width: 24px;
    min-width: 24px;
    height: 20px;
    padding-left: 6px !important;
    position: relative;
    float: none;
    display: table-cell !important;
}

.profile_list .entity_actions ul {
    position: absolute;
    right: 20px;
}

.profile_list .entity_actions input {
    width: 22px;
    height: 22px;
    padding-top: 1px;
    padding-right: 0px;
    padding-left: 20px;
    display: block;
    overflow: hidden;
    font-size: 0em;
    border: 1px solid #CDD1DD;
}

.profile_list .form_group_leave input.submit,
.profile_list .form_user_unsubscribe input.submit {
    background-position: 2px -1250px;
}

.profile_list .form_group_join input.submit,
.profile_list .form_user_subscribe input.submit {
    background-position: 2px -1184px;
}

.profile_list .entity_actions input:hover {
    width: auto;
    padding-right: 10px;
    overflow: visible;
    font-size: 1em;
    line-height: 1.3em;
    border: 1px solid #A6ADBF;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

/* Event specific styles */
/* TODO separate base styles and move to plugin */

.notice .vevent div {
    margin-bottom: 8px;
}

.event-info {
    margin-left: 0px !important;
    margin-top: 2px !important;
}

.notice .event-info + .notice-options {
    margin-top: 14px;
}

.notice .threaded-replies .event-info + .notice-options {
    margin-top: 20px;
}

#form_event_rsvp #new_rsvp_data {
    display: inline;
    margin: 10px 0px;
}

#form_event_rsvp input.submit {
    height: auto;
    padding: 0px 10px;
    margin-left: 10px;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.1em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #c33541;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background: #a22430;
    background: -moz-linear-gradient(top, #a22430 0%, #c33541 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a22430), color-stop(100%,#c33541));
    background: -webkit-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -o-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -ms-linear-gradient(top, #a22430 0%,#c33541 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a22430', endColorstr='#c33541',GradientType=0 );
    background: linear-gradient(top, #a22430 0%,#c33541 100%);
}

#form_event_rsvp input.submit:hover {
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #a22430;
    background: -moz-linear-gradient(top, #c33541 0%, #d44652 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c33541), color-stop(100%,#d44652));
    background: -webkit-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -o-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -ms-linear-gradient(top, #c33541 0%,#d44652 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c33541', endColorstr='#d44652',GradientType=0 );
    background: linear-gradient(top, #c33541 0%,#d44652 100%);
}

#wrap .vevent form.processing input.submit {
    text-indent: 0;
    background: #a22430;
}

#input_form_event .form_settings .form_data {
    float: left;
}

#input_form_event .form_settings .form_data li {
    float: left;
    width: auto;
}

#input_form_event .form_settings .form_data label {
    width: auto;
}

label[for=event-starttime], label[for=event-endtime] {
    display: none !important;
}

#event-starttime, #event-endtime {
    margin-top:  -1px;
    margin-bottom:  -1px;
    height: 2em;
}

#event-startdate, #event-enddate {
    margin-right: 20px;
    width: 120px;
}

/* QnA */

.question div.question-description {
    font-size: 1em;
    line-height: 1.36em;
    margin-top: 0px;
    opacity: 1;
}

.question div.answer-content, .qna-full-question div.answer-content {
    font-size: 1em;
    opacity: 1;
}

.qna-dummy-placeholder input, .question #qna-answer, .qna-full-question #qna-answer {
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
    -webkit-box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

.question-description input.submit, .answer-content input.submit {
    height: auto;
    padding: 0px 10px;
    margin: 6px 0px 10px 0px;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.1em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #c33541;
    border-radius: 4px;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    background: #a22430;
    background: -moz-linear-gradient(top, #a22430 0%, #c33541 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#a22430), color-stop(100%,#c33541));
    background: -webkit-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -o-linear-gradient(top, #a22430 0%,#c33541 100%);
    background: -ms-linear-gradient(top, #a22430 0%,#c33541 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a22430', endColorstr='#c33541',GradientType=0 );
    background: linear-gradient(top, #a22430 0%,#c33541 100%);
}

#qna-answer-submit {
    min-width: 100px;
}

.question .question-description input.submit:hover, .question .answer-content input.submit:hover {
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #a22430;
    background: -moz-linear-gradient(top, #c33541 0%, #d44652 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#c33541), color-stop(100%,#d44652));
    background: -webkit-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -o-linear-gradient(top, #c33541 0%,#d44652 100%);
    background: -ms-linear-gradient(top, #c33541 0%,#d44652 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c33541', endColorstr='#d44652',GradientType=0 );
    background: linear-gradient(top, #c33541 0%,#d44652 100%);
}

.question .question-description #answer-form input.submit {
    margin-top: 0px;
}

.question p.best, .answer p.best {
    background: url(../images/rosette.png) no-repeat top left;
    padding-left: 20px;
}

.question p.best:before, .answer p.best:before {
    content: none !important;
}

/* Poll specific styles */

.notice div.poll-content {
    opacity: 1;
}

#poll-response-submit {
    min-width: 100px;
}

/* SNOD CompanyLogo styling */
/* TODO move to plugin */

#site_nav_local_views a.company_logo {
    width: 138px;
    padding: 0px;
    font-weight: bold;
    text-transform: none;
    line-height: 1em;
    margin-bottom: 0px;
    position: relative;
    top: -4px;
}

#site_nav_local_views a.company_logo:hover {
    background: none;
    color: blue;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.company_logo img {
    max-width: 138px;
    margin-bottom: 4px;
}

.company_logo span {
    display: block;
}

a.company_logo:hover span {
    text-decoration: underline;
}

}/*end of @media screen, projection, tv*/


code:
body {
    background-image: none;
    min-width: 0;
}

#header {
    padding: 0;
}

#site_nav_global_primary {
    top: 0;
    -webkit-border-top-right-radius: 0px;
    -moz-border-radius-topright: 0px;
    border-top-right-radius: 0px;
    line-height: 16px;
}

#site_nav_global_primary li {
    float: left;
    margin-right: 8px;
}

#site_nav_local_views {
    line-height: 2em;
}

#site_nav_local_views h3 {
    color: #333;
    background: none;
    text-transform: none;
    letter-spacing: 0;
    padding-bottom: 0;
}

#site_nav_local_views li li {
    margin: 0 6px 6px 0;
}

#login #site_nav_local_views li, #register #site_nav_local_views li, #openidlogin #site_nav_local_views li {
    margin: 0 6px 6px 0;
}

#site_nav_local_views a {
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);;
    background: #364a84;
    background: -moz-linear-gradient(top, #7b8dbb , #364a84);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
    font-size: 0.9em;
    width: auto;
}

#site_nav_local_views a:hover {
    background: #7b8dbb;
    background: -moz-linear-gradient(top, #364a84 , #7b8dbb);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#364a84), color-stop(100%,#7b8dbb));
}

.input_forms {
    top: -10px;
    padding-right: 0;
}

#input_form_nav li a {
    padding: 0px 4px 1px 4px;
}

.form_notice .count {
    top: 44px;
    left: 276px;
}

#form_notice-direct.form_notice .count {
    top: 74px;
    left: 276px;
}

#event-startdate, #event-starttime, #event-enddate, #event-endtime {
    width: 120px;
    margin-right: 12px;
}

.input_form .form_settings .submit {
    font-size: 1em;
}

.form_notice input.submit {
    font-size: 1em;
}

.question div.question-description {
    max-width: 100% !important;
}

ul.qna-dummy {
    width: 80%;
}

.qna-dummy-placeholder input {
    width: 92%;
}

.question #qna-answer, .qna-full-question #qna-answer {
    width: 220px;
}

.threaded-replies #answer-form fieldset {
    width: 220px;
}

.threaded-replies #qna-answer-submit {
    float: left;
    clear: left;
    position: relative;
    top: 0;
    bottom: 0px;
    left: 0;
    margin-top: 10px;
}

a.company_logo {
    display: none !important;
}

repo_name: piratas/tortuga

license: mit


code:
/** theme: neo
 *
 * @package   StatusNet
 * @author    Osama Khalid <osamak@gnu.org>
 * @copyright Osama Khalid
 * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported
 * @link      http://status.net/
 */

body {
    direction: rtl;
}

span.rtl{
    direction: rtl !important;
}

#content .notice .entry-title{
    direction: ltr;
}

.form_notice textarea{
    direction: ltr;
}

#site_nav_global_primary ul{
    float: left;
}

.notice div.entry-content {
    float: right;
    clear: right;
}

#content .notice .threaded-replies .notice div.entry-content{
    clear: right;
    float: right;
}

#content h1{
    font-weight: bold;
    letter-spacing: 0;
}

.threaded-replies {
    border-right: 3px solid #ECECF2;
    border-left: 0;
    margin-right: 59px;
    margin-left: 0;
}

address{
    float: right;
}

#site_nav_global_primary {
    left: 0;
    right: auto;
}

.input_form .form_settings .submit{
    float: left;
}

.input_form .form_settings fieldset fieldset{
    float: right;
}

.input_form fieldset fieldset label{
    right: 6px;
    text-align: right;
}

#input_form_event .form_settings .form_data li{
    float: right;
}

.notice .author {
    direction: rtl;
    float: right;
    margin-left: 8px;
    margin-right: 0;
}

.section .notice .author {
    margin-left: 0;
}

.notice p.entry-content {
    float: left;
}

.threaded-replies .form_notice #notice_action-submit {
    right: 10px;
}

.form_notice input.submit{
    float: right;
}

#export_data li a{
    padding-right: 30px;
    padding-left: 0;
/*    background-position: right center; */
}

#content .notice .threaded-replies .notice .entry-title{
    margin: 2px 35px 0 7px;
}

#content .notice .entry-title {
    margin: 2px 59px 0 7px;
}

#content .notice .author .photo{
    right: 0;
    left: auto;
}

.notice-options{
    float: left;
}

.notice div.entry-content {
    margin-right: 59px;
    margin-left: 0;
}

#core .vcard .photo {
    margin-left: 11px;
    margin-right: 0;
}

.threaded-replies .notice-reply-comments {
    margin: 2px 10px 4px 0;
}

#shownotice .notice div.entry-content {
    margin-right: 0;
}

.notice .addressees:before {
    content: '\25C2';
}

#content thead th {
    text-align: right;
}

.profile_list th.current a {
    background-position: left top;
    padding-left: 25px;
}

.form_settings .form_data textarea, .form_settings .form_data select, .form_settings .form_data input {
    float: right;
    margin-right: 1.795%;
}

.form_settings .form_data label {
    float: right;
}

.form_settings label {
    text-align: left;
}

#form_search input.submit {
    margin-right: 5px;
}

#site_nav_local_views H3{
    font-weight: bold;
    letter-spacing: 0;
}

#aside_primary h2{
    font-weight: bold;
    letter-spacing: 0;
}

.form_settings label[for="notice_to"] {
    margin-left: 10px;
    margin-right: 0;
}

select {
    padding-left: 10px;
}

#input_form_nav li a {
    float: right;
}

#content table.extended-profile td {
    padding-left: 0 !important;
    padding-right: 8px !important;
}

.experience-item, .education-item {
    float: right;
}

#site_nav_global_primary a {
    float: right;
}

.form_settings .form_data p.form_guide {
    margin-right: 27%;
}

.form_settings label.checkbox {
    text-align: right;
}

.form_settings label.checkbox, .form_settings label.radio {
    left: 0;
    right: -25px;
}

.form_settings input.checkbox, .form_settings input.radio {
    margin-right: 25%;
    margin-left: 20px;
    right: -14px;
    left: 0;
}

.form_settings input {
    margin-left: 20px;
}

.form_settings .form_data li {
    float: right;
}

#header-search {
    float: left;
}

#header-search input[type="submit"] {
    left: 0;
    right: auto;
}

#avatarfile {
    width: 100%;
}

.form_settings .checkbox-wrapper label.checkbox {
    right: -3px;
    left: auto;
}

.checkbox-wrapper.unchecked label.checkbox, .checkbox-wrapper.checked label.checkbox {
    padding-right: 20px;
    padding-left: 0;
    background-position: right center;
}

.input_form .form_settings .form_data p.form_guide {
    margin-right: 5px;
    margin-left: 27%;
}

.experience-item, .education-item {
    float: right !important;
}

.profile_block .entity_actions {
    float: left;
}

.profile .entity_profile .fn, .profile .entity_profile .label {
    margin-right: 11px;
    margin-left: 0;
}

#core .vcard .photo {
    float: right;
}

.profile_list .label {
    margin-right: 59px !important;
}

.profile .entity_profile .note, .profile .entity_profile .url, .profile .entity_profile .entity_tags, .profile .entity_profile .form_subscription_edit {
    margin-right: 59px;
    margin-left: 0;
}

.profile_list .entity_actions ul {
    left: 20px;
    right: auto;
}

.entity_actions input.submit {
   text-align: right;
}

#entity_statistics dt, #entity_statistics dd {
    margin-left: 11px;
    margin-right: 0;
}

#showstream .notice .entry-title, #showstream .notice div.entry-content {
    margin-right: 0;
}

.limited-scope .entry-content .timestamp:before {
    right: 0;
    left: auto;
}

.limited-scope .entry-content .timestamp {
    padding-left: 0;
    padding-right: 20px;
}

.section ul.entities {
    float: right;
}

.section .entities li {
    float: right;
}


code:
/** theme: neo-light
 *
 * @package   StatusNet
 * @author    Samantha Doherty <sammy@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported
 * @link      http://status.net/
 */

@media screen, projection, tv {

body {
    background: #f0f2f5;
}

#wrap {
    background-color: #f0f2f5;
    border: none;
}

#aside_primary_wrapper {
    background-color: #fafafa;
}

#content_wrapper  {
    border-right: 1px solid #fff;
}

#site_nav_local_views_wrapper  {
    background-color: #fafafa;
    border-right: 1px solid #fff;
}

#site_notice {
    background: #fff;
}

.input_forms {
    background-color: #fff;
    left: 0px;
    padding: 18px 0px 0px 0px;
}

}/*end of @media screen, projection, tv*/


code:
/* copy of mp-screen.css from neo theme */

body {
    background-image: none;
    min-width: 0;
}

#header {
    padding: 0;
}

#site_nav_global_primary {
    top: 0;
    -webkit-border-top-right-radius: 0px;
    -moz-border-radius-topright: 0px;
    border-top-right-radius: 0px;
    line-height: 16px;
}

#site_nav_global_primary li {
    float: left;
    margin-right: 8px;
}

#site_nav_local_views {
    line-height: 2em;
}

#site_nav_local_views h3 {
    color: #333;
    background: none;
    text-transform: none;
    letter-spacing: 0;
    padding-bottom: 0;
}

#site_nav_local_views li li {
    margin: 0 6px 6px 0;
}

#login #site_nav_local_views li, #register #site_nav_local_views li, #openidlogin #site_nav_local_views li {
    margin: 0 6px 6px 0;
}

#site_nav_local_views a {
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);;
    background: #364a84;
    background: -moz-linear-gradient(top, #7b8dbb , #364a84);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
    font-size: 0.9em;
    width: auto;
}

#site_nav_local_views a:hover {
    background: #7b8dbb;
    background: -moz-linear-gradient(top, #364a84 , #7b8dbb);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#364a84), color-stop(100%,#7b8dbb));
}

.input_forms {
    top: -10px;
    padding-right: 0;
}

#input_form_nav li a {
    padding: 0px 4px 1px 4px;
}

.form_notice .count {
    top: 44px;
    left: 276px;
}

#form_notice-direct.form_notice .count {
    top: 74px;
    left: 276px;
}

#event-startdate, #event-starttime, #event-enddate, #event-endtime {
    width: 120px;
    margin-right: 12px;
}

.input_form .form_settings .submit {
    font-size: 1em;
}

.form_notice input.submit {
    font-size: 1em;
}

.question div.question-description {
    max-width: 100% !important;
}

ul.qna-dummy {
    width: 80%;
}

.qna-dummy-placeholder input {
    width: 92%;
}

.question #qna-answer, .qna-full-question #qna-answer {
    width: 220px;
}

.threaded-replies #answer-form fieldset {
    width: 220px;
}

.threaded-replies #qna-answer-submit {
    float: left;
    clear: left;
    position: relative;
    top: 0;
    bottom: 0px;
    left: 0;
    margin-top: 10px;
}

a.company_logo {
    display: none !important;
}


code:
Neo Quitter
==========================================

* Author:    Hannes Mannerheim (<h@nnesmannerhe.im>)
* Last mod.: Oct, 2014
* Version:   1
* GitHub:    <https://github.com/hannesmannerheim/neo-quitter>

Neo Quitter is free  software:  you can  redistribute it  and / or  modify it
under the  terms of the GNU Affero General Public License as published by
the Free Software Foundation,  either version three of the License or (at
your option) any later version.

Neo Quitter is distributed  in hope that  it will be  useful but  WITHOUT ANY
WARRANTY;  without even the implied warranty of MERCHANTABILTY or FITNESS
FOR A PARTICULAR PURPOSE.  See the  GNU Affero General Public License for
more details.

You should have received a copy of the  GNU Affero General Public License
along with Neo Quitter. If not, see <http://www.gnu.org/licenses/>.

About
-----

Neo Quitter is based Neo, the standard theme for GNU Social.

Setup
-----

1. Add the directory neo-quitter to your /theme/ folder

2. add `$config['site']['theme'] = 'neo-quitter';` to config.php

Credits
-------

Default avatars are modified from an image by Francesco 'Architetto' Rollandin.
http://www.openclipart.org/detail/34957

Some icons by Mark James
http://www.famfamfam.com/lab/icons/silk/
http://creativecommons.org/licenses/by/2.5/ Creative Commons Attribution 2.5 License

Lato font by Łukasz Dziedzic (http://www.typoland.com) via Google Web Fonts (http://www.google.com/webfonts)
SIL Open Font License, 1.1 (http://scripts.sil.org/OFL)
Prepared for web with Font Squirrel (http://www.fontsquirrel.com/fontface/generator)


code:
/** theme: neo
 *
 * @package   StatusNet
 * @author    Osama Khalid <osamak@gnu.org>
 * @copyright Osama Khalid
 * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported
 * @link      http://status.net/
 */

body {
    direction: rtl;
}

span.rtl{
    direction: rtl !important;
}

#content .notice .h-entry {
    direction: ltr;
}

.form_notice textarea{
    direction: ltr;
}

#site_nav_global_primary ul{
    float: left;
}

.notice div.e-content {
    float: right;
    clear: right;
}

#content .notice .threaded-replies .notice div.e-content{
    clear: right;
    float: right;
}

#content h1{
    font-weight: bold;
    letter-spacing: 0;
}

.threaded-replies {
    border-right: 3px solid #ECECF2;
    border-left: 0;
    margin-right: 59px;
    margin-left: 0;
}

address{
    float: right;
}

#site_nav_global_primary {
    left: 0;
    right: auto;
}

.input_form .form_settings .submit{
    float: left;
}

.input_form .form_settings fieldset fieldset{
    float: right;
}

.input_form fieldset fieldset label{
    right: 6px;
    text-align: right;
}

#input_form_event .form_settings .form_data li{
    float: right;
}

.notice .author {
    direction: rtl;
    float: right;
    margin-left: 8px;
    margin-right: 0;
}

.section .notice .author {
    margin-left: 0;
}

.notice p.e-content {
    float: left;
}

.threaded-replies .form_notice #notice_action-submit {
    right: 10px;
}

.form_notice input.submit{
    float: right;
}

#export_data li a{
    padding-right: 30px;
    padding-left: 0;
/*    background-position: right center; */
}

#content .notice .author .u-photo{
    right: 0;
    left: auto;
}

.notice-options{
    float: left;
}

.notice div.e-content {
    margin-right: 59px;
    margin-left: 0;
}

#core .h-card .u-photo {
    margin-left: 11px;
    margin-right: 0;
}

.threaded-replies .notice-reply-comments {
    margin: 2px 10px 4px 0;
}

#shownotice .notice div.e-content {
    margin-right: 0;
}

#content thead th {
    text-align: right;
}

.profile_list th.current a {
    background-position: left top;
    padding-left: 25px;
}

.form_settings .form_data textarea, .form_settings .form_data select, .form_settings .form_data input {
    float: right;
    margin-right: 1.795%;
}

.form_settings .form_data label {
    float: right;
}

.form_settings label {
    text-align: left;
}

#form_search input.submit {
    margin-right: 5px;
}

#site_nav_local_views H3{
    font-weight: bold;
    letter-spacing: 0;
}

#aside_primary h2{
    font-weight: bold;
    letter-spacing: 0;
}

.form_settings label[for="notice_to"] {
    margin-left: 10px;
    margin-right: 0;
}

select {
    padding-left: 10px;
}

#input_form_nav li a {
    float: right;
}

#content table.extended-profile td {
    padding-left: 0 !important;
    padding-right: 8px !important;
}

.experience-item, .education-item {
    float: right;
}

#site_nav_global_primary a {
    float: right;
}

.form_settings .form_data p.form_guide {
    margin-right: 27%;
}

.form_settings label.checkbox {
    text-align: right;
}

.form_settings label.checkbox, .form_settings label.radio {
    left: 0;
    right: -25px;
}

.form_settings input.checkbox, .form_settings input.radio {
    margin-right: 25%;
    margin-left: 20px;
    right: -14px;
    left: 0;
}

.form_settings input {
    margin-left: 20px;
}

.form_settings .form_data li {
    float: right;
}

#header-search {
    float: left;
}

#header-search input[type="submit"] {
    left: 0;
    right: auto;
}

#avatarfile {
    width: 100%;
}

.form_settings .checkbox-wrapper label.checkbox {
    right: -3px;
    left: auto;
}

.checkbox-wrapper.unchecked label.checkbox, .checkbox-wrapper.checked label.checkbox {
    padding-right: 20px;
    padding-left: 0;
    background-position: right center;
}

.input_form .form_settings .form_data p.form_guide {
    margin-right: 5px;
    margin-left: 27%;
}

.experience-item, .education-item {
    float: right !important;
}

.profile_block .entity_actions {
    float: left;
}

.profile .entity_profile .p-name, .profile .entity_profile .label {
    margin-right: 11px;
    margin-left: 0;
}

#core .h-card .u-photo {
    float: right;
}

.profile_list .label {
    margin-right: 59px !important;
}

.profile .entity_profile .note, .profile .entity_profile .url, .profile .entity_profile .entity_tags, .profile .entity_profile .form_subscription_edit {
    margin-right: 59px;
    margin-left: 0;
}

.profile_list .entity_actions ul {
    left: 20px;
    right: auto;
}

.entity_actions input.submit {
   text-align: right;
}

#entity_statistics dt, #entity_statistics dd {
    margin-left: 11px;
    margin-right: 0;
}

#showstream .notice .h-entry, #showstream .notice div.e-content {
    margin-right: 0;
}

.limited-scope .e-content .timestamp:before {
    right: 0;
    left: auto;
}

.limited-scope .e-content .timestamp {
    padding-left: 0;
    padding-right: 20px;
}

.section ul.entities {
    float: right;
}

.section .entities li {
    float: right;
}


code:
Default avatars are modified from an image by Francesco 'Architetto' Rollandin.
http://www.openclipart.org/detail/34957

Some icons by Mark James
http://www.famfamfam.com/lab/icons/silk/
http://creativecommons.org/licenses/by/2.5/ Creative Commons Attribution 2.5 License

Lato font by Łukasz Dziedzic (http://www.typoland.com) via Google Web Fonts (http://www.google.com/webfonts)
SIL Open Font License, 1.1 (http://scripts.sil.org/OFL)
Prepared for web with Font Squirrel (http://www.fontsquirrel.com/fontface/generator)

path: theme/neo/README


code:
/** theme: neo
 *
 * @package   StatusNet
 * @author    Samantha Doherty <sammy@status.net>
 * @copyright 2011 StatusNet, Inc.
 * @license   http://creativecommons.org/licenses/by/3.0/ Creative Commons Attribution 3.0 Unported
 * @link      http://status.net/
 */

@font-face {
    font-family: 'Lato';
    src: url('../fonts/lato-regular-webfont.eot?') format('eot'), url('../fonts/lato-regular-webfont.woff') format('woff'), url('../fonts/lato-regular-webfont.ttf') format('truetype'), url('../fonts/lato-regular-webfont.svg#webfontCjmEHx3G') format('svg');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'Lato';
    src: url('../fonts/lato-bold-webfont.eot?') format('eot'), url('../fonts/lato-bold-webfont.woff') format('woff'), url('../fonts/lato-bold-webfont.ttf') format('truetype'), url('../fonts/lato-bold-webfont.svg#webfontCjmEHx3G') format('svg');
    font-weight: bold;
    font-style: normal;
}

@font-face {
    font-family: 'Lato';
    src: url('../fonts/lato-italic-webfont.eot?') format('eot'), url('../fonts/lato-italic-webfont.woff') format('woff'), url('../fonts/lato-italic-webfont.ttf') format('truetype'), url('../fonts/lato-italic-webfont.svg#webfontCjmEHx3G') format('svg');
    font-weight: normal;
    font-style: italic;
}

@media screen, projection, tv {

/* general styles and layout */

body {
    background-color: #C6C8CC;
    background-image: url(../images/bg.png);
    font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif;
    color: #222;
}

input, textarea, select, option {
    font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif;
}

a {color: #3e3e8c;}
a:hover {color: blue;}

abbr {border-bottom: none;}

#wrap {
    background: #fff url('../images/brdr_black_dot.png') repeat-x 0px 10px;
}

#header {
    padding-top: 12px;
}

#core {
    border-top: 5px solid #FB6104;
    border-left: 1px solid #d8dae6;
    border-right: 1px solid #d8dae6;
}

#aside_primary_wrapper {
    background-color: #ececf2;
}

#content_wrapper  {
    border-right: 1px solid #d8dae6;
}

#site_nav_local_views_wrapper  {
    background-color: #ececf2;
    border-right: 1px solid #d8dae6;
}

#footer {
    top: -6px;
    border-top-left-radius: 6px;
    border-top-right-radius: 6px;
}

/* header elements */

#site_nav_global_primary {
    top: 10px;
    border-top-right-radius: 6px;
    background: #364A84;
    background: -moz-linear-gradient(top, #516499 0%, #364a84 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#516499), color-stop(100%,#364a84));
    background: -webkit-linear-gradient(top, #516499 0%,#364a84 100%);
    background: -o-linear-gradient(top, #516499 0%,#364a84 100%);
    background: -ms-linear-gradient(top, #516499 0%,#364a84 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#516499', endColorstr='#364a84',GradientType=0 );
    background: linear-gradient(top, #516499 0%,#364a84 100%);
}

#site_nav_global_primary li {
    margin-right: 0px;
}

#site_nav_global_primary li:last-child {
    margin-right: 10px;
}

#site_nav_global_primary a {
    padding: 2px 10px 2px 10px;
    height: 20px;
    display: block;
    float: left;
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
}

#site_nav_global_primary a:hover {
    color: #fff !important;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #4c619c;
    text-decoration: none;
}

#header-search {
    top: 1px;
    margin-left: 6px;
}

#header-search #search-q {
    position: relative;
    width: 131px;
    height: 12px;
    margin-right: 10px;
    padding: 2px 22px 2px 6px;
    border-radius: 4px;
    border: none;
    font-size: 0.88em;
}

#header-search input[type="submit"] {
    border: 0;
    background: url(../images/magnifier.png) no-repeat 2px 1px;
    text-indent: -9999px;
    width: 20px;
    height: 18px;
    position: absolute;
    right: 10px;
    top: 2px;
    z-index: 2;
    cursor: pointer;
}

#site_notice {
    border-radius: 6px;
}

/* input forms */

.input_forms {
    float: left;
    top: -20px;
    left: -20px;
    padding: 18px 20px 0px 20px;
    border-bottom: none;
    margin-bottom: 0px;
    background: #fafafa url('../images/brdr_black_dot.png') repeat-x bottom left;
}

#input_form_nav li a {
    display: block;
    float: left;
    padding: 0px 10px 1px 10px;
    border-radius: 4px;
    border: 1px solid #ECECF2;
    font-weight: bold;
    line-height: 1.4em;
    color: #3e3e8c;
    text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.9);
    background: #ececf2;
    background: -moz-linear-gradient(top, #ffffff 0%, #ececf2 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#ececf2));
    background: -webkit-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    background: -o-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    background: -ms-linear-gradient(top, #ffffff 0%,#ececf2 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ececf2',GradientType=0 );
    background: linear-gradient(top, #ffffff 0%,#ececf2 100%);
}

#input_form_nav li:hover a, #input_form_nav li.current a {
    color: #fff;
    text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.5);
    border: 1px solid #ececf2;
    background: #364a84;
    background: -moz-linear-gradient(top, #7b8dbb 0%, #364a84 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
    background: -webkit-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -o-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -ms-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#364a84',GradientType=0 );
    background: linear-gradient(top, #7b8dbb 0%,#364a84 100%);
}

.input_form_nav_tab a, .input_form_nav_tab.current a {
    text-decoration: none;
}

.form_notice .error,
.form_notice .success,
.form_notice .notice-status {
    border-radius: 4px;
}

.form_notice_placeholder .placeholder,
.form_notice textarea ,
.input_form .form_settings li input,
.input_form .form_settings li textarea,
.threaded-replies .placeholder { /* TODO combine all these declarations */
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

.input_form .form_settings .submit {
    font-size: 1.1em;
}

/* site nav local views */

#site_nav_local_views H3 {
    margin-bottom: 10px;
    padding-bottom: 6px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
    color: #7a7c87;
    font-size: 1.1em;
    letter-spacing: 2px;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

#site_nav_local_views a {
    display: block;
    width: 118px;
    padding: 0px 10px 1px 10px;
    border-radius: 4px;
    text-transform: uppercase;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    word-wrap: break-word;
}

#site_nav_local_views a:hover, #site_nav_local_views .current a {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #364a84;
    background: -moz-linear-gradient(top, #7b8dbb 0%, #364a84 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
    background: -webkit-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -o-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -ms-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#364a84',GradientType=0 );
    background: linear-gradient(top, #7b8dbb 0%,#364a84 100%);
}

/* aside primary */

#aside_primary .section {
    font-size: 0.88em;
}

#aside_primary h2 {
    margin-bottom: 10px;
    padding-bottom: 6px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
    color: #7a7c87;
    font-size: 1.25em;
    letter-spacing: 2px;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
}

.profile_block .entity_actions {
    float: right;
    width: 110px;
    margin-top: 2px;
    margin-bottom: 2px;
}

.profile_block .entity_moderation:hover ul,
.profile_block .entity_role:hover ul {
    right: 20px;
}

.profile_block_name {
    font-size: 14px;
    font-weight: bold;
}

.profile_block_location {
    font-weight: bold;
}

.profile_block_description {
    line-height: 1.2em;
}

#site_nav_object ul {
    background: url('../images/brdr_black_dot.png') repeat-x top left;
}

#site_nav_object li {
    display: block;
    margin: -8px 0px 8px 0px;
    padding-top: 8px;
}

#site_nav_object a {
    font-size: 14px;
    display: block;
    padding: 0px 0px 1px 10px;
    border-radius: 4px;
    text-transform: uppercase;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

#site_nav_object a:hover, #site_nav_object .current a {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #364a84;
    background: -moz-linear-gradient(top, #7b8dbb 0%, #364a84 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#7b8dbb), color-stop(100%,#364a84));
    background: -webkit-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -o-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    background: -ms-linear-gradient(top, #7b8dbb 0%,#364a84 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#7b8dbb', endColorstr='#364a84',GradientType=0 );
    background: linear-gradient(top, #7b8dbb 0%,#364a84 100%);
}

.section ul.entities {
    width: 240px;
}

.section .entities li {
    margin-right: 3.6px;
    margin-bottom: 5px;
    width: 24px;
}

#popular_notices .avatar {
    position: relative;
    top: 4px;
    margin-bottom: 6px;
}

#aside_primary td {
    padding-right: 20px;
    padding-bottom: 14px;
}

#aside_primary td .nickname {
    line-height: 1.6em;
}

.section .avatar {
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.5);
}

.invite_button {
    height: 2.1em;
    line-height: 2.1em;
    display: block;
    text-align: center;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.2em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #d7621c;
    border-radius: 4px;
    background: #FB6104;
    background: -moz-linear-gradient(top, #ff9d63 0%, #fb6104 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff9d63), color-stop(100%,#fb6104));
    background: -webkit-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    background: -o-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    background: -ms-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff9d63', endColorstr='#fb6104',GradientType=0 );
    background: linear-gradient(top, #ff9d63 0%,#fb6104 100%);
}

.invite_button:hover {
    color: #fff;
    text-decoration: none;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #ff9d63;
    background: -moz-linear-gradient(top, #fb6104 0%, #fc8035 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fb6104), color-stop(100%,#fc8035));
    background: -webkit-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    background: -o-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    background: -ms-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fb6104', endColorstr='#fc8035',GradientType=0 );
    background: linear-gradient(top, #fb6104 0%,#fc8035 100%);
}

/* notices etc */

#content h1 {
    border-bottom: 3px solid #A6ADBF;
    color: #A6ADBF;
    font-size: 1.4em;
    letter-spacing: 4px;
    text-transform: none;
}

#content .notice {
    padding-bottom: 4px;
    border-bottom: 2px dotted #eee;
}

.notice div.e-content {
    line-height: 1.2em;
}

.user_in .notice div.e-content {
    max-width: 440px;
}

.e-content a.conversation:before {
	content: " (";
}

.e-content a.conversation:after {
	content: ")";
}

.notice-options .form_repeat.dialogbox {
    margin-right: 0px;
    border: 1px solid #aaa;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
}

.notice-options .form_repeat.dialogbox legend {
    padding-top: 10px;
}

.user_in.realtime-popup .notice div.e-content {
    max-width: 320px;
}

.realtime-popup .threaded-replies {
    margin-left: 15px;
}

.realtime-popup .threaded-replies .form_notice textarea {
    width: 385px !important;
}

.realtime-popup .threaded-replies .form_notice label.notice_data-attach {
    top: 10px !important;
    right: 10px !important;
}

.pagination {
    height: 1.2em;
}

.entity_profile {
    float: left;
    width: 360px;
    margin-top: 4px;
}

.entity_profile .entity_depiction {
    margin-top: 4px;
}

.entity_actions {
    width: 140px;
    margin-top: 8px;
    margin-bottom: 10px;
}

.entity_actions a, .entity_actions p, .entity_actions .entity_subscribe input, .entity_actions .entity_block input, .entity_actions .entity_moderation input, .entity_actions .entity_role input, .entity_actions .entity_nudge input, .entity_actions .entity_delete input, .entity_actions input.submit {
   	text-shadow:0 1px 0 rgba(255,255,255,0.4);
    border-radius: 4px;
    background-color: #CDD1DD !important;
}

.entity_moderation:hover ul,
.entity_role:hover ul {
    border-radius: 4px;
}

.entity_send-a-message .form_notice legend {
   	text-shadow:0 1px 0 rgba(255,255,255,0.4);
}

.entity_send-a-message .form_notice {
    border: 1px solid #7B4E82;
}

.entity_send-a-message .form_notice #notice_action-submit {
    color: #fff !important;
    top: 46px;
}

.entity_subscribe .dialogbox, .entity_tag .dialogbox {
    border: 1px solid #aaa;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.4);
}

.entity_subscribe .dialogbox input.submit_dialogbox, .entity_tag .dialogbox input.submit_dialogbox {
    color: #fff !important;
}

#filter_tags_item .submit {
  left: 6px;
  top: -3px;
}

#pagination {
    height: 1.2em;
    padding-bottom: 12px;
    border-radius: 6px;
}

#pagination a {
    color: #3e3e8c;
}

#footer a {
    color: #3e3e8c;
}

#site_nav_global_secondary {
    margin-bottom: 10px;
}

.error, .success, .notice-status {
    border-radius: 6px;
}

.form_notice input.submit, .form_settings input.submit, .form_settings input.cancel, #form_invite input.submit,
.entity_subscribe .dialogbox input.submit_dialogbox,
.entity_tag .dialogbox input.submit_dialogbox,
.form_repeat.dialogbox input.submit_dialogbox
{ /* TODO combine all these declarations */
    height: 1.9em;
    padding: 0px 10px;
    color:#fff;
    font-weight: bold;
    text-transform: uppercase;
    font-size: 1.2em;
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.2);
    border: 1px solid #d7621c;
    border-radius: 4px;
    background: #FB6104;
    background: -moz-linear-gradient(top, #ff9d63 0%, #fb6104 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff9d63), color-stop(100%,#fb6104));
    background: -webkit-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    background: -o-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    background: -ms-linear-gradient(top, #ff9d63 0%,#fb6104 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff9d63', endColorstr='#fb6104',GradientType=0 );
    background: linear-gradient(top, #ff9d63 0%,#fb6104 100%);
}

.form_notice input.submit:hover, .form_settings input.submit:hover, .form_settings input.cancel:hover, #form_invite input.submit:hover,
.entity_subscribe .dialogbox input.submit_dialogbox:hover,
.entity_tag .dialogbox input.submit_dialogbox:hover,
.form_repeat.dialogbox input.submit_dialogbox:hover
{
    text-shadow: 0px -1px 0px rgba(0, 0, 0, 0.6);
    background: #ff9d63;
    background: -moz-linear-gradient(top, #fb6104 0%, #fc8035 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fb6104), color-stop(100%,#fc8035));
    background: -webkit-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    background: -o-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    background: -ms-linear-gradient(top, #fb6104 0%,#fc8035 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fb6104', endColorstr='#fc8035',GradientType=0 );
    background: linear-gradient(top, #fb6104 0%,#fc8035 100%);
}

.form_settings input#cancel, #form_action-no {
    background: #f2f2f2;
    color: #d7621c;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.form_settings input#cancel:hover, #form_action-no:hover {
    background: #fff;
    color: #d7621c;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.form_settings fieldset fieldset {
    margin-bottom: 30px;
    padding-top: 25px;
}

#invite #content p {
    margin-bottom: 15px;
}

#invite #content ul {
    list-style-type: none;
    margin-bottom: 25px;
    margin-left: 25px;
}

#invite #content li {
    background: url(../images/resultset_next.png) no-repeat 0px 3px;
    padding-left: 20px;
    margin-bottom: 10px;
}

#invite #content #form_invite ul, #invite #content #form_invite li {
    margin-left: 0px;
    padding-left: 0px;
    background: none;
}

#form_invite input[type=text], #form_invite textarea {
    width: 250px;
    padding: 5px;
    border: 1px solid #a6a6a6;
    border-radius: 4px;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

#form_invite textarea {
    clear: left;
    width: 508px;
    height: 48px;
}

#form_invite a.add_row, #form_invite a.remove_row {
    display: block;
    height: 16px;
    width: 16px;
    overflow: hidden;
    background-image: url('../../base/images/icons/icons-01.gif');
    background-repeat: no-repeat;
}

#form_invite a.remove_row {
    background-position: 0px -1252px;
    display: inline-block;
    position: relative;
    top: 4px;
    left: 10px;
    line-height: 4em;
}

#form_invite a.add_row {
    clear: both;
    position: relative;
    top: 10px;
    background-position: 0px -1186px;
    width: 120px;
    padding-left: 20px;
    line-height: 1.2em;
}

#form_invite label[for=personal] {
    display: block;
    margin-top: 25px;
}

#content thead th {
text-align:left;
}
#content tbody th {
vertical-align:top;
text-align:left;
font-weight:normal;
padding-top:11px;
padding-right:18px;
}
#content tbody tr {
    border-top: 1px dotted #bbb;
}
#content td {
padding:11px 18px 11px 0;
vertical-align:top;
}
#content td:last-child {
padding-right:0;
}

/* Search */

#form_search {
    padding-bottom: 10px;
    margin-bottom: 20px;
    background: url('../images/brdr_black_dot.png') repeat-x bottom left;
}

#form_search fieldset {
    margin-bottom: 0px;
}

#form_search ul.form_data #q {
    margin-left: 10px;
    width: 210px;
}

#form_search input.submit {
    height: 1.6em;
    line-height: 1.6em;
    font-size: 1.1em;
    padding-bottom: 2px;
    margin-left: 5px;
}

#noticesearch .entity_actions {
    margin: 0px;
}

#noticesearch p.error {
    margin-top: 60px;
}

/* Limited-scope */

.limited-scope .e-content .timestamp {
    padding-left: 20px;
    position: relative;
}

.limited-scope .e-content .timestamp:before {
    content: url(../images/lock.png);
    position: absolute;
    top: -2px;
    left: 0px;
}

.limited-scope li .e-content .timestamp {
    padding-left: 0px;
}

.limited-scope li .e-content .timestamp:before {
    content: none;
}

.limited-scope li.limited-scope .e-content .timestamp {
    padding-left: 20px;
}

.limited-scope li.limited-scope .e-content .timestamp:before {
    content: url(../images/lock.png);
    position: absolute;
    top: -2px;
    left: 0px;
}

/* Blog */

label[for=blog-entry-content] {
    display: none !important;
}

#input_form_blog td {
    padding-top: 0px;
    padding-bottom: 0px;
}

#input_form_blog td.mceToolbar {
    padding-top: 4px;
}

h4.blog-entry-title {
    margin-bottom: 8px;
    line-height: 1.2em;
}

/* Onboard specific styles */
/* TODO move to plugin */

#cboxOverlay{
    background: url(../images/lightbox_bg.png) repeat 0 0 !important;
}

#cboxContent{
    background: #fff url(../logo.png) no-repeat 10px bottom !important;
}

.onboard_iframe {
    background: none;
    padding: 10px;
}

.onboard_iframe #wrap {
    width: auto;
    background: none;
}

.onboard_welcome p {
    margin-bottom: 10px;
}

.onboard_welcome ul {
    list-style-type: none;
    margin-bottom: 10px;
}

.onboard_welcome ul li {
    background: url(../images/resultset_next.png) no-repeat 0px 3px;
    padding-left: 20px;
    margin-left: 10px;
}

#aside_primary #onboard_section {
    background: #f2f2f2;
    width: 196px;
    padding: 10px;
    border-radius: 4px;
    border: 1px solid #516499;
    background: #fafafa;
}

#onboard_section H2 {
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
    position: relative;
    top: -11px;
    left: -11px;
    padding: 2px 0px 2px 10px;
    margin-right: -22px;
    margin-bottom: 5px;
    color: #fff;
    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
    background: #364A84;
    background: -moz-linear-gradient(top, #516499 0%, #364a84 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#516499), color-stop(100%,#364a84));
    background: -webkit-linear-gradient(top, #516499 0%,#364a84 100%);
    background: -o-linear-gradient(top, #516499 0%,#364a84 100%);
    background: -ms-linear-gradient(top, #516499 0%,#364a84 100%);
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#516499', endColorstr='#364a84',GradientType=0 );
    background: linear-gradient(top, #516499 0%,#364a84 100%);
}

#onboard_section ul {
    list-style-type: none;
}

#onboard_section .onboard-step-incomplete {
    background: url(../images/resultset_next.png) no-repeat 0px 1px;
    padding-left: 20px;
    margin-bottom: 10px;
}

#onboard_section .onboard-step-complete {
    background: url(../images/tick.png) no-repeat 0px 1px;
    padding-left: 20px;
    margin-bottom: 10px;
    text-decoration: line-through;
    color: #555;
}

/* Billing specific styles */
/* TODO move to plugin */

#content table.billing_info {
    margin-top: 10px;
    background:rgba(240, 240, 240, 0.4);
}

#content table.billing_info th {
    text-align: right;
    width: 50%;
}

.invalid {
    border: solid 2px red !important;
}

#payment_history table {
    width: 100%;
}

#billingadminpanel .form_settings input {
    margin-right: 0px;
}

/* Directory specific styles */
/* TODO separate base styles and move to plugin */

div#profile_directory div.alpha_nav > a {
    border-left: 1px solid #ccc !important;
    padding-left: 3.5px !important;
    padding-right: 4px !important;
    margin-right: 0px;
    float: left;
    line-height: 1.4em;
}

div#profile_directory div.alpha_nav > a.first {
    border-left: none !important;
}

div#profile_directory div.alpha_nav a.current {
    background-color: #ECECF2 !important;
}

table.profile_list {
    margin-top: 25px;
}

.profile_list th {
    font-size: 0.8em;
}

.profile_list th#created {
    width: 100px;
}

.profile_list th#subscriptions {
    width: 90px;
}

.profile_list th.current {
        background: none !important;
}

.profile_list th.current.reverse {
        background: none !important;
}

.profile_list th.current a {
        padding-right: 25px;
        background: url(../images/bluearrow_down.png) no-repeat top right;
}

.profile_list th.current.reverse a {
        background: url(../images/bluearrow_up.png) no-repeat top right;
}

table.profile_list tr.alt {
    background-color: #fafafa !important;
    border: none !important;
}

td.entity_profile {
    width: auto;
    min-width: 250px;
}

.profile_list .p-name {
    display: block;
    font-size: 1.1em;
    width: auto;
}

.profile_list .nickname, .profile_list .p-name.nickname {
    position: relative;
    top: -8px;
    display: block;
    margin-bottom: -12px;
    font-size: 1.4em;
}

.profile_list .label {
    display: block;
    margin-left: 59px !important;
}

.profile_list .note {
    font-size: 0.88em;
    line-height: 1.36em;
}

.profile_list .entry_created, .profile_list .entry_subscriber_count, .profile_list .entry_notice_count {
    font-size: 0.88em;
}

.profile_list td.entity_actions {
    width: 24px;
    max-width: 24px;
    min-width: 24px;
    height: 20px;
    padding-left: 6px !important;
    position: relative;
    float: none;
    display: table-cell !important;
}

.profile_list .entity_actions ul {
    position: absolute;
    right: 20px;
}

.profile_list .entity_actions input {
    width: 22px;
    height: 22px;
    padding-top: 1px;
    padding-right: 0px;
    padding-left: 20px;
    display: block;
    overflow: hidden;
    font-size: 0em;
    border: 1px solid #CDD1DD;
}

.profile_list .form_group_leave input.submit,
.profile_list .form_user_unsubscribe input.submit {
    background-position: 2px -1250px;
}

.profile_list .form_group_join input.submit,
.profile_list .form_user_subscribe input.submit {
    background-position: 2px -1184px;
}

.profile_list .entity_actions input:hover {
    width: auto;
    padding-right: 10px;
    overflow: visible;
    font-size: 1em;
    line-height: 1.3em;
    border: 1px solid #A6ADBF;
    box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2);
}

/* SNOD CompanyLogo styling */
/* TODO move to plugin */

#site_nav_local_views a.company_logo {
    width: 138px;
    padding: 0px;
    font-weight: bold;
    text-transform: none;
    line-height: 1em;
    margin-bottom: 20px;
    position: relative;
    top: -4px;
}

#site_nav_local_views a.company_logo:hover {
    background: none;
    color: blue;
    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.5);
}

.company_logo img {
    max-width: 138px;
    margin-bottom: 4px;
}

.company_logo span {
    display: block;
}

a.company_logo:hover span {
    text-decoration: underline;
}

}/*end of @media screen, projection, tv*/


code:
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on April 14, 2011 */

@font-face {
    font-family: 'LatoBold';
    src: url('lato-bold-webfont.eot');
    src: local('☺'), url('lato-bold-webfont.woff') format('woff'), url('lato-bold-webfont.ttf') format('truetype'), url('lato-bold-webfont.svg#webfontRFDbyVDk') format('svg');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'LatoItalic';
    src: url('lato-italic-webfont.eot');
    src: local('☺'), url('lato-italic-webfont.woff') format('woff'), url('lato-italic-webfont.ttf') format('truetype'), url('lato-italic-webfont.svg#webfont7qSu1Vfu') format('svg');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'LatoRegular';
    src: url('lato-regular-webfont.eot');
    src: local('☺'), url('lato-regular-webfont.woff') format('woff'), url('lato-regular-webfont.ttf') format('truetype'), url('lato-regular-webfont.svg#webfontCjmEHx3G') format('svg');
    font-weight: normal;
    font-style: normal;
}


code:
### Libcaptcha

> Highly customizable `captcha` making library.

### Features

  - TTF font support
  - UTF-8 support, you can use any glyph
  - An easy API (I suppose)
  - Zero dependencies
  - Entirely written in `C`

### How to install

It is as simple as

```
./configure
make
make install
```

### How to use

Check out [examples](examples/)

1. Get familiar with general concept.

![example1](examples/example1.png)

2. How to make a random sized glyphs.

![example2](examples/example2.png)

3. Apply random positions for glyphs.

![example3](examples/example3.png)

4. Get familiar with patterns made from png images.

![example4](examples/example4.png)

5. Patterns, patterns everywhere.

![example5](examples/example5.png)

6. Some crazy stuff.

![example6](examples/example6.png)

Don't forget to use `lc_free()` to free all the stuff `libcaptcha` returns to
you.

I've noticed that it is very easy to get lost sometimes, just use `valgrind`.

### License

GPLv2

repo_name: acetone/libcaptcha


code:
#!/bin/sh

autoreconf -i

path: bootstrap


code:
AC_INIT([libcaptcha], [0.0.1], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects])
AC_PROG_CC
AM_PROG_AR
AC_CHECK_LIB(m, main)
AC_CHECK_HEADERS([stdlib.h])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
                  Makefile
                  src/Makefile
                  test/Makefile
                   ])
LT_INIT
AC_OUTPUT


code:
LDFLAGS=-lcaptcha
CFLAGS=-g -Wall

all: example1 example2 example3 example4 example5 example6

example1: example1.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

example2: example2.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

example3: example3.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

example4: example4.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

example5: example5.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

example6: example6.c
	$(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

.PHONY: clean all

clean:
	rm -f example1
	rm -f example2
	rm -f example3
	rm -f example4
	rm -f example5
	rm -f example6

path: examples/Makefile


code:
#include <stdio.h>
#include <libcaptcha.h>

/*
 * This example simply prints glyphs into
 * png file. Here is nothing but basics
 */
int main() {
  char * str = "😒Hi!";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *arr;
  lc_bmp * bmp;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  arr = lc_str_to_arr(font, str, 38, 0);

  if (!arr) {
    perror("lc_str_to_arr()");
    return 1;
  }

  bmp = lc_create_image(arr);

  if (!bmp) {
    perror("lc_create_image()");
    return 1;
  }

  lc_save_png("./example1.png", bmp);

  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
#include <stdio.h>
#include <libcaptcha.h>

/*
 * Automatically randomize size for glyphs in the array
 */

int main() {
  char * str = "sizemetters";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *arr;
  lc_bmp * bmp;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  /*
   * 38 - 80 - any random size between the range
   */
  arr = lc_str_to_arr(font, str, 38, 80);

  if (!arr) {
    perror("lc_str_to_arr()");
    return 1;
  }

  bmp = lc_create_image(arr);

  if (!bmp) {
    perror("lc_create_image()");
    return 1;
  }

  lc_save_png("./example2.png", bmp);

  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
#include <stdio.h>
#include <libcaptcha.h>

/*
 * Automatically randomize position of glyphs in the array
 * by x and then y axis
 */

int main() {
  char * str = "letsjump";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *arr;
  lc_bmp * bmp;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  arr = lc_str_to_arr(font, str, 38, 0);

  /*
   * Glyph position randomization for both x and y axis
   */
  lc_randomize_arr_x(arr, 30);
  lc_randomize_arr_y(arr, 40);

  if (!arr) {
    perror("lc_str_to_arr()");
    return 1;
  }

  bmp = lc_create_image(arr);

  if (!bmp) {
    perror("lc_create_image()");
    return 1;
  }

  lc_save_png("./example3.png", bmp);

  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
#include <stdio.h>
#include <libcaptcha.h>

/*
 * Lets apply some pattern from png image to text
 */
lc_bmp *load_pattern(char *filename, int x, int y, int w, int h) {
  lc_bmp *img = lc_load_png(filename);
  lc_bmp *cropped;

  if (!img) {
    perror("lc_load_png()");
    return NULL;
  }

  cropped = lc_crop_bmp(img, x, y, w, h);

  if (!cropped) {
    perror("lc_crop_bmp()");
    return NULL;
  }

  lc_free(img);

  return cropped;
}

int main() {
  char * str = "usepattern";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *arr;
  lc_bmp * text;
  lc_bmp * pattern;
  lc_bmp * bmp;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  arr = lc_str_to_arr(font, str, 38, 0);

  if (!arr) {
    perror("lc_str_to_arr()");
    return 1;
  }

  text = lc_create_image(arr);

  if (!text) {
    perror("lc_create_image()");
    return 1;
  }

  pattern = load_pattern("../patterns/96b.png", 300, 20, 240, 80);
  /* looks great */
/*  lc_save_png("./example4.png", bmp);*/

  if (!pattern) {
    return 1;
  }

  bmp = lc_pattern_apply(pattern, text);

  if (!bmp) {
    perror("lc_pattern_apply()");
    return 1;
  }

  lc_save_png("./example4.png", bmp);

  lc_free(text);
  lc_free(pattern);
  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
#include <stdio.h>
#include <libcaptcha.h>

lc_bmp *load_pattern(char *filename, int x, int y, int w, int h) {
  lc_bmp *img = lc_load_png(filename);
  lc_bmp *cropped;

  if (!img) {
    perror("lc_load_png()");
    return NULL;
  }

  cropped = lc_crop_bmp(img, x, y, w, h);

  if (!cropped) {
    perror("lc_crop_bmp()");
    return NULL;
  }

  lc_free(img);

  return cropped;
}

int main() {
  char * str = "withpattern";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *arr;
  lc_bmp * text;
  lc_bmp * pattern;
  lc_bmp * bg;
  lc_bmp * bmp;
  lc_bmp * captcha;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  arr = lc_str_to_arr(font, str, 50, 70);

  if (!arr) {
    perror("lc_str_to_arr()");
    return 1;
  }

  lc_randomize_arr_x(arr, 10);
  lc_randomize_arr_y(arr, 10);

  text = lc_create_image(arr);

  if (!text) {
    perror("lc_create_image()");
    return 1;
  }

  pattern = load_pattern("../patterns/96b.png", 400, 200, text->w, text->h);
  /* looks great */
/*  lc_save_png("./example4.png", bmp);*/

  if (!pattern) {
    return 1;
  }

  bg = load_pattern("../patterns/96b.png", 300, 20, pattern->w + 20, pattern->h + 20);

  if (!bg) {
    return 1;
  }

  bmp = lc_pattern_apply(pattern, text);

  if (!bmp) {
    perror("lc_pattern_apply()");
    return 1;
  }

  captcha = lc_pattern_merge(bg, bmp, 10, 10);

  if (!captcha) {
    perror("lc_pattern_merge()");
    return 1;
  }

  lc_save_png("./example5.png", captcha);

  lc_free(captcha);
  lc_free(bg);
  lc_free(text);
  lc_free(pattern);
  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
#include <stdio.h>
#include <libcaptcha.h>

lc_bmp *load_pattern(char *filename, int x, int y, int w, int h) {
  lc_bmp *img = lc_load_png(filename);
  lc_bmp *cropped;

  if (!img) {
    perror("lc_load_png()");
    return NULL;
  }

  cropped = lc_crop_bmp(img, x, y, w, h);

  if (!cropped) {
    perror("lc_crop_bmp()");
    return NULL;
  }

  lc_free(img);

  return cropped;
}

int main() {
  char * str = "CRAZYSTUFF";
  char * fontfile = "../ttf/dejavu.ttf";

  lc_fontBuffer *font = lc_create_font(fontfile);
  lc_arrGlyph *tmp;
  lc_arrGlyph *arr;
  lc_bmp * text;
  lc_bmp * pattern;
  lc_bmp * bg;
  lc_bmp * bmp;
  lc_bmp * captcha;

  if (!font) {
    perror("lc_create_font()");
    return 1;
  }

  tmp = lc_str_to_arr(font, str, 50, 70);

  if (!tmp) {
    perror("lc_str_to_arr()");
    return 1;
  }

  arr = lc_randomize_arr_rotation(tmp, 180);

  if (!arr) {
    perror("lc_randomize_arr_rotation()");
    return 1;
  }

  lc_randomize_arr_x(arr, 10);
  lc_randomize_arr_y(arr, 10);

  text = lc_create_image(arr);

  if (!text) {
    perror("lc_create_image()");
    return 1;
  }

  pattern = load_pattern("../patterns/96b.png", 100, 200, text->w, text->h);

  if (!pattern) {
    return 1;
  }

  bg = load_pattern("../patterns/96c.png", 300, 20, pattern->w + 20, pattern->h + 20);

  if (!bg) {
    return 1;
  }

  bmp = lc_pattern_apply(pattern, text);

  if (!bmp) {
    perror("lc_pattern_apply()");
    return 1;
  }

  captcha = lc_pattern_merge(bg, bmp, 10, 10);

  if (!captcha) {
    perror("lc_pattern_merge()");
    return 1;
  }

  lc_save_png("./example6.png", captcha);

  lc_free(tmp);
  lc_free(captcha);
  lc_free(bg);
  lc_free(text);
  lc_free(pattern);
  lc_free(arr);
  lc_free(bmp);
  lc_free(font);
  return 0;
}


code:
include_HEADERS=libcaptcha.h
lib_LTLIBRARIES=libcaptcha.la
libcaptcha_la_LDFLAGS=-lm
libcaptcha_la_SOURCES=string.c pattern.c image.c font.c \
											generator1.c getrandom.c \
										 	transform.c libcaptcha.c libcaptcha.h \
										 	stb_truetype.h stb_image_write.h \
											stb_image_resize.h utf8.c utf8.h \
											stb_image.h


code:
/*
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2
 *  of the License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  Author: g0tsu
 *  Email:  g0tsu at dnmx.0rg
 */

#include <libcaptcha.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <stb_truetype.h>

lc_fontBuffer * lc_create_font(char *filename) {
  FILE *font_fd = fopen(filename, "rb");
  size_t font_size = 0;
  lc_fontBuffer *font;
  stbtt_fontinfo *info;

  if (font_fd == NULL) {
    return NULL;
  }

  fseek(font_fd, 0, SEEK_END);
  font_size = ftell(font_fd);
  fseek(font_fd, 0, SEEK_SET);

  if (font_size < 8) {
    return NULL;
  }

  if ((info = malloc(sizeof(*info))) == NULL) {
    errno = ENOMEM;
    return NULL;
  }

  if ((font = malloc(sizeof(*font))) == NULL) {
    errno = ENOMEM;
    return NULL;
  }

  if ((font->buffer = malloc(font_size)) == NULL) {
    errno = ENOMEM;
    free(info);
    free(font);
    return NULL;
  }

  fread(font->buffer, font_size, 1, font_fd);
  fclose(font_fd);

  font->type = LC_TYPE_FONT;
  font->info = info;

  if (!stbtt_InitFont(font->info, font->buffer, 0)) {
    errno = EINVAL;
    lc_free(font);
    return NULL;
  }

  return font;
}

lc_bmpGlyph * lc_create_glyph(lc_fontBuffer *font, const int glyph, const int line_height) {
  int w, h;
  float scale;
  unsigned char *bitmap;
  lc_bmpGlyph *bg;

  if ((bg = malloc(sizeof(*bg))) == NULL) {
    errno = ENOMEM;
    return NULL;
  }

  scale = stbtt_ScaleForPixelHeight(font->info, line_height);
  bg->buffer = stbtt_GetCodepointBitmap(font->info, 0, scale, glyph, &w, &h, 0, 0);
  bg->type = LC_TYPE_GLYPH;
  bg->w = w;
  bg->h = h;

  return bg;
}


code:
/*
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2
 *  of the License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  Author: g0tsu
 *  Email:  g0tsu at dnmx.0rg
 */

#include <libcaptcha.h>
#include <stdio.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>

void lc_recalculate_arr(lc_arrGlyph *arr) {
  int xline = 0,
      yline = 0;

  for (int i = 0; i < arr->size; i++) {
    yline = MAX(arr->items[i]->h + arr->items[i]->y, yline);
    xline = arr->items[i]->w + arr->items[i]->x;
  }

  arr->w = xline;
  arr->h = yline;
}

lc_arrGlyph * lc_randomize_arr_rotation(lc_arrGlyph *arr, int delta) {
  char bytes[arr->size];
  int angle;
  lc_arrGlyph * narr;

  if ((narr = malloc(sizeof(*narr))) == NULL) {
    errno = ENOMEM;
    return NULL;
  }

  narr->type = LC_TYPE_ARR;
  narr->size = arr->size;
  narr->w = arr->w;
  narr->h = arr->h;

  if ((narr->items = malloc(sizeof(lc_bmpGlyph) * narr->size)) == NULL) {
    errno = ENOMEM;
    return NULL;
  }

  lc_random_bytes(&bytes, narr->size);

  for (int i = 0; i < arr->size; i++) {
    angle = bytes[i] % delta;

    narr->items[i] = lc_rotate_glyph(arr->items[i], angle);
    narr->items[i]->x = arr->items[i]->x;
    narr->items[i]->y = arr->items[i]->y;

    if (!narr->items[i]) {
      lc_free(narr);
      return NULL;
    }
  }

  lc_recalculate_arr(narr);
  return narr;
}

void lc_randomize_arr_x(lc_arrGlyph *arr, int delta) {
  int arrsiz = arr->size;
  char bytes[arrsiz];
  int xline = 0;

  lc_random_bytes(&bytes, arrsiz);

  for (int i = 0, j = 0 ; i < arrsiz; i++) {
    int r = bytes[j++] % delta;
    arr->items[i]->x += r;

    for (int j = i + 1; j < arrsiz; j++) {
      arr->items[j]->x += r;
    }

    xline = MAX(arr->items[i]->x + arr->items[i]->w, xline);
  }

  arr->w = xline;
}

void lc_randomize_arr_y(lc_arrGlyph *arr, int delta) {
  int arrsiz = arr->size;
  int dhalf = delta / 2;
  char bytes[arrsiz];

  lc_random_bytes(&bytes, arrsiz);

  for (int i = 0, j = 0 ; i < arrsiz; i++) {
    int r = bytes[j++] % delta;
    arr->items[i]->y += r;
  }

  lc_recalculate_arr(arr);
}


code:
/*
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License
 *  as published by the Free Software Foundation; either version 2
 *  of the License, or (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *  Author: g0tsu
 *  Email:  g0tsu at dnmx.0rg
 */

#include <assert.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>

#define SUCCESS 1
#define FAILURE 0

int lc_random_bytes(void *bytes, size_t size) {
  size_t read_bytes = 0;
  ssize_t n;
  /* Linux getrandom(2) syscall or FreeBSD getrandom(2) function*/
  /* Keep reading until we get enough entropy */
  while (read_bytes < size) {
  /* Below, (bytes + read_bytes)  is pointer arithmetic.

       bytes   read_bytes  size
         |      |           |
        [#######=============] (we're going to write over the = region)
                 \\\\\\\\\\\\\
                  amount_to_read
  */

  size_t amount_to_read = size - read_bytes;
  n = syscall(SYS_getrandom, bytes + read_bytes, amount_to_read, 0);

  if (n == -1) {
    if (errno == ENOSYS) {
      /* This can happen if PHP was compiled against a newer kernel where getrandom()
       * is available, but then runs on an older kernel without getrandom(). If this
       * happens we simply fall back to reading from /dev/urandom. */
      assert(read_bytes == 0);
      break;
    } else if (errno == EINTR || errno == EAGAIN) {
      /* Try again */
      continue;
    } else {
        /* If the syscall fails, fall back to reading from /dev/urandom */
      break;
    }
  }

    read_bytes += (size_t) n;
  }

  if (read_bytes < size) {
    int    fd;
    struct stat st;

  if (fd < 0) {

#if HAVE_DEV_URANDOM
  fd = open("/dev/urandom", O_RDONLY);
#else
  fd = open("/dev/random", O_RDONLY);
#endif
    if (fd < 0) {
      return FAILURE;
    }
    /* Does the file exist and is it a character device? */
    if (fstat(fd, &st) != 0 ||
# ifdef S_ISNAM
        !(S_ISNAM(st.st_mode) || S_ISCHR(st.st_mode))
# else
        !S_ISCHR(st.st_mode)
# endif
      ) {
        close(fd);
        return FAILURE;
      }
    }

    for (read_bytes = 0; read_bytes < size; read_bytes += (size_t) n) {
      n = read(fd, bytes + read_bytes, size - read_bytes);
      if (n <= 0) {
        break;
      }
    }

    if (read_bytes < size) {
      return FAILURE;
    }
  }

  return SUCCESS;
}