body,form,figure{margin:0;padding:0}img{border:0}header,footer,nav,section,aside,article,figure,figcaption{display:block}body{font-size:100.01%}select,input,textarea{font-size:99%}#container,.inside{position:relative}#main,#left,#right{float:left;position:relative}#main{width:100%}#left{margin-left:-100%}#right{margin-right:-100%}#footer{clear:both}#main .inside{min-height:1px}.ce_gallery>ul,.content-gallery>ul{margin:0;padding:0;overflow:hidden;list-style:none}.ce_gallery>ul li,.content-gallery>ul li{float:left}.ce_gallery>ul li.col_first,.content-gallery>ul li.col_first{clear:left}.float_left,.media--left>figure{float:left}.float_right,.media--right>figure{float:right}.block{overflow:hidden}.media{display:flow-root}.clear,#clear{height:.1px;font-size:.1px;line-height:.1px;clear:both}.invisible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.custom{display:block}#container:after,.custom:after{content:"";display:table;clear:both}
@media (max-width:767px){#wrapper{margin:0;width:auto}#container{padding-left:0;padding-right:0}#main,#left,#right{float:none;width:auto}#left{right:0;margin-left:0}#right{margin-right:0}}img{max-width:100%;height:auto}.audio_container audio{max-width:100%}.video_container video{max-width:100%;height:auto}.aspect,.responsive{position:relative;height:0}.aspect iframe,.responsive iframe{position:absolute;top:0;left:0;width:100%;height:100%}.aspect--16\:9,.responsive.ratio-169{padding-bottom:56.25%}.aspect--16\:10,.responsive.ratio-1610{padding-bottom:62.5%}.aspect--21\:9,.responsive.ratio-219{padding-bottom:42.8571%}.aspect--4\:3,.responsive.ratio-43{padding-bottom:75%}.aspect--3\:2,.responsive.ratio-32{padding-bottom:66.6666%}
/*
 * Stratum Client Portal — Frontend Styles
 *
 * Vanilla CSS for the client board and project board frontend modules.
 * Uses custom properties prefixed with --stratum- (independent of Contao's
 * backend CSS variables, which are not available on the frontend).
 *
 * Class names match the Twig templates:
 *   - mod_client_portal_client_board.html.twig
 *   - mod_client_portal_project_board.html.twig
 */

/* ── Custom properties ────────────────────────────────────────── */

.stratum-message,
.stratum-client-board,
.stratum-project-board {
    --stratum-text: #1f2937;
    --stratum-text-muted: #6b7280;
    --stratum-bg: #ffffff;
    --stratum-card-bg: #ffffff;
    --stratum-card-border: #e5e7eb;
    --stratum-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    --stratum-accent: #2563eb;
    --stratum-accent-hover: #1d4ed8;
    --stratum-divider: #f3f4f6;
    --stratum-radius: 8px;
    --stratum-radius-sm: 4px;
    --stratum-milestone-border: #d1d5db;
    --stratum-task-border: #e5e7eb;
    --stratum-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
        "Helvetica Neue", Arial, sans-serif;

    font-family: var(--stratum-font);
    color: var(--stratum-text);
    line-height: 1.5;
}

/* ── Shared: message / error state ────────────────────────────── */

.stratum-message {
    max-width: 600px;
    margin: 2rem auto;
    padding: 2rem;
    text-align: center;
}

.stratum-message .greeting {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0 0 0.5rem;
}

.stratum-message .notice {
    font-size: 0.95rem;
    color: var(--stratum-text-muted);
    margin: 0;
}

/* ══════════════════════════════════════════════════════════════════
   CLIENT BOARD
   ══════════════════════════════════════════════════════════════════ */

.stratum-client-board {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem 0;
}

/* ── Client header (logo + name) ──────────────────────────────── */

.client-header {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.client-logo {
    flex-shrink: 0;
}

.client-logo img {
    max-width: 120px;
    max-height: 80px;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: var(--stratum-radius-sm);
}

.client-name {
    font-size: 1.5rem;
    font-weight: 700;
    margin: 0;
    color: var(--stratum-text);
}

/* ── Client details (definition list) ─────────────────────────── */

.client-details {
    margin-bottom: 1.5rem;
    padding: 1rem 1.25rem;
    background: var(--stratum-card-bg);
    border: 1px solid var(--stratum-card-border);
    border-radius: var(--stratum-radius);
}

.client-details dl {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.35rem 1rem;
    margin: 0;
}

.client-details dt {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--stratum-text-muted);
}

.client-details dd {
    margin: 0;
    font-size: 0.9rem;
}

/* ── Summary counts ───────────────────────────────────────────── */

.client-summary {
    display: flex;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.summary-item {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 1rem;
    background: var(--stratum-card-bg);
    border: 1px solid var(--stratum-card-border);
    border-radius: var(--stratum-radius);
    box-shadow: var(--stratum-card-shadow);
    text-align: center;
}

.summary-item .count {
    font-size: 2rem;
    font-weight: 700;
    color: var(--stratum-accent);
    line-height: 1.2;
}

.summary-item .label {
    font-size: 0.8rem;
    color: var(--stratum-text-muted);
    margin-top: 0.25rem;
}

/* ── Shared files link ────────────────────────────────────────── */

.client-files {
    margin-bottom: 1.5rem;
}

.client-files a {
    display: inline-block;
    padding: 0.5rem 1.25rem;
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--stratum-accent);
    border: 1px solid var(--stratum-accent);
    border-radius: var(--stratum-radius);
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.client-files a:hover {
    background: var(--stratum-accent);
    color: #fff;
}

/* ── Notes ─────────────────────────────────────────────────────── */

.client-notes {
    padding: 1rem 1.25rem;
    background: var(--stratum-card-bg);
    border: 1px solid var(--stratum-card-border);
    border-radius: var(--stratum-radius);
}

.client-notes h3 {
    font-size: 0.95rem;
    font-weight: 600;
    margin: 0 0 0.5rem;
    color: var(--stratum-text);
}

.client-notes .notes-content {
    font-size: 0.9rem;
    color: var(--stratum-text-muted);
    line-height: 1.6;
}

/* ══════════════════════════════════════════════════════════════════
   PROJECT BOARD
   ══════════════════════════════════════════════════════════════════ */

.stratum-project-board {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem 0;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* ── Project card ──────────────────────────────────────────────── */

.project-card {
    background: var(--stratum-card-bg);
    border: 1px solid var(--stratum-card-border);
    border-radius: var(--stratum-radius);
    box-shadow: var(--stratum-card-shadow);
    padding: 1.25rem;
}

/* ── Project header (name + status) ───────────────────────────── */

.project-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--stratum-divider);
}

.project-name {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--stratum-text);
}

.project-status {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

/* ── Project meta (definition list) ───────────────────────────── */

.project-meta {
    margin-bottom: 1rem;
}

.project-meta dl {
    display: grid;
    grid-template-columns: auto 1fr auto 1fr;
    gap: 0.3rem 0.75rem;
    margin: 0;
    font-size: 0.85rem;
}

.project-meta dt {
    font-weight: 600;
    color: var(--stratum-text-muted);
}

.project-meta dd {
    margin: 0;
}

.project-files {
    display: inline-block;
    margin-top: 0.5rem;
    font-size: 0.85rem;
    color: var(--stratum-accent);
    text-decoration: none;
}

.project-files:hover {
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ── Milestones section ───────────────────────────────────────── */

.project-milestones h3 {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--stratum-text);
    margin: 0 0 0.75rem;
    padding-left: 0.75rem;
    border-left: 3px solid var(--stratum-accent);
}

/* ── Milestone card ───────────────────────────────────────────── */

.milestone-card {
    margin-bottom: 0.75rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--stratum-milestone-border);
    border-left: 3px solid var(--stratum-milestone-border);
    border-radius: 0 var(--stratum-radius-sm) var(--stratum-radius-sm) 0;
    background: var(--stratum-divider);
}

.milestone-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}

.milestone-name {
    font-weight: 600;
    font-size: 0.95rem;
}

.milestone-status {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.milestone-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    font-size: 0.8rem;
    color: var(--stratum-text-muted);
}

/* ── Task list ────────────────────────────────────────────────── */

.task-list {
    list-style: none;
    margin: 0.5rem 0 0;
    padding: 0;
}

.task-item {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.4rem 0;
    border-bottom: 1px dotted var(--stratum-task-border);
    font-size: 0.85rem;
}

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

.task-name {
    flex: 1 1 auto;
    min-width: 120px;
}

.task-status {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.task-meta {
    width: 100%;
    font-size: 0.75rem;
    color: var(--stratum-text-muted);
}

/* ══════════════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
    /* Client board */
    .client-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.75rem;
    }

    .client-details dl {
        grid-template-columns: 1fr;
        gap: 0.15rem;
    }

    .client-details dt {
        margin-top: 0.5rem;
    }

    .client-details dt:first-child {
        margin-top: 0;
    }

    .client-summary {
        flex-direction: column;
    }

    /* Project board */
    .project-header {
        flex-direction: column;
        gap: 0.25rem;
    }

    .project-meta dl {
        grid-template-columns: auto 1fr;
    }

    .milestone-header {
        flex-direction: column;
        gap: 0.15rem;
    }

    .milestone-meta {
        flex-direction: column;
        gap: 0.25rem;
    }

    .task-item {
        flex-direction: column;
        gap: 0.15rem;
    }
}

@media (max-width: 480px) {
    .stratum-client-board,
    .stratum-project-board {
        padding: 1rem 0;
    }

    .project-card {
        padding: 1rem;
    }

    .client-logo img {
        max-width: 80px;
        max-height: 60px;
    }

    .summary-item .count {
        font-size: 1.5rem;
    }
}

