/* ModelSpace — App Styles */

/* View panel show/hide */
.view-panel {
    display: none;
}

.view-panel.active {
    display: block;
}

/* Toast container */
.toast-container {
    position: fixed;
    bottom: 1rem;
    right: 1rem;
    z-index: 1080;
}

/* Nav: hide tilakortti tab by default */
.nav-item-tilakortti {
    display: none;
}

.nav-item-tilakortti.visible {
    display: block;
}

/* Breadcrumb-style context bar */
.context-bar {
    font-size: 0.875rem;
    color: #6c757d;
    padding: 0.25rem 0;
}

/* ── Tilaohjelma Tree ── */

.tree-row {
    display: flex;
    align-items: center;
    padding: 0.4rem 0.5rem;
    border-radius: 4px;
    cursor: default;
    gap: 0.4rem;
}

.tree-row:hover {
    background-color: #f8f9fa;
}

.tree-toggle {
    cursor: pointer;
    width: 1.2rem;
    text-align: center;
    flex-shrink: 0;
    color: #6c757d;
}

.tree-toggle-placeholder {
    width: 1.2rem;
    flex-shrink: 0;
}

.tree-node-icon {
    flex-shrink: 0;
    width: 1.2rem;
    text-align: center;
}

.tree-node-building .tree-node-icon {
    color: #0d6efd;
}

.tree-node-group .tree-node-icon {
    color: #6f42c1;
}

.tree-node-space .tree-node-icon {
    color: #198754;
}

.tree-node-name {
    flex-grow: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tree-node-building .tree-node-name {
    font-weight: 600;
}

.tree-actions {
    flex-shrink: 0;
    display: flex;
    gap: 0.25rem;
    opacity: 0;
    transition: opacity 0.15s;
}

.tree-row:hover .tree-actions {
    opacity: 1;
}

.space-badge {
    font-size: 0.75rem;
    padding: 0.15rem 0.45rem;
    border-radius: 10rem;
    flex-shrink: 0;
}

.space-code {
    font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.75rem;
    color: #6c757d;
    flex-shrink: 0;
    white-space: nowrap;
}

#tilaohjelma-empty {
    display: none;
}

/* ── Library Views ── */

.scope-toggle .nav-link {
    padding: 0.25rem 0.75rem;
    font-size: 0.875rem;
}

.category-filter select {
    min-width: 160px;
}

.reqtype-badge {
    font-size: 0.7rem;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
}

/* Hide project scope toggle when no project open */
.nav-item-project-scope {
    display: none;
}

.nav-item-project-scope.visible {
    display: block;
}

/* Package items list in modal */
.package-items-list {
    min-height: 40px;
    max-height: 240px;
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 0.25rem;
}

.package-items-list:empty::after {
    content: 'Ei sisältöä. Lisää vaatimustyyppejä tai paketteja.';
    color: #6c757d;
    font-size: 0.875rem;
    display: block;
    text-align: center;
    padding: 0.5rem;
}

.package-item-row {
    display: flex;
    align-items: center;
    padding: 0.3rem 0.5rem;
    gap: 0.5rem;
    border-bottom: 1px solid #f0f0f0;
}

.package-item-row:last-child {
    border-bottom: none;
}

.package-item-row .item-name {
    flex-grow: 1;
}

.package-item-row .item-type-badge {
    font-size: 0.7rem;
    flex-shrink: 0;
}

/* ── Tilakortti ── */

.tk-items-list {
    min-height: 32px;
    max-height: 200px;
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-radius: 4px;
}

.tk-item-row {
    display: flex;
    align-items: center;
    padding: 0.25rem 0.5rem;
    gap: 0.5rem;
    border-bottom: 1px solid #f0f0f0;
}

.tk-item-row:last-child {
    border-bottom: none;
}

.tk-item-name {
    flex-grow: 1;
    font-size: 0.875rem;
}

.tk-item-count {
    flex-shrink: 0;
}

/* Requirement groups — category groups (ungrouped rows) */
.tk-req-group {
    border: 1px solid #dee2e6;
    border-radius: 6px;
    overflow: hidden;
}

.tk-req-group-header {
    background-color: #f8f9fa;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.875rem;
    user-select: none;
    display: flex;
    align-items: center;
}

.tk-req-group-header:hover {
    background-color: #e9ecef;
}

.tk-req-group.collapsed .tk-req-table,
.tk-req-group.collapsed .tk-group-add-row {
    display: none;
}

/* Package groups */
.tk-req-group-package {
    border: 1px solid #b8daff;
    border-radius: 6px;
    overflow: hidden;
}

.tk-req-group-package .tk-req-group-header {
    background-color: #e8f0fe;
    color: #0d47a1;
}

.tk-req-group-package .tk-req-group-header:hover {
    background-color: #d4e4fc;
}

.tk-req-group-package.collapsed .tk-req-table,
.tk-req-group-package.collapsed .tk-group-add-row {
    display: none;
}

.tk-group-multiplier {
    width: 55px;
    text-align: center;
    font-weight: 600;
}

.tk-group-add-row {
    padding: 0.35rem 0.75rem;
    background-color: #fafafa;
    border-top: 1px solid #dee2e6;
}

.tk-req-table {
    margin-bottom: 0 !important;
}

.tk-req-table thead th {
    background-color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
    color: #6c757d;
    border-top: 1px solid #dee2e6;
}

/* Auto-grow textarea */
.auto-grow {
    resize: none;
    overflow: hidden;
    min-height: 31px;
}

/* Picker list (in modals) */
.tk-picker-list {
    border: 1px solid #dee2e6;
    border-radius: 4px;
}

.tk-picker-item {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #f0f0f0;
    cursor: pointer;
}

.tk-picker-item:last-child {
    border-bottom: none;
}

.tk-picker-item:hover {
    background-color: #f8f9fa;
}

.tk-picker-item.added {
    background-color: #f0faf4;
}

/* ── Copy/Paste ── */

.tk-space-picker {
    border: 1px solid #dee2e6;
    border-radius: 0.25rem;
}

.tk-space-picker-item {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #f0f0f0;
    cursor: pointer;
}

.tk-space-picker-item:last-child {
    border-bottom: none;
}

.tk-space-picker-item:hover {
    background-color: #f8f9fa;
}

.tk-space-picker-item.selected {
    background-color: #e8f0fe;
    border-left: 3px solid #0d6efd;
}

.tk-space-picker-item .space-path {
    font-size: 0.78rem;
    color: #6c757d;
}

.tk-paste-section-summary {
    margin-bottom: 0.75rem;
}

.tk-paste-mode-info {
    font-size: 0.85rem;
    color: #6c757d;
}

/* ── Raportit (Reports) ── */

.report-controls .card-body {
    padding: 0.5rem 1rem;
}

.report-group-header td {
    background-color: #f0f0f0;
    font-weight: 600;
    text-align: left;
}

#report-column-list .form-check {
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
}

.report-column-section-header {
    font-size: 0.75rem;
    font-weight: 600;
    color: #6c757d;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-top: 0.75rem;
    margin-bottom: 0.25rem;
    padding-bottom: 0.15rem;
    border-bottom: 1px solid #e9ecef;
}

.report-column-section-header:first-child {
    margin-top: 0;
}

#report-table th {
    padding: 0.35rem 0.5rem;
    font-size: 0.8rem;
    white-space: nowrap;
    position: sticky;
    top: 0;
    background-color: #fff;
    z-index: 1;
}

#report-table td {
    padding: 0.3rem 0.5rem;
    font-size: 0.85rem;
}

.report-notes-cell {
    max-width: 200px;
    word-break: break-word;
}

/* ── Määrälaskenta ── */

.maaral-category-header td {
    background-color: #f0f0f0;
    font-weight: 600;
    text-align: left;
}

/* ── Bulk Operations ── */

.bulk-target-tree {
    border: 1px solid #dee2e6;
    border-radius: 6px;
    padding: 0.5rem;
    max-height: 380px;
    overflow-y: auto;
    background: #fff;
}

.bulk-tree-row {
    padding: 0.3rem 0.25rem;
    border-radius: 4px;
    cursor: default;
}

.bulk-tree-row:hover {
    background-color: #f8f9fa;
}

.bulk-tree-building {
    /* top level container */
}

.bulk-tree-group {
    margin-top: 0.15rem;
}

.bulk-tree-row label {
    cursor: pointer;
    margin-bottom: 0;
}

.bulk-tree-row input[type="checkbox"]:indeterminate {
    /* indeterminate checkboxes via JS */
    opacity: 0.7;
}

/* ── Excel Import Drop Zone ── */

.excel-drop-zone {
    border: 2px dashed #ced4da;
    border-radius: 8px;
    padding: 1.5rem;
    text-align: center;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
    background-color: #fafafa;
}

.excel-drop-zone:hover,
.excel-drop-zone--active {
    border-color: #198754;
    background-color: #f0faf4;
}

/* ── Print CSS ── */

@media print {
    /* Hide everything except the report */
    #main-nav,
    .report-controls,
    .report-actions,
    .toast-container,
    .modal,
    .modal-backdrop,
    #view-projektit,
    #view-tilaohjelma,
    #view-tilakortti,
    #view-kirjasto-vaatimustyypit,
    #view-kirjasto-paketit,
    #context-bar {
        display: none !important;
    }

    /* Force show report view */
    #view-raportit {
        display: block !important;
    }

    .container-fluid {
        padding: 0 !important;
    }

    @page {
        size: A4 landscape;
        margin: 1.5cm;
    }

    body {
        font-size: 9pt;
    }

    #report-table th {
        font-size: 10pt;
        position: static;
    }

    thead {
        display: table-header-group;
    }

    tbody tr {
        page-break-inside: avoid;
    }

    .report-group-header {
        page-break-after: avoid;
    }

    #report-table {
        border-collapse: collapse;
    }

    * {
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact;
    }
}
