//
// Edit this file in the *perseus* repo!
// (All changes outside the perseus repo will be overwritten)
//
@import "variables.less";
@import "util.less";
// Article Renderer
@import "articles.less";
#perseus {
    position: relative;
}
.framework-perseus.perseus-mobile {
    margin-top: 48px;
}
// .no-select is used to prevent selection of certain widgets.
// often, allowing selection makes for an awkward mobile experience
// where you constantly highlight elements unintentionally.
.no-select {
    -moz-user-select: -moz-none;
    -khtml-user-select: none;
    -webkit-user-select: none;
    -o-user-select: none;
    user-select: none;
}
// .blank-background is used to prevent drawing under transparent widgets.
// drawing under transparent widgets is particularly annoying because if
// you lift up your pen and put it down again, you can't continue drawing,
// because you're now clicking on the widget. This is very
// counterintuitive, so we simply don't let you see anything you draw under
// a widget.
.blank-background {
    background-color: #FDFDFD;  // Keep in sync with KhanUtil._BACKGROUND
}
// There is no scratchpad in the answer_area, and it has a different color
// background, so just make it transparent
#answer_area .blank-background {
    background-color: transparent;
}
.above-scratchpad {
    position: relative;
    z-index: @zIndexAboveScratchpad;
}
// All graphie components placed above the scratchpad should have their
// background wiped out.
.graphie.above-scratchpad,
.graphie-container.above-scratchpad {
    .blank-background;
}
.perseus-mobile .graphie-container.above-scratchpad {
    background: #ffffff;
}
// Selectable graphie components make for awkward touch experiences
.graphie {
    .no-select;
}
.perseus-interactive,
.perseus-interactive.above-scratchpad {
    position: relative;
    z-index: @zIndexInteractiveComponent;
}
&,  // and moar specificity...
#answercontent input[type=text],
#answercontent input[type=number],
.framework-perseus input[type=text],
.framework-perseus input[type=number] {
    &.perseus-input-size-normal
    {
        border: 1px solid #ccc;
        width: 80px;
    }
    &.perseus-input-size-small {
        border: 1px solid #ccc;
        width: 40px;
    }
}
.framework-perseus {
    #problemarea {
        input, button {
            .perseus-interactive;
        }
    }
    div.paragraph {
        .legacy-typography;
        margin: 22px 0px;
    }
    div.instructions {
        display: block;
        font-style: italic;
        font-weight: bold;
    }
    .perseus-renderer > .paragraph > ul:not(.perseus-widget-radio) {
        margin: -11px 0px 22px 0px;  // first-level lists need padding
    }
    .paragraph ul:not(.perseus-widget-radio) {
        .legacy-typography;
        padding-left: 35px;
    }
    .paragraph ul:not(.perseus-widget-radio) li {
        list-style-type: disc;
    }
    .paragraph ol {
        list-style: decimal;
        padding-left: 2em;
    }
    blockquote {
        padding: 0 2.5em;
    }
    .zoomable {
        -webkit-tap-highlight-color: rgba(0,0,0,0);
        -webkit-touch-callout: none;
    }
    // We do not apply this styling to MathQuill elements because the
    // styles interfere with calculation of the size of the container
    // surrounding the math.
    sup:not(.mq-non-leaf) {
        font-size: smaller;
        vertical-align: super;
        // by default, vertical-align: super changes the line height of
        // the line this text is in, which repositions surrounding text
        // and is sad. This is especially important for the passage
        // widget, as changes to line-height there make the line numbers
        // incorrect. This hack fixes that, and seems to not cause problems
        // even if there is no other text on the line (it still gets the
        // standard line-height of what non `vertical-align: super` text
        // would be.
        line-height: 0;
    }
    // place on a div above the inputs
    .range-input {
        border: 1px solid #ccc;
        border-radius: 5px;
        display: inline-block;
        padding: 0px 5px;
        & > input {
            border: 0;
            display: inline;
            text-align: center;
            width: 30px;
        }
        & > span {
            color: #999;
            font-size: 14px;
        }
    }
    .number-input {
        border: 1px solid #ccc;
        border-radius: 5px;
        margin: 0; // override
        padding: 5px 0; // override
        text-align: center;
        width: 40px;
        &.invalid-input {
            background-color: @red;
            outline-color: red;
        }
        &.mini {
            width: 40px;
        }
        &.small {
            width: 60px;
        }
        &.normal {
            width: 80px;
        }
    }
    .math-output {
        display: inline-block;
        min-width: 80px;
        min-height: 36px;
        border-radius: 5px;
        padding: 0;
        margin-top: 4px;
        margin-bottom: 4px;
        background: white;
        border: 1px solid #a4a4a4;
    }
    .graph-settings {
        .graph-settings-axis-label {
            border: 1px solid #ccc;
            border-radius: 5px;
            display: inline-block;
            padding: 5px 5px;
            width: 70px;
            float: right;
            margin: 0 5px;
        }
        .graph-settings-background-url {
            width: 250px;
        }
    }
    .graphie-container {
        // TODO(alex): Is this still used?
        position: relative;
    }
    .graph-settings, .image-settings, .misc-settings {
        padding-bottom: 5px;
    }
    .misc-settings, .type-settings {
        border-top: 1px solid black;
        padding-top: 5px;
    }
    .svg-image {
        display: inline-block;
    }
    .unresponsive-svg-image, .perseus-rendered-radio .unresponsive-svg-image {
        display: inline-block;
        position: relative;
        > .graphie-container {
            position: absolute;
            top: 0;
            left: 0;
        }
    }
    .fixed-to-responsive {
        position: relative;
        width: 100%;
        // The first child is different than the rest - it's a div
        // with vertical padding that reserves space for the rest
        // of the children (which are absolutely positioned and
        // thus can't claim space for themselves).
        > :not(:first-child) {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
        }
    }
}
/* Legacy table styles. Remove when XOM is rolled out (see below for
   updated XOM styles). */
.framework-perseus:not(.perseus-mobile) {
    table {
        .legacy-typography;
        th, td {
            padding: 5px 10px;
            text-align: left;
            &[align=center] {
                text-align: center;
            }
            &[align=right] {
                text-align: right;
            }
        }
        th {
            border-bottom: 2px solid #ccc;
            font-weight: bold;
            padding-bottom: 2px;
        }
        tr:nth-child(odd) {
            // Doesn't work in IE8 :(
            td {
                background-color: #ededed;
            }
        }
    }
    .perseus-titled-table {
        display: inline-block;
        // Center the table in a titled table
        table {
            margin-left: auto;
            margin-right: auto;
        }
    }
    // Center the title in a titled table
    .perseus-table-title {
        text-align: center;
        font-size: larger;
    }
    table.non-markdown {
        tr:nth-child(odd) {
            td {
                background-color: transparent;
            }
        }
        th, td {
            border-width: 0;
        }
    }
}
/* New XOM styles for tables. */
.framework-perseus.perseus-mobile {
    /* There are three kinds of tables:
       1) normal "tables" - emitted by markdown (src/perseus-markdown.jsx)
       2) "titled tables" - emitted by markdown as well (these are just
          tables with a title, and encased in one more element)
       3) "table widget" - where a user is expected to enter answers in a
          table form (src/widgets/table.jsx).
      Moreover, there the Categorizer widget uses 
 tags, so these
      stylings will apply there as well.  */
    // TODO(benkomalo): be more explicit by adding className values to all
    // widgets and stop relying on tag names when using CSS. or use aphrodite
    // evurrwhere
    table {
        border-collapse: collapse;
        margin: 0 auto;
        tbody > tr {
            border: 1px solid #e5e5e5;
        }
        th,
        td {
            padding: 16px;
            text-align: left;
            &[align=center] {
                text-align: center;
            }
            &[align=right] {
                text-align: right;
            }
        }
        td {
            background: #fff;
        }
        th {
            font-weight: bold;
        }
    }
    @media (max-width: @pure-sm-max) {
        table {
            // Make tables "full-bleed" on phones.
            width: 100%;
            min-width: 480px;
            tbody > tr {
                border-left: 0;
                border-right: 0;
            }
        }
    }
    .perseus-titled-table {
        display: inline-block;
    }
    // Center the title in a titled table
    .perseus-table-title {
        text-align: center;
        font-size: larger;
    }
    table.non-markdown {
        // No customizations for table widgets for now.
    }
}
/* Widget CSS */
.perseus-graph-padding {
    padding: 25px 25px 0 0;
}
@import "widgets/categorizer.less";
@import "widgets/dropdown.less";
@import "widgets/expression.less";
@import "widgets/grapher.less";
@import "widgets/graded-group.less";
@import "widgets/group.less";
@import "widgets/image.less";
@import "widgets/interactive-graph.less";
@import "widgets/matcher.less";
@import "widgets/matrix.less";
@import "widgets/measurer.less";
@import "widgets/orderer.less";
@import "widgets/passage.less";
@import "widgets/plotter.less";
@import "widgets/radio.less";
@import "widgets/reaction-diagram.less";
@import "widgets/sequence.less";
@import "widgets/sortable.less";
@import "widgets/table.less";
@import "widgets/transformer.less";
@import "widgets/unit.less";
.perseus-widget-container {
    &.widget-nohighlight {
        transition: all 0.15s;
    }
    &.widget-highlight {
        @highlight: 0px 0px 0px 2px rgba(255, 165, 0, 1);
        -webkit-box-shadow: @highlight;
        -moz-box-shadow:    @highlight;
        box-shadow:         @highlight;
        transition: all 0.15s;
    }
    &.widget-inline {
        display: inline;
    }
    &.widget-inline-block {
        display: inline-block;
    }
}
// Hide new hints styling everywhere except Bibliotron. Note that the Bibliotron
// styles are used both in webapp and in the mobile native apps.
.bibliotron-exercise .perseus-hint-renderer {
    border-left: 4px solid #f6f7f7;
    padding-left: 16px;
    position: relative;
    &:focus {
        border-left-color: #d6d8da;
        outline: none;
    }
    &:before,
    &:after {
        content: "";
        display: table;
        clear: both;
    }
    // NOTE(charlie): In XOM, these margins get overridden with the paragraph
    // defaults. Instead, we apply similar margins through inline styles in
    // `hints-renderer.jsx`.
    div.paragraph {
        margin-top: 0px;
        margin-bottom: 16px;
    }
    &.last-hint {
        margin-bottom: 32px;
    }
}
@media (max-width: @pure-sm-max) {
    .bibliotron-exercise .perseus-hint-renderer {
        &.last-hint {
            margin-bottom: 0;
        }
    }
}
@default3: #00457c;
@science3: #9e034e;
@math3: #007d96;
@economics3: #a75a05;
@partner3: #208170;
@humanities3: #be2612;
@testPrep3: #543b78;
@cs3: #0d923f;
.perseus-hint-label {
    color: @default3;
    display: none;
    font-weight: 600;
    margin-right: 13px;
    position: absolute;
    right: 100%;
    white-space: nowrap;
}
.perseus-domain-science .perseus-hint-label {
    color: @science3;
}
.perseus-domain-math .perseus-hint-label {
    color: @math3;
}
.perseus-domain-economics .perseus-hint-label {
    color: @economics3;
}
.perseus-domain-partner .perseus-hint-label {
    color: @partner3;
}
.perseus-domain-humanities .perseus-hint-label {
    color: @humanities3;
}
.perseus-domain-test-prep .perseus-hint-label {
    color: @testPrep3;
}
.perseus-domain-cs .perseus-hint-label {
    color: @cs3;
}
.bibliotron-exercise .perseus-hint-renderer.last-rendered .perseus-hint-label {
    display: block;
}
@media (max-width: @pure-sm-max) {
    .bibliotron-exercise .perseus-hint-renderer.last-rendered .perseus-hint-label {
        display: none;
    }
}
// TODO(joel) - remove?
.perseus-tooltip {
    background: #fff;
    padding: 5px 10px;
    width: 240px;
}
// CSS is evil; let's overwrite some styles. T_T
.perseus-formats-tooltip {
    .perseus-tooltip;
    color: #777;
}
.framework-perseus .perseus-formats-tooltip .paragraph > ul {
    padding: 0;
    margin: -20px 0 -16px 0;
    > li {
        list-style-type: none;
    }
}
.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) {
          box-shadow: @shadow;
       -o-box-shadow: @shadow;
      -ms-box-shadow: @shadow;
     -moz-box-shadow: @shadow;
  -webkit-box-shadow: @shadow;
}
.perseus-math-input.mq-editable-field.mq-math-mode {
    // Mimic native text input
    background: #fff;
    // If the font-size is too small, super/subscripts become hard to input
    font-size: 18px;
    // Make the click target easier to hit
    min-width: 100px;
    // Mimic native text input w/o using -moz/-webkit-apperance: textfield
    // border-color: rgb(78, 187, 212);
    border-color: #a4a4a4;
    border-radius: 5px;
    & > .mq-root-block {
        // A bit of extra whitespace here greatly improves legibility
        padding: 4px;
    }
    // Fixes for strange default MathQuill styles:
    // Cursor shouldn't actually be touching left border
    .mq-cursor {
        padding-left: 0;
    }
    // Don't gray out implicitly created closing parens
    .mq-paren.mq-ghost {
        color: inherit;
    }
    // Don't put vertical margins on an expression wrapped in parens
    // because it messes up baseline alignment, e.g. h(x)
    .mq-paren + span {
        margin: 0;
    }
    .mq-binary-operator {
        // MathQuill uses Symbola to render binary operators.  Unfortunately,
        // Firefox 47 on Windows doesn't render the +/- signs correctly when
        // using Symbola so we override it and use KaTeX_Main instead.
        font-family: KaTeX_Main !important;
    }
    sup {
        // This is set to 0 across Perseus normally, but we need to override it
        // here so nth-roots are rendered correctly.
        line-height: normal;
    }
}
// override normal 5px border radius for the editor only
.perseus-widget-editor .perseus-math-input.mq-editable-field.mq-math-mode > .mq-root-block {
    border-radius: 0;
}
// This style looks a little off in the expression editor. Luckily users don't
// use the expression editor.
.math-input-buttons {
    background-color: rgba(255, 255, 255, 0.7);
    border-radius: 5px;
    border: 1px solid #ddd;
    box-sizing: border-box;
    margin-top: 5px;
    padding: 2px;
    // each button is 35 + 4 px, plus 4 padding, plus 2 border
    width: 39px*5 + 4px + 2px; // (201)
    &.absolute {
        left: -2px;
        position: absolute;
        top: -3px;
        z-index: @zIndexCalculator;
    }
};
// Math domain color
@borderColor: #1c758a;
.tex-button {
    display: block;
    float: left;
    width: 35px;
    height: 35px;
    margin: 2px;
    border: 1px solid @borderColor;
    background-color: white;
    border-radius: 5px;
    &:hover {
        cursor: pointer;
        background-color: #f0f0f0;
    }
    &:focus {
        border: 2px solid @borderColor;
        outline: none;
    }
}
.tex-button-row {
    margin: 5px 0;
    &:first-child {
        margin-top: 0;
    }
    &:last-child {
        margin-bottom: 0;
    }
}
.renderer-widget-error {
    background-color: #fcc;
}
@satTopSpacingForTwoColumnLayout: 48px;
@satTwoColumnLayoutSideMargin: 32px;
// #sat-mission (below) matches when we're inside the SAT MVP product,
// basically internal-only and in flux.
#sat-mission {
    @satContentWidth: 592px;
    .content-area > div {
        margin-left: auto;
        margin-right: auto;
        width: @satContentWidth;
        .perseus-input-with-label {
            display: flex;
            align-items: center;
            .perseus-input-label {
                font-weight: 600;
                padding-right: 10px;
            }
        }
        .perseus-input-with-answer-blurb {
            // numeric-inputs widgets use labels whereas input-number widgets
            // use spans.
            > span, > label {
                display: inline-block;
            }
            .perseus-possible-answers, .perseus-possible-answers:before {
                font-family: "Proxima Nova Semibold"
            }
            .perseus-possible-answers {
                color: rgb(0, 153, 0);
                display: inline-block;
                padding-right: 4px;
                dt, dd {
                    // If you just use inline, then screen readers (or at least
                    // ChromeVox) won't read the answers as distinct items;
                    // if 2 and 4 were both correct, then it would read them
                    // concatenated as "twenty-four".
                    display: inline-block;
                }
                dt {
                    padding: 0 5px 0 13px;
                    color: rgb(18, 18, 18);
                    text-transform: uppercase;
                }
                dt::after {
                    content: ":";
                }
                dd:not(:last-child)::after {
                    // TODO(johnsullivan): Figure out a better way to do this list
                    // joining.
                    // TODO(mattdr): Joining in CSS makes semantic sense here
                    // (they're definition list entries that we happen to be
                    // rendering as a line of text joined by "or"), but CSS is
                    // more difficult to internationalize. SAT is English-only
                    // for now, though.
                    content: "or";
                    padding: 0 5px;
                    color: rgb(18, 18, 18);
                }
            }
        }
        input.perseus-incorrect {
            color: @satIncorrectColor;
            background-color: @satIncorrectBackgroundColor;
            border: solid 1px @satIncorrectBorderColor;
        }
        input.perseus-correct {
            color: @satCorrectColor;
            background-color: @satCorrectBackgroundColor;
            border: solid 1px @satCorrectBorderColor;
        }
        input.perseus-unanswered {
            background-color: #eee;
            border: solid 1px #999;
        }
        &.perseus-renderer-two-columns {
            width: 1024px;
            // This prevents a strange blank space from appearing above
            // passages.
            // TODO(johnsullivan): Try and get rid of the wrapping div that's
            // causing this instead of modifying its margin like this.
            & > .paragraph {
                margin: 0;
            }
            .perseus-two-columns {
                display: flex;
                justify-content: center;
            }
            .perseus-column {
                // NOTE(emily): For some reason, these prefixes aren't being
                // added by our auto-prefixer, and we need these prefixes to
                // work in Safari <= 8.
                display: -webkit-flex;
                -webkit-flex-direction: column;
                display: flex;
                flex-direction: column;
                width: 512px;
                &:nth-child(1) {
                    background: #eee;
                    border-right: 1px solid #ddd;
                    box-sizing: border-box;
                    .perseus-column-content {
                        padding-top: @satTopSpacingForTwoColumnLayout;
                        padding-bottom: 22px;
                        padding-left: 46px;
                        padding-right: @satTwoColumnLayoutSideMargin;
                    }
                    .perseus-widget-passage-container {
                        position: relative;
                        .perseus-widget-passage-instructions div.paragraph {
                            margin-top: 0;
                        }
                    }
                    .perseus-widget-passage {
                        // We've replaced the margin here with padding in the
                        // parent element to stay consistent with non-passage
                        // two-column mode.
                        margin: 0;
                    }
                    & > .paragraph {
                        margin-right: 40px;
                    }
                    blockquote {
                        padding: 0;
                        margin-right: 22px;
                        & > .paragraph:nth-child(1) {
                            margin-top: 0;
                        }
                    }
                }
                &:nth-child(2) {
                    .perseus-column-content {
                        padding-left: @satTwoColumnLayoutSideMargin;
                        padding-right: @satTwoColumnLayoutSideMargin;
                    }
                    .perseus-group {
                        margin-bottom: 20px;
                    }
                }
            }
            .perseus-column-content {
                flex: 1 1 auto;
                overflow-y: auto;
                & > .paragraph {
                    margin-top: 0;
                }
            }
        }
    }
    input[type=text],
    input[type=number] {
        border: 1px solid #aaa;
        font-family: @boldFontFamily;
        font-size: 14px;
        margin: 10px 0;
        padding: 5px;
        &:focus {
            border-color: @satBlue;
            box-shadow: 0 0 10px fade(@satBlue, 80%);
            outline: none;
        }
    }
    .valid-answer-mixin() {
        input[type=text]:valid, input[type=number]:valid {
            border: 1px solid @satBlue;
            background: @satSelectedBackgroundColor;
            color: initial;
            &:focus {
                box-shadow: 0 0 10px fade(@satBlue, 80%);
            }
        }
    }
    .invalid-answer-mixin() {
        input[type=text]:valid, input[type=number]:valid {
            color: @satIncorrectColor;
            background-color: @satIncorrectBackgroundColor;
            border: solid 1px @satIncorrectBorderColor;
            &:focus {
                box-shadow: 0 0 10px fade(@satIncorrectBorderColor, 80%);
            }
        }
    }
    // If a textbox appears inside a Perseus group widget, then the group
    // widget's validity should override the item's validity when styling that
    // item.
    //
    // That is, if a group widget is valid, but the item as a whole is
    // invalid, inputs inside the valid group widget should still render as
    // valid.
    //
    // This is implemented as a mixin and mixed into .valid-answer and
    // .invalid-answer, in order to ensure that there's no ambiguity as to
    // which selector takes precedence. Additionally, this ensures that these
    // styles will only be applied when validity is relevant to the user (i.e.
    // not in review mode).
    .perseus-group-validity-override() {
        .perseus-group-valid-answer {
            .valid-answer-mixin();
        }
        .perseus-group-invalid-answer {
            .invalid-answer-mixin();
        }
    }
    .valid-answer {
        .valid-answer-mixin();
        .perseus-group-validity-override();
    }
    .invalid-answer {
        .invalid-answer-mixin();
        .perseus-group-validity-override();
    }
    #sat-route-task, #sat-route-section {
        .content-area > .perseus-renderer-two-columns {
            // Override column top margin to 0 (the first column will get
            // the desired spacing by adding padding - to preserve the
            // gray background)
            margin-top: 0;
            // Add spacing to the second column, by way of its first child.
            // We want the margins to auto collapse, and so we can't add
            // it to perseus-column because it's floated.
            .perseus-column:nth-child(2) > .perseus-column-content > :first-child {
                margin-top: @satTopSpacingForTwoColumnLayout;
            }
        }
    }
}
.perseus-error {
    background: @red;
    border: 2px solid red;
    border-radius: 5px;
    padding: 20px;
    margin: 15px 0 10px;
}
@media (max-width: @pure-sm-max) {
    .perseus-renderer-responsive {
        margin: 0 @phoneMargin;
        // Horizontal margins should only be applied to top-level Renderers.
        .perseus-renderer-responsive {
            margin: 0;
        }
    }
}
.perseus-mobile {
    @media (max-width: 767px) {
        .perseus-block-math {
            font-size: 18px;
        }
    }
}
/* math-input CSS */
@import (inline) "../embedded/math-input.css";