/*===== Variables =====*/
:root {
    --color-primary: #1846c7;
    --color-primary-hover: #1743bd;
    --color-danger: #ee215b;
    --color-text: #333;
    --color-muted: #858585;
    --color-bg: #fff;
    --color-hover: #ddd;
    --color-border: #e7e7e7;

    --border: 0.05rem solid var(--color-border);
    --border-none: 0.05rem solid #00000000;
    --radius: 0.5rem;
    --padding: 0.5rem 1rem;
    --margin-block: 0.5rem;

    --secondary-blue: #0091ff;
    --secondary-purple: #a50aff;
    --secondary-green: #22b217;
    --secondary-red: #e02e2e;
    --secondary-orange: #fa6400;
    --secondary-yellow: #f7b500;

    --secondary-blue-light: #e5f4ff;
    --secondary-purple-light: #f6e6ff;
    --secondary-green-light: #e9f7e8;
    --secondary-red-light: #fceaea;
    --secondary-orange-light: #ffefe5;
    --secondary-yellow-light: #fef8e5;

    --transition: all 0.2s ease;
    --shadow: 0 2px 4px rgba(0,0,0,0.1);
    --shadow-hover: 0 4px 12px rgba(0,0,0,0.15);
    --shadow-active: 0 1px 2px rgba(0,0,0,0.1);
}

/*===== Common =====*/
.reviews-title {
    color: var(--color-text);
    font-size: 1rem;
    font-weight: bold;
}

.error {
    color: var(--color-danger);
}

.note {
    color: var(--color-muted);
    text-align: center;
}

.normal-text {
    color: var(--color-text);
}

.muted-text {
    color: var(--color-muted);
}

/*===== Header =====*/
#reviews-header-wrapper {
    padding: var(--padding);
    border-bottom: var(--border);
}

#reviews-header-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

#reviews-header {
    font-size: 1.75rem;
    font-weight: bold;
    margin: 0;
}

#reviews-menu {
    cursor: pointer;
    background: var(--color-primary);
    color: var(--color-bg);
    font-weight: bold;
    padding: var(--padding);
    border-radius: var(--radius);
    margin: 0;
    transition: background 200ms;
}

#reviews-menu:hover {
    background: var(--color-primary-hover);
}

#reviews-isu-box a {
    background: var(--color-primary);
    color: var(--color-bg);
    font-weight: bold;
    padding: var(--padding);
    border-radius: var(--radius);
    transition: background 200ms;
}

#reviews-isu-box a:hover {
    background: var(--color-primary-hover);
}

#reviews-status-box {
    margin: 0;
    padding-bottom: 0.5rem;
}

/*===== Input =====*/
.rev-input-wrapper {
    width: 100%;
    display: flex;
    align-items: center;
    position: relative;
}

.rev-input {
    width: 100%;
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    padding-right: 2rem;
    transition: border-color 200ms;
}

.rev-input:hover {
    border-color: var(--color-hover);
}

.rev-input-reset {
    cursor: pointer;
    position: absolute;
    right: 0.5rem;
    border: none;
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 1.5rem;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    transition: background 200ms;
}

.rev-input-reset:hover {
    background: var(--color-hover);
}

/*===== Dropdown =====*/
.comments-dropdown {
    width: 100%;
    background: var(--color-border);
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    cursor: pointer;
    margin-bottom: var(--margin-block);
    transition: border-color 200ms;
}

.comments-dropdown:hover {
    border-color: var(--color-hover);
}

/*===== Search list =====*/
.search-item {
    background: var(--color-bg);
    padding: 0.375rem;
    border: var(--border);
    border-bottom: none;
    transition: background 200ms;
}

.search-item:first-child {
    border-radius: var(--radius) var(--radius) 0 0;
}

.search-item:last-child {
    border-radius: 0 0 var(--radius) var(--radius);
    border-bottom: var(--border);
}

.search-item:hover, .search-item:focus {
    background: var(--color-hover);
}

.search-id {
    color: var(--color-muted);
}

/*===== Rating =====*/
.rating-box {
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: var(--margin-block);
}

.rating-title {
    color: var(--color-muted);
}

.rating-value {
    color: var(--color-text);
}

/*===== Stars =====*/

.rating {
    display: inline-flex;
    flex-direction: row-reverse;
    line-height: 1;
}

.rating input {
    display: none;
}

.rating label {
    cursor: pointer;
    display: inline-block;
    font-size: 1.25rem;
    color: var(--color-border);

    padding: 0 1px;
    user-select: none;
    transition: color 200ms;
}

.rating input:not(:disabled) ~ label:hover,
.rating input:not(:disabled) ~ label:hover ~ label {
    color: var(--color-primary-hover);
}

.rating input:checked ~ label {
    color: var(--color-primary);
}

.rating input:disabled ~ label {
    cursor: default;
}

.rating input:disabled ~ label:hover {
    color: var(--color-border);
}

/*===== Summary block =====*/
.summaries {
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: var(--margin-block);
}

.summary {
    padding: 0.125rem;
    border-bottom: var(--border);
}

.summary:last-child {
    border-bottom: none;
}

.summary-title {
    color: var(--color-muted);
}

.summary-value {
    color: var(--color-text);
}


/*===== Comments =====*/
.comment {
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: var(--margin-block);
}

.comment-head {
    color: var(--color-muted);
    font-size: 0.625rem
}

/*===== Karma =====*/
.karma {
    display: inline-flex;
}

.karma-btn {
    cursor: pointer;
    background: var(--color-border);
    border-radius: var(--radius);
    border: var(--border);
    transition: background 200ms;
}

.karma-btn:not(:disabled):hover {
    background: var(--color-hover);
}

.karma-btn:disabled {
    cursor: default;
}

.karma-value {
    padding: 0 0.5rem;
}

/*===== Login form =====*/

.login-form {
    width: min(100%, 400px);
    margin-left: auto;
    margin-right: auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 1rem;
    border: var(--border);
    border-radius: 1rem;
}

.login-form button {
    cursor: pointer;
    background: #333;
    color: #fff;
    width: 100%;
    padding: 1rem;
    border: var(--border);
    border-radius: 1rem;
    transition: background 200ms;
}

.login-form button:hover {
    background: #4a4949;
}

.login-form input[type="email"], .login-form input[type="password"] {
    color: #333;
    background: #fff;
    width: 100%;
    padding: 1rem;
    border: var(--border);
    border-radius: 1rem;
    margin-bottom: 0.5rem;
}

/*===== Menu =====*/
.reviews-menu {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
}

.reviews-menu-item {
    cursor: pointer;
    background: var(--color-bg);
    color: var(--color-text);
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: var(--margin-block);
    margin-right: var(--margin-block);
    transition: border-color 200ms;
}

.reviews-menu-item:hover {
    border-color: var(--color-hover);
}

.reviews-menu-item:disabled {
    cursor: not-allowed;
    background: var(--color-border);
}

.reviews-menu-item:disabled:hover {
    border-color: var(--color-border);
}

/** Add review */
.add-rev-label {
    margin: 1rem 0 0.5rem 0;
    color: var(--color-text);
}

.add-rev-label:first-child {
    margin: 0 0 0.5rem 0;
}

.add-rev-status {
    margin: 0.5rem 0;
    color: var(--color-muted);
}

.rev-input-row {
    display: flex;
    flex-direction: row;
}

.rev-button {
    cursor: pointer;
    width: 100%;
    font-weight: bold;
    background: var(--color-primary);
    color: var(--color-bg);
    padding: var(--padding);
    border-radius: var(--radius);
    border: var(--border-none);
    margin-top: var(--margin-block);
    transition: background 200ms;
}

.rev-button:hover {
    background: var(--color-primary-hover);
}

.rev-button-s {
    cursor: pointer;
    width: 100%;
    font-weight: bold;
    background: var(--color-bg);
    color: var(--color-primary);
    padding: var(--padding);
    border-radius: var(--radius);
    border: var(--border-none);
    border-color: var(--color-border);
    margin-top: var(--margin-block);
    transition: border-color 200ms;
}

.rev-button-s:hover {
    border-color: var(--color-hover);
}

/** Reviews List */
.rev-list {
    margin-top: 0.5rem;
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

.rev-list-title {
    margin: 0 0.5rem 0.5rem 0;
    color: var(--color-muted);
}

.rev-list-item {
    position: relative;
    cursor: pointer;
    background: var(--color-bg);
    color: var(--color-text);
    padding: 0.325rem 2.325rem 0.325rem 0.75rem;
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: var(--margin-block);
    margin-right: var(--margin-block);
    white-space: normal;
    word-break: break-word;
}

.rev-list-item-reset {
    cursor: pointer;
    position: absolute;
    right: 0.5rem;
    top: 0.325rem;
    background: var(--color-bg);
    color: var(--color-text);
    font-size: 1.5rem;
    width: 1.5rem;
    height: 1.5rem;
    border: none;
    border-radius: 50%;
    margin: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: background 200ms;
}

.rev-list-item-reset:hover {
    background-color: var(--color-hover);
}

/** Reviews comment textarea */
.comment-textarea-wrapper {
    position: relative;
}

.comment-input {
    width: 100%;
    min-height: 10rem;
    max-height: 70vh;
    padding: 0.5rem 1rem 1.625rem 1rem;

    resize: none;

    font-family: inherit;
    line-height: 1.4;

    border: var(--border);
    border-radius: var(--radius);

    transition: border-color 200ms;
}

.comment-input:hover {
    border-color: var(--color-hover);
}

.comment-input::placeholder {
    color: var(--color-muted);
}

.comment-char-counter {
    position: absolute;
    right: 0.5rem;
    bottom: 0.5rem;

    font-size: 14px;
    color: var(--color-muted);
    pointer-events: none;
}

.comment-input.limit-exceeded {
    border-color: var(--color-danger);
}

.comment-char-counter.limit-exceeded {
    color: var(--color-danger);
}

/** Suggestion list */

.suggestions-list {
    width: 100%;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
}

.suggestions-list-item {
    width: 100%;
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    margin-bottom: 0.5rem;
}

/** Main page */

.category {
    margin-bottom: 1rem;
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
}

.category-title {
    margin: 0 0 0.5rem 0;
    color: var(--color-text);
    font-size: 1rem;
    font-weight: bold;
}

.tiles-container {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    width: 100%;
}

.tile {
    cursor: pointer;

    flex: 0 1 auto;

    font-weight: bold;

    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);

    user-select: none;
    text-decoration: none;
    transition: var(--transition);
    transform-origin: center;

    box-shadow: var(--shadow);
    white-space: normal;
    word-break: break-word;
    overflow-wrap: break-word;
    text-align: center;
    line-height: 1.3;

    gap: 0.5rem;
}

.tile:hover {
    transform: translateY(-2px);
    box-shadow: var(--shadow-hover);
}

.tile:active {
    transform: translateY(0);
    box-shadow: var(--shadow-active);
    transition-duration: 0.1s;
}

.tile:focus {
    outline: 2px solid rgba(0, 119, 255, 0.4);
    outline-offset: 2px;
}

/** Main page colors */
.tile.orange {
    background-color: var(--secondary-orange-light);
    border-color: var(--secondary-orange);
}

.tile.blue {
    background-color: var(--secondary-blue-light);
    border-color: var(--secondary-blue);
}

.tile.green {
    background-color: var(--secondary-green-light);
    border-color: var(--secondary-green);
}

.tile.red {
    background-color: var(--secondary-red-light);
    border-color: var(--secondary-red);
}

.tile.purple {
    background-color: var(--secondary-purple-light);
    border-color: var(--secondary-purple);
}

.tile.yellow {
    background-color: var(--secondary-yellow-light);
    border-color: var(--secondary-yellow);
}

/** Mod update forms */
.mod-form {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    gap: 0.325rem;
}

.mod-form-group {
    width: 100%;
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    gap: 0.325rem;
}

.mod-row {
    width: 100%;
    margin: 0;
}

#mod-subject-id {
    flex: 1;
}

.mod-input {
    padding: var(--padding);
    border: var(--border);
    border-radius: var(--radius);
    padding-right: 2rem;
    transition: border-color 200ms;
}

.mod-input:hover {
    border-color: var(--color-hover);
}