:root{--paper: #f6f3ec;--surface: #fffdf8;--surface-2: #f1ece0;--ink: #22272a;--ink-soft: #5c635f;--rule: #ddd6c7;--rule-strong: #c8bfa9;--pine: #2f5d50;--pine-bright: #3c7565;--ok: #2f7d4f;--ko: #ac4327;--ochre: #b0894e;--admin-bg: #eef0f1;--admin-surface: #f8f9fa;--admin-ink: #384047;--admin-rule: #d4d9dc;--admin-accent: #51606b}@media (prefers-color-scheme: dark){:root{--paper: #191c1b;--surface: #232726;--surface-2: #2c302e;--ink: #e9e5da;--ink-soft: #9ba49b;--rule: #343936;--rule-strong: #4a514c;--pine: #6fb6a0;--pine-bright: #83c8b2;--ok: #6cc088;--ko: #e07a60;--ochre: #d0a061;--admin-bg: #202427;--admin-surface: #262b2e;--admin-ink: #dde2e5;--admin-rule: #3a4045;--admin-accent: #9fb0bb}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Public Sans,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.55}.shell{max-width:min(96rem,100%);margin:0 auto;padding:clamp(1.5rem,4vw,3rem) 20px 4rem;display:flex;flex-direction:column;gap:1.5rem}.app-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.eyebrow{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--pine)}h1{margin:.25rem 0 0;font-size:1.7rem}.tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--ink);overflow-x:auto;-webkit-overflow-scrolling:touch}.tabs button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;border-bottom:none;background:transparent;color:var(--ink-soft);font:inherit;font-weight:600;padding:.5rem 1rem;border-radius:5px 5px 0 0;cursor:pointer;flex:none;touch-action:manipulation}.tabs button:hover{color:var(--ink)}.tabs button.active{background:var(--surface);border-color:var(--rule-strong);color:var(--pine);margin-bottom:-2px;border-bottom:2px solid var(--surface)}.lock-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;cursor:pointer;border:1px solid var(--rule-strong);background:var(--surface);color:var(--ink);padding:.45rem .9rem;border-radius:5px}.lock-btn.active{border-color:var(--admin-accent);color:var(--admin-accent);font-weight:600}.reftable{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--rule)}th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:700}tbody tr:hover td{background:var(--surface)}tr.editing td{background:var(--surface-2)}.group-row td{background:var(--surface-2);font-weight:700;color:var(--pine);font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--rule-strong)}.actions-col{width:1%}td.actions{white-space:nowrap;text-align:right}td input[type=text],td input[type=number],td select{font:inherit;padding:.25rem .4rem;border:1px solid var(--rule-strong);border-radius:4px;background:var(--surface);color:var(--ink);max-width:100%}td input.num{width:4rem}td input.hex{width:6rem;margin-left:.3rem}.color-edit{display:inline-flex;align-items:center}.color-edit input[type=color]{width:2rem;height:1.7rem;padding:0;border:1px solid var(--rule-strong);border-radius:4px;background:none}.swatch-cell{display:inline-flex;align-items:center;gap:.45rem;font-variant-numeric:tabular-nums}.swatch{width:1.1rem;height:1.1rem;border-radius:3px;border:1px solid var(--rule-strong);display:inline-block}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;font:inherit;cursor:pointer;border:1px solid var(--pine);background:var(--pine);color:#fff;padding:.3rem .7rem;border-radius:5px;touch-action:manipulation}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;color:var(--ink-soft);border-color:var(--rule-strong)}button.ghost:hover{color:var(--ink)}button.ghost.danger{color:var(--ko);border-color:var(--ko);padding:.3rem .55rem}td.actions button{margin-left:.3rem}.add-btn{margin-top:.9rem}.new-row{margin-top:1rem;padding:1rem;background:var(--surface-2);border:1px solid var(--rule-strong);border-radius:6px;display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.7rem}.new-row label{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;color:var(--ink-soft)}.new-row input[type=text],.new-row input[type=number],.new-row select{font:inherit;padding:.35rem .5rem;border:1px solid var(--rule-strong);border-radius:4px;background:var(--surface);color:var(--ink)}.new-actions{grid-column:1 / -1;display:flex;gap:.5rem}.muted{color:var(--ink-soft)}.ok{color:var(--ok);font-weight:600}.ko{color:var(--ko);font-weight:600}footer{font-size:.85rem;padding-top:1rem;border-top:1px solid var(--rule)}:focus-visible{outline:2px solid var(--pine-bright);outline-offset:1px}.grille-wrap,.astreinte-wrap{display:flex;flex-direction:column;gap:.8rem}.grille-toolbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.month-nav{display:flex;align-items:center;gap:.6rem}.month-nav strong{min-width:9rem;text-align:center;font-size:1.05rem}.grille-toolbar select{font:inherit;padding:.35rem .5rem;border:1px solid var(--rule-strong);border-radius:5px;background:var(--surface);color:var(--ink)}.seg{display:inline-flex;border:1px solid var(--rule-strong);border-radius:6px;overflow:hidden}.seg button{border:none;border-radius:0;background:var(--surface);color:var(--ink-soft);padding:.35rem .75rem;font-size:.82rem}.seg button.on{background:var(--pine);color:#fff}.grille-legend{font-size:.8rem}.grille-toast{font-size:.78rem;font-weight:600;color:var(--pine);background:var(--surface-2);border:1px solid var(--rule-strong);border-radius:999px;padding:.15rem .7rem}.grille-scroll{overflow:auto;max-height:78vh;border:1px solid var(--rule-strong);border-radius:6px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}table.grille{border-collapse:separate;border-spacing:0;font-size:.68rem}table.grille th,table.grille td{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:0;text-align:center}table.grille thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);height:6.5rem;vertical-align:bottom;padding:.3rem 0}table.grille .colhead span{writing-mode:vertical-rl;transform:rotate(180deg);display:inline-block;max-height:6rem;font-weight:600;font-size:.72rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table.grille .colhead .chdot{display:block;width:100%;height:4px;margin-top:2px}table.grille thead th.corner{z-index:5;left:0;color:var(--ink-soft);font-weight:700;writing-mode:horizontal-tb;vertical-align:middle;font-size:.72rem}table.grille thead th.c-day{min-width:2.4rem}table.grille thead th.c-half{left:2.4rem;min-width:1.4rem}table.grille .daycell,table.astreinte-table2 .daycell{position:sticky;left:0;z-index:2;background:var(--surface);min-width:2.4rem;border-right:1px solid var(--rule)}table.grille .halfcell{position:sticky;left:2.4rem;z-index:2;background:var(--surface);min-width:1.4rem;font-size:.6rem;color:var(--ink-soft);font-weight:700;border-right:2px solid var(--rule-strong)}.daycell .dn{display:block;font-weight:700;font-size:.82rem;color:var(--ink)}.daycell .dl{display:block;font-size:.58rem;color:var(--ink-soft)}table.grille tr.we .daycell,table.grille tr.we .halfcell,table.astreinte-table2 tr.we .daycell{background:var(--surface-2)}table.grille tr.week-start td,table.grille tr.week-start th{border-top:2px solid var(--rule-strong)}td.cell{min-width:2rem;max-width:3.6rem;height:1.45rem;color:#1b1b1b;font-weight:600;overflow:hidden;white-space:nowrap}tr.we td.cell{background:color-mix(in srgb,var(--rule) 45%,transparent)}td.cell.editable{cursor:pointer;touch-action:manipulation}td.cell.editable:hover{outline:2px solid var(--pine-bright);outline-offset:-2px}td.cell.astreinte{box-shadow:inset 0 0 0 2px #d61f1f}td.cell.dim,th.colhead.dim{opacity:.28}td.cell.dim.editable:hover{opacity:1}table.grille.selectable td.cell{-webkit-user-select:none;user-select:none}td.cell.selected{outline:3px solid var(--ochre);outline-offset:-2px}td.cov{font-weight:700;color:#1b1b1b;min-width:2rem}td.cov-zero{background:#ff6161;color:#fff}td.cov-low{background:#ffd98a}td.cov-ok{background:#bfe3b0}td.cov-closed{background:var(--rule);color:var(--ink-soft)}tr.we td.cov{filter:brightness(.96)}td.empty{padding:1rem;color:var(--ink-soft);text-align:left}table.astreinte-table2{border-collapse:separate;border-spacing:0;width:100%;font-size:.85rem}table.astreinte-table2 th,table.astreinte-table2 td{border-bottom:1px solid var(--rule);padding:.3rem .45rem;vertical-align:top}table.astreinte-table2 thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);text-align:left;font-size:.72rem;color:var(--ink-soft);font-weight:700;border-bottom:2px solid var(--rule-strong);white-space:nowrap}table.astreinte-table2 thead th.c-day{left:0;z-index:4;min-width:2.4rem}table.astreinte-table2 thead th.c-half{left:2.4rem;z-index:4;min-width:4.5rem}table.astreinte-table2 .halfcell.creneau-label{position:sticky;left:2.4rem;z-index:2;background:var(--surface);min-width:4.5rem;width:auto;font-size:.72rem;color:var(--ink-soft);font-weight:700;border-right:2px solid var(--rule-strong);white-space:nowrap}table.astreinte-table2 tr.we .creneau-label{background:var(--surface-2)}.ast-cell{min-width:9rem}.ast-cell.editable{cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.ast-cell.editable:hover{outline:2px solid var(--pine-bright);outline-offset:-2px}.ast-cell-inner{display:flex;flex-wrap:wrap;gap:.3rem;align-items:flex-start;min-height:1.6rem}.ast-plus{color:var(--ink-soft);font-size:.9rem;opacity:.5}.ast-cell.editable:hover .ast-plus{opacity:1;color:var(--pine)}.chip{display:inline-flex;align-items:center;gap:.3rem;background:var(--surface-2);border:1px solid var(--rule-strong);border-radius:999px;padding:.15rem .5rem;font-size:.8rem}.chip small{color:var(--ink-soft);font-size:.68rem}.chip-agence{background:transparent;border-style:dashed;color:var(--ink-soft)}.chip-derive{background:transparent;border-style:dotted;color:var(--ochre)}.chip-x{border:none;background:none;color:var(--ko);padding:0 .1rem;font-size:1rem;line-height:1}.historique-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.historique-list li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem;padding:.45rem .2rem;border-bottom:1px solid var(--admin-rule);font-size:.85rem}.historique-when{font-variant-numeric:tabular-nums;color:var(--admin-accent);font-size:.78rem;white-space:nowrap}.historique-who{font-weight:700;color:var(--admin-ink)}.historique-what{color:var(--admin-ink)}.controles-wrap{display:flex;flex-direction:column;gap:1.2rem}.controle-group h3{display:flex;align-items:center;gap:.5rem;font-size:1rem;margin:0 0 .5rem;padding-bottom:.35rem;border-bottom:1px solid var(--rule-strong)}.controle-count{background:var(--ko);color:#fff;font-size:.72rem;font-weight:700;border-radius:999px;padding:.05rem .5rem;font-variant-numeric:tabular-nums}.controle-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.controle-list li{display:flex;gap:.7rem;align-items:baseline;padding:.5rem .7rem;background:var(--surface);border:1px solid var(--rule);border-left:3px solid var(--ko);border-radius:4px;font-size:.88rem}.controle-date{font-weight:700;color:var(--ink-soft);white-space:nowrap;font-size:.8rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000059;display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:var(--surface);border:1px solid var(--rule-strong);border-radius:10px;padding:1.2rem;width:min(24rem,100%);display:flex;flex-direction:column;gap:.7rem;box-shadow:0 20px 60px -12px #0006}.modal h3{margin:0}.modal>input{font:inherit;padding:.5rem .7rem;border:1px solid var(--rule-strong);border-radius:6px;background:var(--surface-2);color:var(--ink)}.modal-list{display:flex;flex-direction:column;gap:.15rem;max-height:50vh;overflow-y:auto}.modal-list button{display:flex;justify-content:space-between;align-items:center;gap:.5rem;background:transparent;color:var(--ink);border:none;border-radius:6px;padding:.4rem .5rem;font:inherit;text-align:left}.modal-list button:hover{background:var(--surface-2)}.modal-list button.sel{background:var(--pine);color:#fff}.modal-list small{color:var(--ink-soft);font-size:.7rem}.modal-list button.sel small{color:#fffc}.parametres-page{background:var(--admin-bg);border:1px solid var(--admin-rule);color:var(--admin-ink);border-radius:10px;padding:1.2rem 1.4rem;display:flex;flex-direction:column;gap:1rem}.parametres-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.parametres-head h3{display:flex;align-items:center;gap:.5rem;color:var(--admin-ink);margin:0}.admin-badge,.you-badge{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--admin-accent);color:var(--admin-bg);border-radius:999px;padding:.1rem .5rem}.you-badge{margin-left:.5rem;background:var(--pine);color:#fff}.parametres-nav{display:flex;gap:.3rem;border-bottom:1px solid var(--admin-rule);padding-bottom:.6rem;flex-wrap:wrap}.parametres-nav button{background:transparent;color:var(--admin-accent);border:1px solid transparent;border-radius:6px;padding:.4rem .9rem;font:inherit;font-weight:600}.parametres-nav button.on{background:var(--admin-surface);color:var(--admin-ink);border-color:var(--admin-rule)}.parametres-body table{background:var(--admin-surface)}.parametres-body th{color:var(--admin-accent)}.parametres-body td,.parametres-body th{border-color:var(--admin-rule)}.sauvegarde{display:flex;flex-direction:column;gap:.8rem;max-width:32rem}.sauvegarde-option{display:flex;flex-direction:column;gap:.5rem;padding:.8rem;border:1px solid var(--admin-rule);border-radius:6px;background:var(--admin-surface)}.sauvegarde-option .muted{margin:0}.sauvegarde-annee{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--admin-accent);max-width:10rem}.sauvegarde-annee select{font:inherit;padding:.35rem .5rem;border:1px solid var(--admin-rule);border-radius:5px;background:var(--admin-surface);color:var(--admin-ink)}.compte-forms{display:flex;flex-direction:column;gap:1rem;max-width:30rem}.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.6rem}.inline-form label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--admin-accent);flex:1;min-width:10rem}.inline-form input{font:inherit;padding:.4rem .55rem;border:1px solid var(--admin-rule);border-radius:5px;background:var(--admin-surface);color:var(--admin-ink)}.comptes table{width:100%;border-collapse:collapse;font-size:.85rem}.comptes th,.comptes td{text-align:left;padding:.4rem .5rem;border-bottom:1px solid var(--admin-rule)}.comptes code{font-size:.8rem}.comptes td.actions{white-space:nowrap}.comptes td.actions button{margin-right:.3rem}.comptes td input{font:inherit;padding:.3rem .45rem;width:100%;border:1px solid var(--admin-rule);border-radius:4px;background:var(--admin-surface);color:var(--admin-ink)}.gate-page{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:1rem}.gate-page .login-modal{box-shadow:0 20px 60px -12px #00000040}.login-modal{width:min(22rem,100%)}.login-modal form{display:flex;flex-direction:column;gap:.8rem}.login-modal label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--ink-soft)}.login-modal input{font:inherit;padding:.5rem .65rem;border:1px solid var(--rule-strong);border-radius:6px;background:var(--surface-2);color:var(--ink)}.login-actions{display:flex;gap:.6rem}.login-actions button[type=submit]{flex:1}.absence-modal{width:min(26rem,100%);gap:.7rem}.absence-modal label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--ink-soft)}.absence-modal select,.absence-modal input[type=date]{font:inherit;padding:.5rem .65rem;border:1px solid var(--rule-strong);border-radius:6px;background:var(--surface-2);color:var(--ink)}.absences-modal{width:min(30rem,100%);gap:.7rem}.absences-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.7rem;max-height:55vh;overflow-y:auto}.absences-list li{padding:.6rem .7rem;background:var(--surface-2);border:1px solid var(--rule);border-radius:6px}.absences-item-head{display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline;margin-bottom:.5rem}.absences-item-head strong{font-size:.95rem}.absences-item-actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem}.absences-item-actions label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem}.absences-item-actions input[type=date]{font:inherit;padding:.3rem .4rem;border:1px solid var(--rule-strong);border-radius:5px;background:var(--surface);color:var(--ink)}.search-modal{gap:.9rem}.search-who{display:flex;align-items:center;gap:.5rem}.search-who strong{font-size:1.05rem}.search-who small{color:var(--ink-soft)}.search-who button{margin-left:auto}.search-day{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--ink-soft)}.search-day select{font:inherit;padding:.3rem .5rem;border:1px solid var(--rule-strong);border-radius:5px;background:var(--surface);color:var(--ink)}.search-readout{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.search-readout li{display:flex;align-items:center;gap:.5rem;font-size:.9rem;padding:.4rem .6rem;background:var(--surface-2);border-radius:5px}.search-readout .dot{width:.85rem;height:.85rem;border-radius:3px;border:1px solid var(--rule-strong);flex:none}.search-readout .search-ast{color:var(--ko);font-weight:600;background:transparent;padding-left:.6rem}.cell-picker{position:fixed;z-index:50;width:260px;max-width:calc(100vw - 16px);max-height:min(340px,calc(100vh - 16px));display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--rule-strong);border-radius:8px;box-shadow:0 12px 40px -8px #00000059;overflow:hidden}.picker-count{margin:0;padding:.5rem .7rem 0;font-size:.74rem;font-weight:700;color:var(--ochre);text-transform:uppercase;letter-spacing:.04em}.cell-picker>input{font:inherit;padding:.5rem .7rem;border:none;border-bottom:1px solid var(--rule);background:var(--surface-2);color:var(--ink)}.picker-list{overflow-y:auto;padding:.3rem}.picker-group{margin:.4rem 0 .2rem;padding-left:.3rem;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--pine)}.picker-list button{display:flex;align-items:center;gap:.5rem;width:100%;text-align:left;background:transparent;color:var(--ink);border:none;border-radius:5px;padding:.35rem .4rem;font:inherit;font-size:.82rem}.picker-list button:hover{background:var(--surface-2)}.picker-list button.sel{background:var(--pine);color:#fff}.picker-clear{color:var(--ink-soft)!important;font-style:italic}.picker-list .dot{width:.85rem;height:.85rem;border-radius:3px;border:1px solid var(--rule-strong);flex:none}.picker-hint{margin-left:auto;font-size:.66rem;color:var(--ink-soft)}.print-title{display:none}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}body{background:#fff}.app-head,.tabs,footer,.grille-toolbar{display:none!important}.shell{max-width:none;padding:0;gap:.6rem}.print-title{display:block;font-weight:700;font-size:1rem;margin:0}.grille-scroll{max-height:none;overflow:visible;border:none}table.grille,table.astreinte-table2{font-size:8px}table.grille thead th,table.astreinte-table2 thead th,table.grille .daycell,table.grille .halfcell,table.astreinte-table2 .daycell,table.astreinte-table2 .creneau-label{position:static}td.cell{min-width:0;max-width:none;height:auto}.ast-cell{min-width:0}@page{size:landscape;margin:10mm}}@media (max-width: 720px){.shell{padding:1rem 12px 3rem;gap:1rem}.app-head{gap:.6rem}h1{font-size:1.3rem}footer{font-size:.78rem}button,.lock-btn,.tabs button,.seg button,.parametres-nav button{min-height:2.75rem}.tabs button{padding:.5rem .9rem}.grille-toolbar{gap:.6rem}.grille-toolbar select,.new-row select,.new-row input,.inline-form input{min-height:2.6rem}.grille-toolbar select,.modal input,.new-row input,.inline-form input,.comptes td input,.cell-picker>input{font-size:16px}.month-nav strong{min-width:7rem;font-size:.95rem}table.grille{font-size:.74rem}td.cell{min-width:2.6rem;height:2.1rem}table.astreinte-table2{font-size:.82rem}table.grille thead th{height:5.5rem}table.grille .colhead span{max-height:5rem}.chip-x{padding:.15rem .4rem;font-size:1.15rem}.picker-list button,.modal-list button{padding:.6rem .5rem;font-size:.9rem}.ast-plus{font-size:1.1rem}.modal,.parametres-page{padding:1rem}.parametres-head{flex-direction:column;align-items:stretch}.comptes td.actions{white-space:normal}.comptes td.actions button{margin:.15rem .3rem .15rem 0}}
