@import url('./icons.css');

html, body {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    margin: 0;
}

.w-100 {
    width: 100% !important;
}

.h-100 {
    height: 100% !important;
}

.h-auto {
    height: auto !important;
}

.overflow-hidden {
    overflow: hidden !important;
}

.text-danger {
    color: var(--dxds-color-content-danger-default-rest);
}

.alert {
    border: 1px solid var(--dxds-color-border-transparent-rest);
    border-radius: .25rem;
    margin-bottom: 1rem;
    padding: .75rem 1.25rem;
    position: relative;
}

.alert-danger {
    background-color: var(--dxds-color-surface-danger-subdued-rest);
    border-color: var(--dxds-color-border-danger-default-rest);
    color: var(--dxds-color-content-danger-default-rest);
}

.alert-warning {
    background-color: var(--dxds-color-surface-warning-subdued-rest);
    border-color: var(--dxds-color-border-warning-default-rest);
    color: var(--dxds-color-content-warning-default-rest);
}

.alert-success {
    background-color: var(--dxds-color-surface-success-subdued-rest);
    border-color: var(--dxds-color-border-success-default-rest);
    color: var(--dxds-color-content-success-default-rest);
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--dxds-color-border-success-default-rest);
}

.invalid {
    outline: 1px solid var(--dxds-color-border-danger-default-rest);
}

.validation-message {
    color: var(--dxds-color-content-danger-default-rest);
}

.button-link {
    text-decoration: unset;
}

.title {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1rem 0;
}

.title.title-secondary {
    padding: 0.313rem 0 0;
    color: var(--dxds-color-content-secondary-default-rest);
}

.title-header-text {
    font-size: var(--dxds-font-size-headline-lg);
    font-weight: var(--dxds-font-weight-headline-default);
    letter-spacing: var(--dxds-letter-spacing-headline-lg);
    line-height: var(--dxds-line-height-headline-lg);
}

.title-content-text {
    font-size: var(--dxds-font-size-base-lg);
    font-weight: var(--dxds-font-weight-base-default);
    letter-spacing: var(--dxds-letter-spacing-base-lg);
    line-height: var(--dxds-line-height-base-lg);
}

.main-content {
    align-items: center;
    display: flex;
    height: 100%;
    justify-content: center;
    width: 100%;
}

.block-content {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    height: auto;
    max-width: 100%;
    width: 31.25rem;
}

.or {
    align-items: center;
    display: flex;
    flex-direction: row;
    padding: 0.3125rem 0;
}

.or .or-line {
    opacity: 0.2;
    width: 100%;
    border-bottom: 1px solid var(--dxds-color-content-neutral-default-rest);
}

.or .or-text {
    padding: 0 0.625rem 0 0.625rem;
    font-size: var(--dxds-font-size-caption-md);
    line-height: var(--dxds-line-height-caption-md);
    color: var(--dxds-color-content-neutral-subdued-rest);
}

.links-container {
    align-items: center;
    display: flex;
    gap: 0.25rem;
    justify-content: center;
}

.links-container .dot {
    border-radius: 50%;
    height: 0.3125rem;
    margin: 0 0.1875rem;
    opacity: 0.7;
    width: 0.3125rem;
    background-color: var(--dxds-color-surface-neutral-default-rest);
}

.manage-layout {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.info-message {
    align-items: center;
    display: flex;
    justify-content: center;
    padding: 0.625rem 1rem 0.625rem 1rem;
    position: relative;
    background: var(--dxds-color-surface-info-subdued-rest);
}

.info-message.info-panel {
    margin-bottom: 0.625rem;
}

.manage-content {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.large-input {
    font-size: 1.875rem;
    height: 4.3125rem;
}

.title-content-text-secondary {
    font-size: var(--dxds-font-size-title-md);
    line-height: var(--dxds-line-height-title-md);
}

.button-group {
    display: flex;
    flex-direction: row;
    gap: 0.625rem;
}

.confirm-button {
    margin-top: 0.3125rem;
}

.display-desktop {
    display: block;
}

.display-mobile {
    display: none;
}

@media (max-width: 768px) {
    .display-desktop {
        display: none;
    }

    .display-mobile {
        display: block;
    }
}

/* ── Calendar page ────────────────────────────────────────────────────── */
.cal-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.75rem;
}

.cal-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 0;
}

.cal-toolbar-left {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.cal-week-label {
    font-weight: 600;
    font-size: 1rem;
    padding-left: 0.5rem;
}

.cal-toolbar-right {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.cal-scheduler {
    flex: 1;
    min-height: 0;
}

.cal-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--dxds-color-content-secondary-default-rest);
}

/* ── Legend chips ───────────────────────────────────────────────────────── */
.legend-item {
    display: inline-flex;
    align-items: center;
    font-size: 0.8rem;
    padding: 0.2rem 0.75rem;
    border-radius: 9999px;
    font-weight: 500;
    color: #fff;
}

.legend-live     { background: #ef4444; }
.legend-recorded { background: #3b82f6; }
.legend-pending  { background: #f59e0b; }
.legend-repeat   { background: #8b5cf6; }

/* ── Custom appointment blocks ─────────────────────────────────────────── */
.apt-inner {
    height: 100%;
    border-radius: 4px;
    padding: 2px 5px;
    overflow: hidden;
    color: #fff;
    font-size: 0.78rem;
    line-height: 1.3;
    cursor: pointer;
}

.apt-live     { background: #ef4444; }
.apt-recorded { background: #3b82f6; }
.apt-pending  { background: #f59e0b; color: #1a1a1a; }
.apt-repeat   { background: #8b5cf6; }
.apt-default  { background: #6b7280; }

.apt-subject {
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.apt-time {
    font-size: 0.72rem;
    opacity: 0.9;
}

/* ── Event editor popup ─────────────────────────────────────────────────── */
.editor-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
}

.editor-footer-right {
    display: flex;
    gap: 0.5rem;
}

.upload-section {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem;
    background: var(--dxds-color-surface-neutral-subdued-rest);
    border-radius: 0.5rem;
}

.upload-label {
    font-weight: 600;
    font-size: 0.9rem;
}

.upload-current {
    font-size: 0.85rem;
    color: var(--dxds-color-content-success-default-rest);
}

.audio-preview {
    width: 100%;
    height: 2.25rem;
}

.upload-progress {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.upload-progress-label {
    font-size: 0.8rem;
    color: var(--dxds-color-content-secondary-default-rest);
}

.upload-progress-bar {
    width: 100%;
    height: 0.5rem;
    accent-color: #3b82f6;
}

/* ── "Repeat of" date picker dots (ProgramEventEditor) ──────────────────── */
.prev-date-dot {
    display: block;
    width: 4px;
    height: 4px;
    margin: 2px auto 0;
    border-radius: 50%;
}

/* ── Drawer branding ────────────────────────────────────────────────────── */
.logo-link {
    align-items: center;
    display: flex;
    gap: 0.5rem;
    text-decoration: none;
}

.drawer-logo-icon {
    height: 1.75rem;
    width: 1.75rem;
}

.drawer-logo-text {
    font-size: 1.4rem;
    font-weight: 800;
    letter-spacing: -0.5px;
    color: var(--dxds-color-content-neutral-default-static-dark-rest);
}


/* ── Monitor en viu ──────────────────────────────────────────────────────── */
.monitor-page { display: flex; flex-direction: column; gap: 1rem; height: 100%; }

.monitor-header { display: flex; align-items: center; justify-content: space-between; }
.monitor-title  { font-size: 1.3rem; font-weight: 700; margin: 0; }
.monitor-refresh { font-size: 0.8rem; color: var(--dxds-color-content-secondary-default-rest); }

.monitor-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 1rem; flex: 1; min-height: 0; }

.monitor-card {
    background: var(--dxds-color-surface-neutral-subdued-rest);
    border-radius: 0.75rem;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    overflow: hidden;
}

.monitor-card-header { display: flex; align-items: center; justify-content: space-between; }
.monitor-app-name    { font-weight: 700; font-size: 1rem; }

.monitor-badge { font-size: 0.75rem; font-weight: 600; padding: 0.2rem 0.7rem; border-radius: 9999px; color: #fff; }
.badge-ok      { background: #22c55e; }
.badge-error   { background: #ef4444; }
.badge-offline { background: #6b7280; }
.badge-warning { background: #f59e0b; }

.monitor-no-data { color: var(--dxds-color-content-secondary-default-rest); font-style: italic; padding: 1rem 0; }

/* Now Playing */
.now-playing-block  { background: var(--dxds-color-surface-info-subdued-rest); border-radius: 0.5rem; padding: 0.75rem 1rem; }
.now-playing-label  { font-size: 0.72rem; font-weight: 600; color: #22c55e; text-transform: uppercase; letter-spacing: 0.05em; }
.now-playing-title  { font-size: 1.1rem; font-weight: 700; margin: 0.25rem 0; }
.now-playing-artist { font-size: 0.9rem; color: var(--dxds-color-content-secondary-default-rest); margin-bottom: 0.4rem; }
.now-playing-meta   { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.now-playing-times  { font-size: 0.78rem; color: var(--dxds-color-content-secondary-default-rest); margin-left: auto; }

.tag-type     { font-size: 0.72rem; padding: 0.1rem 0.5rem; border-radius: 9999px; font-weight: 600; color: #fff; }
.tag-song     { background: #6b7280; }
.tag-programa { background: #ef4444; }
.tag-playlist { background: #3b82f6; }
.tag-genre    { font-size: 0.72rem; color: var(--dxds-color-content-secondary-default-rest); }

/* Queue */
.queue-list { overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: 0.25rem; }

.queue-item {
    display: grid;
    grid-template-columns: 3.5rem 1fr auto auto;
    gap: 0.4rem;
    align-items: center;
    padding: 0.3rem 0.5rem;
    border-radius: 0.35rem;
    font-size: 0.82rem;
}

.queue-item:hover { background: var(--dxds-color-surface-neutral-subdued-rest); }
.queue-item-event { background: rgba(239,68,68,0.07); }

.queue-item-time   { font-size: 0.75rem; color: var(--dxds-color-content-secondary-default-rest); font-variant-numeric: tabular-nums; }
.queue-item-title  { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.queue-item-artist { font-size: 0.75rem; color: var(--dxds-color-content-secondary-default-rest); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.queue-item-dur    { font-size: 0.75rem; color: var(--dxds-color-content-secondary-default-rest); font-variant-numeric: tabular-nums; }

/* Recorder */
.rec-info    { display: flex; flex-direction: column; gap: 0.4rem; }
.rec-label   { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--dxds-color-content-secondary-default-rest); }
.rec-segment { font-weight: 600; font-size: 0.95rem; }
.rec-updated { font-size: 0.75rem; color: var(--dxds-color-content-secondary-default-rest); }
.rec-stale   { color: #f59e0b; font-weight: 600; }

@media (max-width: 900px) {
    .monitor-grid { grid-template-columns: 1fr; }
}

/* ── Weekly programming template page ───────────────────────────────────── */
.prog-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.75rem;
}

.prog-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 0;
}

.prog-toolbar-left,
.prog-toolbar-right {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.prog-season-select {
    min-width: 220px;
}

.prog-scheduler {
    flex: 1;
    min-height: 0;
}

.prog-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 200px;
    color: var(--dxds-color-content-secondary-default-rest);
}

/* ── 24h continuous config page ─────────────────────────────────────────── */
.c24-page {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 0.75rem;
}

.c24-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    overflow-y: auto;
}

.c24-empty {
    color: var(--dxds-color-content-secondary-default-rest);
    font-style: italic;
    padding: 1rem 0;
}

.c24-row {
    display: grid;
    grid-template-columns: auto 1fr 1fr auto;
    align-items: center;
    gap: 0.75rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--dxds-color-border-simple);
    border-radius: 6px;
    position: relative;
}

.c24-row-times {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.c24-time {
    width: 100px;
}

.c24-dash {
    color: var(--dxds-color-content-secondary-default-rest);
}

.c24-tagbox {
    min-width: 180px;
}

.c24-row-actions {
    display: flex;
    gap: 0.4rem;
}

.c24-row-error {
    grid-column: 1 / -1;
    color: var(--dxds-color-content-danger-default-rest, #d9534f);
    font-size: 0.85rem;
}

@media (max-width: 900px) {
    .c24-row {
        grid-template-columns: 1fr;
    }
}

/* ── Playlists (ad scheduling) page ─────────────────────────────────────── */
.pl-body {
    display: flex;
    gap: 1rem;
    flex: 1;
    min-height: 0;
}

.pl-sidebar {
    width: 260px;
    flex-shrink: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.pl-sidebar-item {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--dxds-color-border-simple);
    border-radius: 6px;
    cursor: pointer;
}

.pl-sidebar-item:hover {
    background: var(--dxds-color-content-secondary-hover, rgba(0, 0, 0, 0.04));
}

.pl-sidebar-name {
    font-weight: 600;
}

.pl-sidebar-meta {
    font-size: 0.8rem;
    color: var(--dxds-color-content-secondary-default-rest);
}

.pl-scheduler-wrap {
    flex: 1;
    min-width: 0;
    display: flex;
}

.pl-empty {
    color: var(--dxds-color-content-secondary-default-rest);
    font-style: italic;
    padding: 0.5rem 0;
}

@media (max-width: 900px) {
    .pl-body { flex-direction: column; }
    .pl-sidebar { width: 100%; }
}

/* ── Playlist editor popup ───────────────────────────────────────────────── */
.pl-tracks-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 1rem;
    margin-bottom: 0.4rem;
}

.pl-total-duration {
    font-size: 0.85rem;
    color: var(--dxds-color-content-secondary-default-rest);
}

.pl-track-list {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    max-height: 240px;
    overflow-y: auto;
    margin-bottom: 0.75rem;
}

.pl-track-row {
    display: grid;
    grid-template-columns: 1fr auto auto auto;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0.5rem;
    border: 1px solid var(--dxds-color-border-simple);
    border-radius: 6px;
}

.pl-track-company {
    font-size: 0.8rem;
    color: var(--dxds-color-content-secondary-default-rest);
}

.pl-track-duration {
    font-size: 0.8rem;
    color: var(--dxds-color-content-secondary-default-rest);
}

.pl-track-actions {
    display: flex;
    gap: 0.25rem;
}

.pl-add-existing {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.5rem;
}

.pl-ad-picker {
    flex: 1;
}

.pl-upload-section {
    border-top: 1px solid var(--dxds-color-border-simple);
    padding-top: 0.75rem;
    margin-top: 0.5rem;
}

.pl-new-company {
    display: flex;
    gap: 0.5rem;
}

/* ── Copy template dialog ───────────────────────────────────────────────── */
.copy-slots-label {
    font-weight: 600;
    margin-top: 0.75rem;
}

.copy-slots-tree {
    max-height: 320px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.copy-slots-group {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.copy-slots-children {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding-left: 1.5rem;
}

/* ── Generate/copy summary popup ────────────────────────────────────────── */
.summary-success {
    font-weight: 600;
    color: var(--dxds-color-content-success-default-rest);
}

.summary-skipped-list {
    max-height: 240px;
    overflow-y: auto;
    padding-left: 1.25rem;
    font-size: 0.85rem;
}
