:root{--bg:#f5f7f7;--card:#fff;--text:#213033;--muted:#6d7b7e;--brand:#2f6f73;--border:#d9e2e2;--danger:#a33}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text)}.top{background:#fff;border-bottom:1px solid var(--border);padding:14px 24px;display:flex;gap:20px;justify-content:space-between;align-items:center}.top span{display:block;color:var(--muted);font-size:13px}.nav a{margin-left:14px;color:var(--brand);text-decoration:none}.container{max-width:1100px;margin:28px auto;padding:0 18px}.card,.hero{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:22px;margin-bottom:18px;box-shadow:0 1px 4px rgba(0,0,0,.04)}.hero{background:linear-gradient(180deg,#fff,#eef7f6)}.narrow{max-width:520px;margin-left:auto;margin-right:auto}h1,h2,h3{color:#24494c}label{display:block;margin:12px 0 6px;font-weight:600}input,select,textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:8px;font:inherit;background:#fff}textarea{min-height:100px}.check{display:flex;gap:8px;align-items:center}.check input{width:auto}button,.btn{display:inline-block;background:var(--brand);color:#fff;border:0;border-radius:8px;padding:10px 14px;text-decoration:none;cursor:pointer;font:inherit}.secondary{background:#607d80}.danger{background:var(--danger)}.inline{display:inline-block;margin-right:8px}.inline select{width:auto;display:inline-block}table{width:100%;border-collapse:collapse;margin-top:12px}th,td{border-bottom:1px solid var(--border);padding:10px;text-align:left;vertical-align:top}th{background:#f0f5f5}.alert{background:#fff2f2;border:1px solid #f1c1c1;color:#842029;padding:10px;border-radius:8px}.success{background:#edf8ef;border:1px solid #bfe2c5;color:#235b2c;padding:10px;border-radius:8px}.muted{color:var(--muted)}.legal{max-width:1100px;margin:24px auto;padding:18px;color:#687477;font-size:11px;line-height:1.45}.legal strong{color:#4a5a5d}@media(max-width:760px){.top{display:block}.nav a{display:inline-block;margin:8px 10px 0 0}table{font-size:13px}}

.field-builder table{table-layout:fixed;min-width:980px}.field-builder th:nth-child(1){width:80px}.field-builder th:nth-child(2){width:75px}.field-builder th:nth-child(5){width:70px}.field-builder td{vertical-align:top}.field-builder label{margin:4px 0 8px;font-size:13px}.field-builder input,.field-builder select,.field-builder textarea{padding:8px}.field-builder textarea{min-height:54px}.field-builder .mini{padding:4px 8px;margin:2px;background:#607d80;border-radius:6px}.field-builder .field-move{text-align:center}.field-builder .field-include{text-align:center}.field-builder .inactive-field{opacity:.45;background:#f4f4f4}.field-builder .inactive-field input,.field-builder .inactive-field select,.field-builder .inactive-field textarea{background:#eee}.info{display:inline-block;margin-left:6px;color:#2f6f73;cursor:help}.scale-help{display:block;margin:2px 0 6px}

.small{padding:6px 9px;font-size:13px}.inline button.small,.inline .btn.small{vertical-align:middle}


/* Patch 09f: tables larges, portail patient, champs Likert N/A */
.table-scroll{overflow-x:auto;width:100%;}
.history-table th{font-size:12px;font-weight:500;line-height:1.25;vertical-align:top;}
.history-table td{font-size:13px;vertical-align:top;}
.portal-actions{text-align:right;margin:0 0 8px 0;}
.portal-actions .btn{padding:8px 12px;}
.likert-field{margin:14px 0;}
.likert-field > label:first-child{display:block;font-weight:700;}
.na-check{margin-top:6px;font-weight:500;color:var(--muted);}
.na-check input{width:auto;}
.scale-help{display:block;margin:2px 0 4px 0;line-height:1.25;}
@media print{.history-table th{font-size:8px;font-weight:400}.history-table td{font-size:9px}}

.top{
    display:flex;
    align-items:center;
    gap:20px;
}

/* Patch 09g: formulaire patient aéré et tableau historique plus compact */
.portal-question{
    padding:14px 14px 16px 14px;
    margin:0 0 10px 0;
    border:1px solid #d9e3e4;
    border-radius:12px;
    background:#fff;
}
.portal-question:nth-of-type(even){
    background:#f6fafb;
}
.portal-question .question-title,
.portal-question label.question-title{
    display:block;
    font-weight:650;
    font-size:15px;
    line-height:1.28;
    color:#203134;
    margin-bottom:8px;
}
.portal-question input[type="text"],
.portal-question input[type="number"],
.portal-question input[type="date"],
.portal-question input[type="time"],
.portal-question textarea{
    width:100%;
    box-sizing:border-box;
}
.likert-field .scale-ends{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:10px;
    font-size:13px;
    line-height:1.25;
    color:#667577;
    margin:2px 0 8px 0;
}
.likert-field .scale-ends span:last-child{
    text-align:right;
}
.likert-slider{
    width:100%;
    margin:4px 0 8px 0;
}
.likert-field output,
.likert-field .likert-value,
.likert-field .scale-help{
    display:none !important;
}
.na-check{
    display:flex;
    align-items:center;
    gap:7px;
    margin-top:6px;
    font-size:13px;
    color:#4b5b5e;
    font-weight:500;
}
.na-check input{
    width:auto;
}
.table-scroll{overflow-x:auto;width:100%;}
.history-table th{
    font-size:10.5px !important;
    font-weight:400 !important;
    line-height:1.18 !important;
    vertical-align:top;
    padding:6px 7px !important;
}
.history-table td{
    font-size:12px !important;
    line-height:1.25 !important;
    vertical-align:top;
    padding:6px 7px !important;
}
@media (max-width: 700px){
    .portal-question{padding:12px;margin-bottom:9px;border-radius:10px;}
    .portal-question .question-title,.portal-question label.question-title{font-size:15px;}
    .likert-field .scale-ends{font-size:12.5px;}
}
@media print{
    .history-table th{font-size:7.5px !important;font-weight:400 !important;}
    .history-table td{font-size:8.5px !important;}
}


/* Patch 09h: ligne de moyennes / N valide */
.history-table tfoot td{
    border-top:2px solid #b9cacc;
    background:#f5f9fa;
    font-size:11px !important;
    font-weight:400 !important;
}
.history-table tfoot tr:first-child td{
    padding-top:8px !important;
}
.summary-row td:first-child{
    white-space:nowrap;
}
.summary-list{
    margin-top:8px;
}
.summary-list li{
    margin-bottom:5px;
}

header.top{
    display:flex !important;
    align-items:center !important;
    gap:20px !important;
}

header.top .portal-logout-header{
    margin-left:auto !important;
    background:#2f6f73 !important;
    color:#ffffff !important;
    padding:10px 16px !important;
    border-radius:6px !important;
    text-decoration:none !important;
    display:inline-block !important;
    font-weight:600 !important;
    line-height:1 !important;
}

/* 09i - Vue semaine calendrier */
.calendar-week{
    display:grid;
    grid-template-columns:repeat(7,minmax(120px,1fr));
    gap:10px;
    overflow-x:auto;
}
.calendar-day{
    background:#f8fbfb;
    border:1px solid #d8e6e6;
    border-radius:10px;
    padding:10px;
    min-height:160px;
}
.calendar-day h3{
    margin:0 0 8px 0;
    font-size:13px;
    font-weight:600;
    color:#2f6f73;
}
.calendar-event{
    background:#ffffff;
    border-left:4px solid #2f6f73;
    border-radius:8px;
    padding:8px;
    margin-bottom:8px;
    font-size:12px;
    line-height:1.35;
    box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.calendar-event span{
    color:#263238;
}
.small{font-size:12px;}
@media(max-width:900px){
    .calendar-week{grid-template-columns:repeat(2,minmax(160px,1fr));}
}


/* 09j - Calendrier côté patient */
.section-title-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    margin-bottom:12px;
}
.section-title-row h2{margin:0;}
@media(max-width:700px){
    .section-title-row{align-items:flex-start;flex-direction:column;}
}


/* 09k - Calendrier horaire avec axe Y */
.calendar-card{overflow-x:auto;}
.calendar-timetable{
    --hour-height:60px;
    display:grid;
    grid-template-columns:58px repeat(7, minmax(126px, 1fr));
    min-width:980px;
    border-top:1px solid #d8e6e6;
    border-left:1px solid #d8e6e6;
}
.calendar-corner,
.calendar-date-head{
    background:#eef6f6;
    border-right:1px solid #d8e6e6;
    border-bottom:1px solid #d8e6e6;
    min-height:48px;
    text-align:center;
    font-size:13px;
    padding:8px 4px;
}
.calendar-date-head span{font-size:12px;color:#263238;}
.calendar-hours{
    grid-column:1;
    border-right:1px solid #d8e6e6;
    background:#fff;
}
.calendar-hour-label{
    height:var(--hour-height);
    box-sizing:border-box;
    border-bottom:1px solid #eef2f2;
    font-size:11px;
    color:#54676b;
    padding-top:4px;
    text-align:right;
    padding-right:6px;
}
.calendar-day-col{
    position:relative;
    min-height:calc(18 * var(--hour-height));
    border-right:1px solid #d8e6e6;
    background:#fff;
}
.calendar-hour-line{
    height:var(--hour-height);
    box-sizing:border-box;
    border-bottom:1px solid #eef2f2;
}
.calendar-block{
    position:absolute;
    left:6px;
    right:6px;
    min-height:24px;
    box-sizing:border-box;
    background:#2f6f73;
    color:#fff;
    border-radius:6px;
    padding:5px 7px;
    font-size:11px;
    line-height:1.25;
    overflow:hidden;
    box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.calendar-block span{color:#fff;}

/* Neutraliser ancien calendrier par colonnes simples */
.calendar-week{display:block;}
.calendar-day{background:transparent;border:0;padding:0;min-height:0;}
.calendar-event{box-shadow:none;}

.calendar-grid{
    display:grid !important;
    grid-template-columns:60px repeat(7, 1fr) !important;
    position:relative !important;
    border-top:1px solid #d8e0e0;
    border-left:1px solid #d8e0e0;
}

.calendar-cell,
.calendar-head,
.calendar-time{
    border-right:1px solid #d8e0e0;
    border-bottom:1px solid #d8e0e0;
    min-height:42px;
    padding:4px;
    box-sizing:border-box;
}

.calendar-head{
    background:#eef5f5;
    font-weight:700;
    text-align:center;
}

.calendar-time{
    font-size:12px;
    color:#456;
}

.calendar-event-block{
    background:#2f6f73;
    color:#fff;
    border-radius:6px;
    padding:5px 6px;
    font-size:12px;
    line-height:1.2;
    overflow:hidden;
}

.yesno-calendar-scroll{
    overflow-x:auto;
}
.yesno-calendar-grid{
    display:grid;
    grid-template-columns:minmax(180px,1.5fr) repeat(7,minmax(105px,1fr));
    min-width:930px;
    border-top:1px solid #d8e6e6;
    border-left:1px solid #d8e6e6;
}
.yesno-calendar-head,
.yesno-calendar-label,
.yesno-calendar-cell{
    min-height:52px;
    padding:8px;
    border-right:1px solid #d8e6e6;
    border-bottom:1px solid #d8e6e6;
}
.yesno-calendar-head{
    background:#eef5f5;
    color:#2f5558;
    text-align:center;
    font-size:12px;
}
.yesno-calendar-label{
    background:#f8fbfb;
    font-size:13px;
    font-weight:700;
}
.yesno-calendar-cell{
    background:#fff;
}
.yesno-calendar-block{
    display:block;
    margin-bottom:5px;
    padding:6px 7px;
    border-radius:6px;
    color:#fff;
    font-size:12px;
    font-weight:700;
    line-height:1.2;
}
.yesno-calendar-block small{
    display:block;
    margin-top:2px;
    color:inherit;
    font-size:10px;
    font-weight:500;
}
.yesno-calendar-block.is-yes,
.yesno-calendar-swatch.is-yes{
    background:#2f7d4a;
}
.yesno-calendar-block.is-no,
.yesno-calendar-swatch.is-no{
    background:#b44545;
}
.yesno-calendar-block.is-missing,
.yesno-calendar-swatch.is-missing{
    background:#8f3d3d;
}
.yesno-calendar-legend{
    display:flex;
    flex-wrap:wrap;
    gap:12px;
    margin:10px 0 14px;
    font-size:12px;
}
.yesno-calendar-legend span{
    display:inline-flex;
    align-items:center;
    gap:5px;
}
.yesno-calendar-swatch{
    display:inline-block;
    width:12px;
    height:12px;
    border-radius:3px;
}


.resource-box{
    margin-top:18px;
    padding:14px 16px;
    border:1px solid #d8e0e0;
    border-radius:10px;
    background:#f4f8f8;
}
.resource-box a{
    color:#2f6f73;
    font-weight:700;
}
.subtle-card{
    background:#fbfdfd;
}
.small{
    font-size:0.9rem;
}
.inline-check{
    display:flex;
    align-items:center;
    gap:8px;
}



.badge{
    display:inline-block;
    margin-left:8px;
    padding:3px 7px;
    border-radius:999px;
    background:#eef5f5;
    color:#2f6f73;
    font-size:0.78rem;
    font-weight:600;
}

.summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
    margin: 16px 0 20px 0;
}

.summary-grid > div {
    background: #f3f7f7;
    border: 1px solid #dce8e8;
    border-radius: 10px;
    padding: 12px;
}

.chartjs-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    margin-top: 16px;
}

.chartjs-card {
    min-width: 0;
    width: 100%;
    padding: 14px;
    border: 1px solid #dce8e8;
    border-radius: 10px;
    background: #f8fbfb;
}

.chartjs-card h3 {
    margin: 0 0 6px;
}

.chartjs-canvas-container {
    position: relative;
    height: 320px;
    width: 100%;
}

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

    .chartjs-canvas-container {
        height: 240px;
    }
}
