*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.55;color:#2c2822;background:#F7F4EE;-webkit-font-smoothing:antialiased}.page{max-width:960px}.header-actions{display:flex;gap:.5rem;align-items:center}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.75rem}.page-header h2{margin:0;font-size:1.25rem;font-weight:600;color:#2c2822;letter-spacing:-.01em}.form-card{background:#FFFFFF;border-radius:10px;padding:1.5rem;margin-bottom:1.5rem;border:1px solid #E2DDD4;box-shadow:0 1px 3px #2c282212}.form-card h3{margin:0 0 1.25rem;font-size:.95rem;font-weight:600;color:#2c2822}.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.875rem}.field label{font-size:.82rem;font-weight:500;color:#2c2822;letter-spacing:.01em}.field label span{font-weight:400;color:#8a8178;margin-left:.25rem}.field input,.field select,.field textarea{padding:.55rem .8rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.9rem;font-family:inherit;color:#2c2822;background:#FFFFFF;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:#c4623b;box-shadow:0 0 0 3px #c4623b1f}.field input::placeholder,.field select::placeholder,.field textarea::placeholder{color:#8a8178}.field select{cursor:pointer}.field.field-check{flex-direction:row;align-items:center}.field.field-check label{display:flex;align-items:center;gap:.4rem;cursor:pointer;font-size:.9rem}.field.field-check input[type=checkbox]{width:16px;height:16px;accent-color:#C4623B;cursor:pointer}.fields-row{display:flex;gap:1rem;flex-wrap:wrap}.fields-row .field{flex:1;min-width:160px}fieldset{border:1px solid #E2DDD4;border-radius:10px;padding:1rem 1.25rem;margin:0 0 1rem}fieldset legend{font-size:.8rem;font-weight:600;padding:0 .5rem;color:#8a8178;text-transform:uppercase;letter-spacing:.05em}.form-actions{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:1.25rem;padding-top:1rem;border-top:1px solid #EDE9E2}.btn-danger,.btn-secondary,.btn-primary{display:inline-flex;align-items:center;gap:.4rem;padding:.55rem 1.2rem;border-radius:6px;font-size:.875rem;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,box-shadow .15s,opacity .15s;white-space:nowrap}.btn-danger:disabled,.btn-secondary:disabled,.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#C4623B;color:#fff;border:none;box-shadow:0 1px 3px #c4623b59}.btn-primary:hover:not(:disabled){background:#A84F2C;box-shadow:0 2px 6px #c4623b66}.btn-secondary{background:#FFFFFF;color:#2c2822;border:1px solid #E2DDD4}.btn-secondary:hover:not(:disabled){background:#F7F4EE;border-color:#d2cabc}.btn-danger{background:#FFFFFF;color:#b94040;border:1px solid #e3afaf}.btn-danger:hover:not(:disabled){background:#FBEAEA}.btn-danger-icon{padding:.35rem .55rem;background:none;color:#b94040;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .12s;font-family:inherit}.btn-danger-icon:hover:not(:disabled){background:#FBEAEA}.btn-danger-icon:disabled{opacity:.3;cursor:not-allowed}.btn-sm{padding:.35rem .8rem!important;font-size:.8rem!important}.data-table{width:100%;border-collapse:collapse;background:#FFFFFF;border-radius:10px;overflow:hidden;border:1px solid #E2DDD4;box-shadow:0 1px 3px #2c282212}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;font-size:.875rem}.data-table th{background:#F7F4EE;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#8a8178;border-bottom:1px solid #E2DDD4}.data-table tr+tr td{border-top:1px solid #EDE9E2}.data-table tbody tr:hover td{background:#FDFAF6}.data-table .actions{display:flex;gap:.5rem;justify-content:flex-end}.filter-bar{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.filter-bar .search-input{margin-bottom:0;display:revert}.filter-select{padding:.5rem .75rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.875rem;font-family:inherit;background:#FFFFFF;color:#2c2822;cursor:pointer}.result-count{font-size:.82rem;color:#8a8178;margin-left:auto}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:#c4623b}.sort-icon{font-size:.75rem;color:#8a8178;margin-left:.2rem}.search-input{width:100%;max-width:360px;padding:.55rem .875rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.9rem;font-family:inherit;color:#2c2822;background:#FFFFFF;margin-bottom:1.25rem;display:block;transition:border-color .15s,box-shadow .15s}.search-input:focus{outline:none;border-color:#c4623b;box-shadow:0 0 0 3px #c4623b1f}.search-input::placeholder{color:#8a8178}.empty{color:#8a8178;font-size:.875rem;text-align:center;padding:2.5rem 1rem}.error{background:#FBEAEA;color:#b94040;padding:.65rem .875rem;border-radius:6px;font-size:.85rem;margin-bottom:.75rem;border:1px solid #e1a7a7}.info-banner{background:#FEF3DC;color:#d4922a;padding:1rem 1.25rem;border-radius:10px;font-size:.875rem;border:1px solid #e6be7e}.year-card{background:#FFFFFF;border-radius:10px;padding:1rem 1.25rem;margin-bottom:.875rem;border:1px solid #E2DDD4;box-shadow:0 1px 3px #2c282212}.year-header{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.year-header>div:first-child{flex:1;display:flex;align-items:center;gap:.6rem}.year-name{font-weight:600;font-size:.95rem}.badge.active{background:#E6EFE9;color:#4a7260;font-size:.72rem;padding:.2rem .6rem;border-radius:20px;font-weight:600;letter-spacing:.02em}.year-dates{font-size:.82rem;color:#8a8178}.year-actions{display:flex;gap:.5rem}.periods-list{margin-top:.875rem;display:flex;gap:.5rem;flex-wrap:wrap}.period-chip{background:#F5E8E2;color:#a84f2c;font-size:.75rem;padding:.22rem .65rem;border-radius:20px;font-weight:500}.periods-section{margin-top:1.25rem;border-top:1px solid #EDE9E2;padding-top:1rem}.periods-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.periods-header h4{margin:0;font-size:.9rem;font-weight:600}.period-row{display:flex;gap:.75rem;align-items:flex-end;margin-bottom:.5rem}.period-row .field{flex:1}.members-list{display:flex;flex-direction:column;gap:.625rem}.member-card{background:#FFFFFF;border-radius:10px;padding:.875rem 1.25rem;display:flex;align-items:center;gap:1rem;border:1px solid #E2DDD4;box-shadow:0 1px 3px #2c282212}.member-info{flex:1;display:flex;flex-direction:column;gap:.15rem}.member-name{font-weight:500;font-size:.9rem}.member-email{font-size:.8rem;color:#8a8178}.role-badge{font-size:.72rem;padding:.22rem .65rem;border-radius:20px;background:#F5E8E2;color:#a84f2c;font-weight:600;letter-spacing:.02em}.role-badge.admin{background:#E6EFE9;color:#4a7260}.status-badge{font-size:.7rem;padding:.2rem .6rem;border-radius:20px;font-weight:600;letter-spacing:.02em}.status-badge.invited{background:#FEF3C7;color:#92400e}.status-badge.registered{background:#E6EFE9;color:#4a7260}.alert.success{background:#E6EFE9;color:#4a7260;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem;border:1px solid #7aa893}.minor-badge{background:#FEF3DC;color:#d4922a;font-size:.72rem;padding:.18rem .55rem;border-radius:20px;margin-left:.5rem;font-weight:600}.saved-msg{color:#4a7260;font-size:.875rem;font-weight:500;margin-right:auto}.error-msg{color:#b94040;font-size:.875rem;margin-right:auto}.two-col{display:grid;grid-template-columns:280px 1fr;gap:1.5rem;align-items:start}.list-col{background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;overflow:hidden}.form-col{background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;padding:1.5rem}.form-col h3{margin:0 0 1.25rem;font-size:1rem}.list-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;cursor:pointer;border-bottom:1px solid #EDE9E2;font-size:.9rem;transition:background .12s}.list-item:last-child{border-bottom:none}.list-item:hover{background:#F7F4EE}.list-item.active{background:#F5E8E2;font-weight:500}.list-item .item-name{flex:1}.list-card{background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;overflow:hidden}.list-row{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-bottom:1px solid #EDE9E2;font-size:.9rem}.list-row:last-child{border-bottom:none}.list-row .item-name{flex:1}.btn-secondary-sm{padding:.3rem .7rem;background:#FFFFFF;border:1px solid #E2DDD4;color:#2c2822;border-radius:6px;font-size:.8rem;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s}.btn-secondary-sm:hover{background:#F7F4EE}.btn-primary-sm{padding:.3rem .7rem;background:#C4623B;border:none;color:#fff;border-radius:6px;font-size:.8rem;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s}.btn-primary-sm:hover:not(:disabled){background:#A84F2C}.btn-primary-sm:disabled{opacity:.5;cursor:not-allowed}.btn-danger-sm{padding:.3rem .7rem;background:#FBEAEA;border:1px solid #B94040;color:#b94040;border-radius:6px;font-size:.8rem;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s}.btn-danger-sm:hover{background:#f8d9d9}.year-selector{display:flex;align-items:center;gap:.6rem}.year-selector label{font-size:.82rem;font-weight:500}.year-selector select{padding:.45rem .75rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.875rem;font-family:inherit;background:#FFFFFF;color:#2c2822}.enrollment-list{display:flex;flex-direction:column;gap:.5rem}.enrollment-row{background:#FFFFFF;border-radius:10px;overflow:hidden;border:1px solid #E2DDD4;border-left:3px solid #E2DDD4;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 3px #2c282212}.enrollment-row.enrolled{border-left-color:#4a7260}.enrollment-row.expanded{box-shadow:0 3px 10px #2c28221a;border-left-color:#c4623b}.row-main{display:flex;align-items:center;gap:1rem;padding:.8rem 1.25rem;cursor:default}.student-name{font-weight:500;font-size:.9rem;min-width:200px}.subjects-summary{flex:1;display:flex;gap:.4rem;flex-wrap:wrap}.subject-chip{background:#F5E8E2;color:#a84f2c;font-size:.72rem;padding:.2rem .55rem;border-radius:20px;font-weight:500}.not-enrolled-label{flex:1;font-size:.82rem;color:#8a8178;font-style:italic}.row-actions{display:flex;gap:.5rem;flex-shrink:0}.btn-enroll{padding:.4rem .9rem;background:#4A7260;color:#fff;border:none;border-radius:6px;font-size:.82rem;cursor:pointer;font-family:inherit;font-weight:500;transition:background .15s}.btn-enroll:hover{background:#3a594b}.row-detail{border-top:1px solid #EDE9E2;padding:1rem 1.25rem;background:#F7F4EE}.subjects-table{width:100%;border-collapse:collapse;margin-bottom:.875rem}.subjects-table th,.subjects-table td{padding:.5rem .75rem;text-align:left;font-size:.85rem}.subjects-table th{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#8a8178;border-bottom:1px solid #E2DDD4}.subjects-table tr+tr td{border-top:1px solid #EDE9E2}.subjects-table .actions{text-align:right}.no-subjects{font-size:.82rem;color:#8a8178;margin:0 0 .75rem;font-style:italic}.add-subject-form{margin-bottom:.875rem}.form-inline{display:flex;align-items:flex-end;gap:.75rem;flex-wrap:wrap;background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;padding:.875rem 1rem}.form-inline .field{flex:1;min-width:160px;margin-bottom:0}.form-inline-actions{display:flex;gap:.5rem;align-items:flex-end}.btn-add-subject{background:none;border:1.5px dashed #4A7260;color:#4a7260;padding:.45rem 1rem;border-radius:6px;font-size:.85rem;cursor:pointer;font-family:inherit;font-weight:500;transition:background .12s}.btn-add-subject:hover{background:#E6EFE9}.clickable-period{cursor:pointer}.chevron{font-size:.75rem;color:#8a8178;margin-left:.5rem}.auto-save-area{width:100%;resize:vertical;padding:.75rem;border:1px solid #E2DDD4;border-radius:6px;font-family:inherit;font-size:.9rem;color:#2c2822;background:#FFFFFF}.auto-save-area:focus{outline:none;border-color:#c4623b;box-shadow:0 0 0 3px #c4623b1f}.save-hint{margin-top:.4rem;font-size:.78rem}.save-hint .hint.idle{color:#8a8178}.save-hint .hint.saving{color:#d4922a}.save-hint .hint.saved{color:#4a7260}.save-hint .hint.error{color:#b94040}.view-switch-btn{display:block;text-align:center;padding:.45rem .75rem;border-radius:6px;background:#E6EFE9;color:#4a7260;font-size:.8rem;font-weight:600;text-decoration:none;transition:background .15s}.view-switch-btn:hover{background:#d3e3d9}.modal-backdrop{position:fixed;inset:0;background:rgba(44,40,34,.45);display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#FFFFFF;border-radius:10px;padding:2rem;min-width:360px;max-width:480px;width:100%;box-shadow:0 3px 10px #2c28221a}.modal-lg{max-width:680px;max-height:90vh;overflow-y:auto}.modal-title{margin:0 0 1.25rem;font-size:1.05rem;font-weight:600}.btn-back{background:none;border:none;color:#8a8178;font-size:.875rem;cursor:pointer;padding:0;font-family:inherit}.btn-back:hover{color:#2c2822}.fiche-section{background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;padding:1.5rem;margin-bottom:1.25rem;box-shadow:0 1px 3px #2c282212}.section-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#2c2822}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-header .section-title{margin:0}.section-header-actions{display:flex;gap:.5rem;flex-shrink:0}.info-grid{display:flex;flex-direction:column;gap:.5rem}.info-row{display:flex;align-items:baseline;gap:.75rem;font-size:.9rem}.info-label{min-width:130px;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#8a8178;flex-shrink:0}.year-select{padding:.4rem .75rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.875rem;font-family:inherit;background:#FFFFFF;color:#2c2822}.enrollment-status{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border-radius:6px;font-size:.875rem}.enrollment-status.not-enrolled{background:#F7F4EE;color:#8a8178;border:1px dashed #E2DDD4}.enrollment-status.enrolled{background:#E6EFE9;color:#4a7260;font-weight:500;border:1px solid #99bcac}.enrollment-status .btn-danger-sm{margin-left:auto}.field-inline{display:flex;align-items:center;gap:.5rem;font-size:.8rem;font-weight:500;color:#8a8178}.field-inline select{padding:.3rem .5rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.82rem;font-family:inherit;background:#FFFFFF;color:#2c2822;font-weight:400}.courses-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.courses-label{font-size:.85rem;font-weight:600;color:#8a8178}.course-row{display:flex;align-items:center;gap:1rem;padding:.6rem .75rem;border-radius:6px;background:#F7F4EE;margin-bottom:.35rem}.course-row--clickable{cursor:pointer;transition:background .15s}.course-row--clickable:hover{background:#F5E8E2}.course-name{font-weight:500;font-size:.875rem;flex:1}.course-teacher{font-size:.82rem;color:#8a8178;min-width:140px}.empty-sm{font-size:.82rem;color:#8a8178;font-style:italic;padding:.5rem 0}.add-course-form{margin-top:.75rem;background:#F7F4EE;border:1px solid #E2DDD4;border-radius:10px;padding:1rem}tr.clickable-row{cursor:pointer}tr.clickable-row:hover td{background:#F5E8E2}.stats-filters{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.appreciation-periods{display:flex;flex-direction:column;gap:1.25rem}.period-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.6rem}.period-header .period-name{margin:0}.period-name-group{display:flex;align-items:center;gap:.5rem}.period-actions{display:flex;gap:.5rem;flex-shrink:0}.period-name{margin:0 0 .6rem;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#c4623b}.appreciation-row{display:flex;flex-direction:column;gap:.3rem;padding:.75rem;background:#F7F4EE;border-radius:6px;margin-bottom:.4rem}.appreciation-course{display:flex;align-items:center;gap:.75rem}.appreciation-content{font-size:.875rem;color:#2c2822;line-height:1.5;padding-top:.25rem;display:flex;align-items:center;gap:.6rem}.appreciation-content.empty{color:#8a8178;font-style:italic}.appreciation-grade{font-size:.72rem;font-weight:600;padding:.15rem .5rem;border-radius:10px;background:#F5E8E2;color:#c4623b;white-space:nowrap}.appreciation-status-badge{font-size:.72rem;padding:.18rem .55rem;border-radius:20px;font-weight:600;white-space:nowrap}.appreciation-status-badge.status-sent{background:#E6EFE9;color:#4a7260}.appreciation-status-badge.status-generated{background:#FEF3DC;color:#d4922a}.appreciation-status-badge.status-none{background:#F7F4EE;color:#8a8178}.send-errors{margin:0 0 1rem;padding-left:1.15rem;font-size:.82rem;color:#b94040;display:flex;flex-direction:column;gap:.25rem}.list-row.clickable-row{cursor:pointer;transition:background .12s}.list-row.clickable-row:hover{background:#F5E8E2}.schedule-page{max-width:100%}.schedule-page .page-header{gap:.75rem;flex-wrap:wrap}.schedule-picker{position:relative;flex:1;min-width:180px;max-width:280px}.schedule-picker .picker-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.45rem .75rem;background:#FFFFFF;border:1px solid #E2DDD4;border-radius:6px;font-family:inherit;font-size:.85rem;color:#2c2822;cursor:pointer;transition:border-color .15s,box-shadow .15s}.schedule-picker .picker-btn:hover{border-color:#c4623b}.schedule-picker .picker-btn span.placeholder{color:#8a8178}.schedule-picker.open .picker-btn{border-color:#c4623b;box-shadow:0 0 0 3px #c4623b1f}.schedule-picker .picker-chevron{width:14px;height:14px;flex-shrink:0;color:#8a8178;transition:transform .15s}.schedule-picker.open .picker-chevron{transform:rotate(180deg)}.schedule-picker .picker-dropdown{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;background:#FFFFFF;border:1px solid #E2DDD4;border-radius:6px;box-shadow:0 3px 10px #2c28221a;z-index:200;overflow:hidden;max-height:280px;overflow-y:auto}.schedule-picker.open .picker-dropdown{display:block}.schedule-picker .picker-option{width:100%;display:block;padding:.5rem .75rem;background:none;border:none;font-family:inherit;font-size:.85rem;color:#2c2822;text-align:left;cursor:pointer;transition:background .1s}.schedule-picker .picker-option:hover{background:#F7F4EE}.schedule-picker .picker-option.selected{color:#c4623b;font-weight:600;background:#F5E8E2}.view-toggle{display:flex;border:1px solid #E2DDD4;border-radius:6px;overflow:hidden;flex-shrink:0}.view-toggle button{padding:.45rem .9rem;background:#FFFFFF;border:none;font-family:inherit;font-size:.85rem;cursor:pointer;color:#8a8178;transition:background .12s,color .12s}.view-toggle button.active{background:#C4623B;color:#fff}.view-toggle button:not(.active):hover{background:#F7F4EE}.week-nav{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.week-nav .week-label{font-weight:600;font-size:.9rem;color:#2c2822;min-width:220px;text-align:center}.timetable-grid{--slot-h: 58px;display:grid;grid-template-columns:54px repeat(6,1fr);border:1px solid #E2DDD4;border-radius:10px;overflow:hidden;background:#FFFFFF;box-shadow:0 1px 3px #2c282212}.timetable-grid .time-label-header{background:#F7F4EE;border-bottom:1px solid #E2DDD4;border-right:1px solid #E2DDD4}.timetable-grid .day-header{background:#F7F4EE;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#8a8178;padding:.55rem .4rem;border-bottom:1px solid #E2DDD4;border-right:1px solid #EDE9E2;text-align:center}.timetable-grid .day-header:last-child{border-right:none}.timetable-grid .time-label{height:var(--slot-h);box-sizing:border-box;font-size:.7rem;color:#8a8178;padding:.25rem .4rem 0;border-right:1px solid #E2DDD4;border-bottom:1px solid #EDE9E2;background:#F7F4EE;display:flex;align-items:flex-start;line-height:1}.timetable-grid .grid-cell{border-right:1px solid #EDE9E2;border-bottom:1px solid #EDE9E2;height:var(--slot-h);padding:0;position:relative;overflow:visible;transition:background .1s}.timetable-grid .grid-cell:last-child{border-right:none}.timetable-grid .grid-cell.drag-over{background:#F5E8E2;outline:2px dashed #C4623B;outline-offset:-2px}.timetable-grid .event-chip{position:absolute;top:2px;left:2px;right:2px;z-index:10;overflow:hidden;background:#E6EFE9;border:1px solid #cddfd3;border-left:3px solid #4A7260;border-radius:4px;padding:.15rem .35rem;font-size:.68rem;cursor:grab;-webkit-user-select:none;user-select:none;height:calc(var(--dur-slots, 1) * var(--slot-h) - 4px)}.timetable-grid .event-chip.biweekly{background:#FEF3DC;border-left-color:#d4922a}.timetable-grid .event-chip:active{cursor:grabbing}.timetable-grid .event-chip .event-student{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.timetable-grid .event-chip .event-subject{display:block;color:#8a8178;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.timetable-grid .event-chip .event-room,.timetable-grid .event-chip .event-teacher{display:block;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.tarif-add-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem}.tarif-add-row select{flex:1;padding:.45rem .75rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.875rem;font-family:inherit;background:#FFFFFF;color:#2c2822}.tarif-invoice-line{display:flex;align-items:center;gap:.75rem;padding:.55rem .75rem;background:#F7F4EE;border-radius:6px;margin-bottom:.35rem}.tarif-invoice-name{flex:1;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.875rem;font-weight:500}.tarif-line-detail{font-size:.78rem;font-weight:400;color:#8a8178}.tarif-line-warning{color:#d4922a}.tarif-invoice-amount{font-size:.9rem;font-weight:600;color:#c4623b;min-width:80px;text-align:right;flex-shrink:0}.tarif-invoice-total{display:flex;align-items:center;justify-content:space-between;padding:.65rem .75rem;background:#F5E8E2;border-radius:6px;margin-top:.5rem;border:1px solid #e2b19d}.tarif-invoice-total-label{font-size:.82rem;color:#8a8178}.tarif-invoice-total-amount{font-size:1rem;font-weight:700;color:#c4623b}.tarifs-list{display:flex;flex-direction:column;gap:.5rem}.tarif-row{background:#FFFFFF;border-radius:10px;padding:.875rem 1.25rem;display:flex;align-items:center;gap:1rem;border:1px solid #E2DDD4;box-shadow:0 1px 3px #2c282212;flex-wrap:wrap;cursor:pointer;transition:box-shadow .15s,border-color .15s}.tarif-row:hover{box-shadow:0 3px 10px #2c28221a;border-color:#c4623b}.tarif-info{flex:1;display:flex;flex-direction:column;gap:.15rem;min-width:160px}.tarif-name{font-weight:500;font-size:.9rem}.tarif-desc{font-size:.8rem;color:#8a8178}.tarif-type-badge{font-size:.72rem;padding:.22rem .65rem;border-radius:20px;background:#FEF3DC;color:#d4922a;font-weight:600;letter-spacing:.02em;flex-shrink:0}.tarif-type-badge.hourly{background:#E6EFE9;color:#4a7260}.tarif-price{font-size:.9rem;font-weight:600;color:#c4623b;min-width:120px;text-align:right;flex-shrink:0}.tarif-actions{flex-shrink:0}.type-toggle{display:flex;gap:.5rem;margin-top:.2rem}.type-option{display:flex;align-items:center;gap:.4rem;padding:.45rem .9rem;border:1px solid #E2DDD4;border-radius:6px;font-size:.875rem;cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s}.type-option input[type=radio]{display:none}.type-option.selected{background:#F5E8E2;border-color:#c4623b;color:#c4623b;font-weight:500}.type-option:not(.selected):hover{background:#F7F4EE}.course-info{display:flex;flex-direction:column;gap:.15rem;flex:1}.course-schedule{font-size:.8rem}.year-card.clickable-row{cursor:pointer;transition:box-shadow .15s,border-color .15s}.year-card.clickable-row:hover{box-shadow:0 3px 10px #2c28221a;border-color:#c4623b}.family-section .section-title:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:#4A7260;margin-right:.5rem;vertical-align:middle}.family-card{background:#E6EFE9;border:1px solid rgba(74,114,96,.25);border-left:3px solid #4A7260;border-radius:10px;padding:1rem 1.1rem}.family-card-header{display:flex;align-items:center;gap:.75rem}.family-avatar{width:34px;height:34px;border-radius:50%;background:#4A7260;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.95rem;flex-shrink:0;text-transform:uppercase}.family-name{font-weight:600;font-size:.95rem;flex:1}.family-members{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.85rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid rgba(74,114,96,.2)}.family-member-chip{display:inline-flex;align-items:center;gap:.35rem;background:#FFFFFF;border:1px solid #E2DDD4;border-radius:20px;padding:.2rem .65rem .2rem .3rem;font-size:.8rem;color:#2c2822;text-decoration:none;transition:border-color .12s,box-shadow .12s}.family-member-chip:not(.self):hover{border-color:#4a7260;box-shadow:0 1px 3px #2c282212}.family-member-chip.self{color:#8a8178;cursor:default;background:#F7F4EE}.family-member-initials{width:18px;height:18px;border-radius:50%;background:#E6EFE9;color:#4a7260;font-size:.65rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.family-search-results{margin-top:.4rem;border:1px solid #E2DDD4;border-radius:6px;overflow:hidden}.family-search-item{padding:.55rem .9rem;font-size:.875rem;cursor:pointer;transition:background .12s}.family-search-item:hover{background:#F7F4EE}.family-search-item+.family-search-item{border-top:1px solid #E2DDD4}.logo-field{display:flex;align-items:center;gap:1rem}.logo-preview{width:56px;height:56px;object-fit:contain;border:1px solid #E2DDD4;border-radius:6px;background:#FFFFFF;padding:.25rem}.membership-badge{font-size:.7rem;padding:.18rem .55rem;border-radius:20px;background:#c7dbd2;color:#4a7260;font-weight:600;letter-spacing:.02em;flex-shrink:0}.tarif-discount-badge{font-size:.7rem;padding:.18rem .55rem;border-radius:20px;background:#F5E8E2;color:#c4623b;font-weight:600;letter-spacing:.02em;flex-shrink:0;cursor:help}.invoice-generated-confirm{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.invoice-send-panel{background:#F7F4EE;border:1px solid #E2DDD4;border-radius:10px;padding:1rem 1.1rem;margin:-.25rem 0 .5rem;display:flex;flex-direction:column;gap:.5rem}.invoice-send-option{display:flex;align-items:center;gap:.5rem;font-size:.875rem;cursor:pointer}.invoice-generated-row{background:#E6EFE9;border:1px solid rgba(74,114,96,.3);border-radius:10px;padding:.65rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.875rem;color:#2c2822}.invoice-list{display:flex;flex-direction:column;gap:.5rem}.invoice-item{background:#FFFFFF;border:1px solid #E2DDD4;border-radius:10px;padding:.75rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.invoice-item-info{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;flex:1}.invoice-item-actions{display:flex;gap:.4rem;flex-shrink:0}.invoice-number{font-weight:600;font-size:.875rem;font-family:monospace}.invoice-version-badge{font-size:.7rem;padding:.18rem .55rem;border-radius:20px;background:#E6EFE9;color:#4a7260;font-weight:600}.invoice-split-badge{font-size:.7rem;padding:.18rem .55rem;border-radius:20px;background:#FEF3DC;color:#d4922a;font-weight:600}.invoice-date{font-size:.78rem}.invoice-amount{font-weight:700;color:#c4623b;font-size:.9rem}.invoice-amount.negative{color:#b94040}.invoice-sent{font-size:.75rem;color:#4a7260}.invoice-avoir-badge{font-size:.7rem;padding:.18rem .55rem;border-radius:20px;background:#FBEAEA;color:#b94040;font-weight:700;letter-spacing:.03em}.invoice-item.credit-note{border-color:#b940404d;background:#fef8f8}.invoice-status-select{padding:.25rem .5rem;border-radius:20px;font-size:.75rem;font-weight:600;font-family:inherit;border:1px solid transparent;cursor:pointer}.invoice-status-select.status-unpaid{background:#FBEAEA;color:#b94040}.invoice-status-select.status-partial{background:#FEF3DC;color:#d4922a}.invoice-status-select.status-paid{background:#E6EFE9;color:#4a7260}.invoice-status-badge{padding:.2rem .6rem;border-radius:20px;font-size:.75rem;font-weight:600}.invoice-status-badge.status-unpaid{background:#FBEAEA;color:#b94040}.invoice-status-badge.status-partial{background:#FEF3DC;color:#d4922a}.invoice-status-badge.status-paid{background:#E6EFE9;color:#4a7260}.invoice-recipient{font-weight:500;font-size:.875rem}
