*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; color: #1f2937; background: #f9fafb; line-height: 1.5; }
a { color: #2563eb; text-decoration: none; }
a:hover { text-decoration: underline; }
.container { max-width: 1100px; margin: 0 auto; padding: 0 1rem; }

.topbar { background: #111827; color: #fff; padding: .75rem 0; }
.topbar .container { display: flex; justify-content: space-between; align-items: center; }
.topbar .brand { color: #fff; font-weight: 700; font-size: 1.125rem; }
.topbar nav { display: flex; align-items: center; gap: 1rem; }
.topbar nav a { color: #d1d5db; }
.topbar nav .user { color: #9ca3af; font-size: .875rem; }
.topbar nav .logout { color: #fca5a5; }

main.container { padding-top: 1.5rem; padding-bottom: 3rem; }
h1 { font-size: 1.75rem; margin-top: 0; }
h2 { font-size: 1.25rem; margin-top: 2rem; }
.muted { color: #6b7280; }
.small { font-size: .875rem; }
.text-right { text-align: right; }

.card { background: #fff; border: 1px solid #e5e7eb; border-radius: .5rem; padding: 1rem 1.25rem; margin-bottom: 1.5rem; }
.card .row { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .75rem; }

.status-row { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.status-row-spacer { flex: 1 1 auto; }

.meta-row { display: grid; grid-template-columns: 200px 1fr; gap: 1rem; align-items: end; }
.meta-row label { display: block; font-size: .8125rem; color: #4b5563; margin: 0; }
.meta-row select, .meta-row textarea {
    display: block; width: 100%; padding: .375rem .5rem; margin-top: .25rem;
    border: 1px solid #d1d5db; border-radius: .25rem; font-size: .875rem; font-family: inherit;
}
.meta-row textarea { resize: vertical; min-height: 2rem; }

.alert { padding: .75rem 1rem; border-radius: .375rem; margin-bottom: 1rem; }
.alert-danger { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }
.alert-warning { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }

.table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid #e5e7eb; border-radius: .5rem; overflow: hidden; }
.table th, .table td { padding: .625rem .875rem; border-bottom: 1px solid #e5e7eb; text-align: left; vertical-align: middle; }
.table th { background: #f3f4f6; font-weight: 600; font-size: .875rem; color: #374151; }
.table tbody tr:last-child td { border-bottom: none; }
.table tbody tr:hover { background: #eff6ff; }

.badge { display: inline-block; padding: .125rem .5rem; border-radius: .25rem; font-size: .75rem; font-weight: 500; background: #e5e7eb; color: #374151; }
.badge-success { background: #d1fae5; color: #065f46; }
.status-100 { background: #f3f4f6; color: #6b7280; }   /* черновик */
.status-108 { background: #dbeafe; color: #1e40af; }   /* на согласовании */
.status-104 { background: #fef3c7; color: #92400e; }   /* требует уточнения */
.status-111 { background: #fde68a; color: #78350f; }   /* требует подтверждения */
.status-144, .status-149 { background: #fee2e2; color: #991b1b; }   /* отменены */
.status-1 { background: #dbeafe; color: #1e40af; }     /* legacy 'Заявка' */
.status-8, .status-9, .status-11 { background: #ede9fe; color: #5b21b6; }
.status-12, .status-13, .status-15 { background: #cffafe; color: #155e75; }
.status-18 { background: #d1fae5; color: #065f46; }

.btn {
    display: inline-block;
    padding: .375rem .875rem;
    border-radius: .375rem;
    background: #fff;
    color: #111827;
    border: 1px solid #d1d5db;
    cursor: pointer;
    font-size: .875rem;
    line-height: 1.5;
    text-decoration: none;
    vertical-align: middle;
    box-sizing: border-box;
    font-family: inherit;
    /* убрать дефолтное поведение <summary> чтоб совпадало с <a>/<button> */
    list-style: none;
}
.btn::-webkit-details-marker { display: none; }
.btn::marker { content: ''; }
.btn:hover { background: #f3f4f6; text-decoration: none; }
.btn-primary { background: #2563eb; color: #fff; border-color: #2563eb; }
.btn-primary:hover { background: #1d4ed8; color: #fff; }
.btn-sm { padding: .25rem .625rem; font-size: .8125rem; }

.auth-box { max-width: 360px; margin: 4rem auto; background: #fff; padding: 2rem; border-radius: .5rem; border: 1px solid #e5e7eb; }
.auth-box h1 { font-size: 1.25rem; margin-top: 0; text-align: center; }
.auth-box label { display: block; margin-bottom: 1rem; font-size: .875rem; font-weight: 500; }
.auth-box input { display: block; width: 100%; padding: .5rem .625rem; margin-top: .25rem; border: 1px solid #d1d5db; border-radius: .375rem; font-size: 1rem; font-weight: 400; }
.auth-box .btn { width: 100%; padding: .625rem; font-weight: 500; }

.status-history-table th { font-weight: 600; font-size: .8125rem; }
.status-history-table td { vertical-align: top; }

.header-row { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; gap: 1rem; flex-wrap: wrap; }
.header-row h1 { margin: 0; }
.header-actions { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.header-actions .cancel-details { position: relative; }
.header-actions .cancel-form {
    position: absolute;
    right: 0;
    top: 100%;
    z-index: 10;
    margin-top: .25rem;
    min-width: 360px;
    box-shadow: 0 4px 16px rgba(0,0,0,.1);
}
.cancel-form .form-actions { display: flex; gap: .5rem; justify-content: flex-end; }

.item-comment {
    margin-top: .25rem;
    padding: .25rem .5rem;
    background: #fef3c7;
    color: #78350f;
    border-left: 3px solid #fcd34d;
    border-radius: .25rem;
    font-style: italic;
}
.item-comment-edit {
    margin-left: .5rem;
    text-decoration: none;
    opacity: .5;
}
.item-comment-edit:hover {
    opacity: 1;
    text-decoration: none;
}
form.inline { display: inline; }
form.inline-form { display: flex; align-items: flex-end; gap: .75rem; flex-wrap: wrap; }
form.inline-form label { display: block; flex: 1 1 250px; font-size: .8125rem; color: #4b5563; margin: 0; }
form.inline-form input, form.inline-form select, form.inline-form textarea {
    display: block; width: 100%; padding: .375rem .5rem; border: 1px solid #d1d5db;
    border-radius: .25rem; font-size: .875rem; font-family: inherit; margin-top: .25rem;
}

hr { border: none; border-top: 1px solid #e5e7eb; margin: 1rem 0; }
.mt-1 { margin-top: .25rem; }

.alert-info { background: #dbeafe; color: #1e3a8a; border: 1px solid #93c5fd; }
.alert-flash {
    animation: alertFadeOut .6s ease-in 4s forwards;
    cursor: pointer;
}
@keyframes alertFadeOut {
    to {
        opacity: 0;
        visibility: hidden;
        max-height: 0;
        padding-top: 0;
        padding-bottom: 0;
        margin-top: 0;
        margin-bottom: 0;
        border-width: 0;
    }
}

.actions-row { display: flex; gap: 1rem; flex-wrap: wrap; align-items: flex-start; margin: 1.5rem 0; }
.btn-danger { background: #dc2626; color: #fff; border-color: #dc2626; }
.btn-danger:hover { background: #b91c1c; color: #fff; }

.cancel-details { display: inline-block; }
.cancel-details summary { list-style: none; cursor: pointer; user-select: none; }
.cancel-details summary::-webkit-details-marker { display: none; }
.cancel-form { background: #fff; border: 1px solid #e5e7eb; border-radius: .5rem; padding: 1rem; margin-top: .5rem; max-width: 400px; }
.cancel-form label { display: block; font-size: .875rem; }
.cancel-form textarea { width: 100%; padding: .5rem; margin: .25rem 0 .75rem; border: 1px solid #d1d5db; border-radius: .25rem; font-family: inherit; }

/* form add-item */
.add-item-form .grid {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: .75rem; margin-bottom: 1rem;
}
.add-item-form label {
    display: block; font-size: .8125rem; color: #4b5563; margin: 0;
}
.add-item-form select, .add-item-form input {
    display: block; width: 100%; padding: .375rem .5rem; margin-top: .25rem;
    border: 1px solid #d1d5db; border-radius: .25rem; font-size: .875rem;
}
.add-item-form select:disabled { background: #f3f4f6; color: #9ca3af; }
/* Choices.js — синхронизировать высоту с нативными select'ами */
.add-item-form .choices { margin-top: .25rem; margin-bottom: 0; }
.add-item-form .choices__inner { min-height: auto; padding: .25rem .5rem; font-size: .875rem; }
.add-item-form .choices__list--single { padding: 0 16px 0 0; }
.add-item-form .choices[data-type*=select-one]::after { right: 8px; }
.add-actions {
    display: flex; align-items: flex-end; gap: 1rem; margin-top: .5rem;
}
.add-actions label { flex: 0 0 100px; }
.add-actions-spacer { flex: 1 1 auto; }

.qty-form { display: inline; }
.qty-form input { width: 60px; padding: .25rem .375rem; border: 1px solid #d1d5db; border-radius: .25rem; font-size: .875rem; }

/* pricing_state colors */
.state-success { background: #d1fae5; color: #065f46; }
.state-warning { background: #fef3c7; color: #92400e; }
.state-orange  { background: #ffedd5; color: #9a3412; }
.state-danger  { background: #fee2e2; color: #991b1b; }
