
:root{--bg:#f4f2ed;--panel:#fff;--ink:#222826;--muted:#66716c;--line:#d9dfdc;--accent:#ae3e3e;--green:#355f55;--ok:#287347;--warn:#9e6917;--bad:#9e3939;--blue:#285f82;--shadow:0 12px 34px rgba(31,40,36,.09)}
*{box-sizing:border-box}body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:linear-gradient(135deg,#fbf7f4,#f1e8e4);min-height:100vh}button,input,select,textarea{font:inherit}.hidden{display:none!important}
.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(540px,100%);background:#fff;border-radius:24px;padding:30px;box-shadow:var(--shadow)}.logo-main{width:190px;max-height:120px;object-fit:contain;display:block;margin:0 auto 10px}.logo-fallback{text-align:center;font-size:30px;font-weight:900;color:var(--green);margin:10px 0}
h1{text-align:center}.sub{text-align:center;color:var(--muted);line-height:1.5}.field{display:grid;gap:7px;margin:14px 0}label{font-weight:700;font-size:14px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px 11px;color:var(--ink)}textarea{resize:vertical;min-height:115px}
.btn{display:inline-block;border:0;border-radius:11px;padding:10px 14px;font-weight:750;cursor:pointer;text-decoration:none}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{background:var(--accent-soft);color:var(--ink)}.btn-danger{background:#fff0f0;color:var(--bad);border:1px solid #efd5d5}.btn-blue{background:var(--blue);color:#fff}.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}.btn-small{padding:7px 10px;font-size:12px}.btn-row{display:flex;gap:7px;flex-wrap:wrap}
.notice{padding:13px 14px;border:1px solid #e2cbc6;background:#f7eeeb;color:#684744;border-radius:12px;line-height:1.5}.notice.warn{border-color:#eadcc2;background:#faf3e7;color:#705a32}.notice.bad{border-color:#efd5d5;background:#fff0f0;color:#8c3333}.notice+.notice{margin-top:10px}
.shell{min-height:100vh;display:grid;grid-template-columns:270px minmax(0,1fr);transition:grid-template-columns .18s ease}.sidebar{position:relative;background:#302323;color:white;padding:19px 16px;display:flex;flex-direction:column;gap:18px;min-width:0;transition:padding .18s ease}.sidebar-toggle{flex:0 0 auto;align-self:flex-end;width:34px;height:34px;border:1px solid #815557;border-radius:10px;background:#5e3638;color:#fff;font-size:24px;line-height:1;display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 12px #0002;margin-bottom:-8px}.sidebar-toggle:hover{background:#744548}.side-logo{background:#fff;border-radius:15px;padding:8px 11px}.side-logo img{width:100%;height:82px;object-fit:contain}.side-expo{background:#493133;border-radius:13px;padding:12px;font-size:13px;line-height:1.5}.side-expo strong{display:block;font-size:15px;margin-bottom:4px}
.nav{display:grid;gap:7px}.nav button,.nav a{display:block;border:0;background:transparent;color:#dce5e1;text-align:left;padding:11px 12px;border-radius:10px;font-weight:700;cursor:pointer;text-decoration:none}.nav button:hover,.nav button.active,.nav a:hover{background:#624044;color:#fff}.user{margin-top:auto;border-top:1px solid #6b494b;padding-top:14px;font-size:13px;color:#d7e0dc}.role{display:inline-block;margin-top:5px;padding:4px 8px;background:#654143;border-radius:999px;font-size:11px;font-weight:800}
.content{padding:0 27px 27px;overflow:auto;min-width:0}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px;padding-top:27px}.topbar h2{margin:0}.topbar p{margin:6px 0 0;color:var(--muted)}.toolbar{display:flex;gap:9px;flex-wrap:wrap}.expo-picker{min-width:290px}
.panel,.card{background:#fff;border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.panel{padding:18px;margin-bottom:18px;overflow:auto}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:14px}.panel-head h3{margin:0}.panel-head p{margin:5px 0 0;color:var(--muted);font-size:14px}.cards{display:grid;grid-template-columns:repeat(4,minmax(155px,1fr));gap:14px;margin:18px 0}.card{padding:17px}.card .label{color:var(--muted);font-size:13px}.card .value{font-size:29px;font-weight:850;margin-top:7px}.split{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}
table{border-collapse:collapse;width:100%}th,td{padding:11px 9px;border-bottom:1px solid #e9eeeb;text-align:left;vertical-align:middle;font-size:14px}th{font-size:12px;color:var(--muted);text-transform:uppercase}.thumb{width:92px;height:68px;display:block;object-fit:contain;object-position:center;border-radius:8px;border:1px solid #d3d9d6;background:#f4f4f2;padding:3px;cursor:zoom-in}.placeholder{display:grid;place-items:center;color:#78817d;font-size:11px}.work-cell{display:flex;align-items:center;gap:11px;min-width:0;width:100%}.small{font-size:12px}.muted{color:var(--muted)}.nowrap{white-space:nowrap}.works-table{table-layout:fixed;width:1500px;min-width:1500px}.works-table th,.works-table td{overflow-wrap:anywhere}.works-table td:nth-child(1){text-align:center}.works-table td:nth-child(2),.works-table td:nth-child(3),.works-table td:nth-child(5),.works-table td:nth-child(6){vertical-align:middle}.works-table .table-select,.works-table .room-inline,.works-table .table-textarea{min-width:0;width:100%}.works-table td:nth-child(10) .btn{white-space:normal;width:100%}
.status{display:inline-block;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;white-space:nowrap}.status.accepted,.status.final{background:#e5f3e9;color:var(--ok)}.status.pending,.status.choice2{background:#fbf0dd;color:var(--warn)}.status.refused,.status.removed{background:#f8e4e4;color:var(--bad)}.status.choice1{background:#edf1ef;color:#57655f}.collector-row td:first-child{border-left:5px solid transparent}.collector-row.accepted{background:#f6fcf8}.collector-row.accepted td:first-child{border-left-color:var(--ok)}.collector-row.pending{background:#fffaf0}.collector-row.pending td:first-child{border-left-color:var(--warn)}.collector-row.refused{background:#fff3f3}.collector-row.refused td:first-child{border-left-color:var(--bad)}
.contact{padding:9px 10px;background:#f3f6f4;border:1px solid #e0e7e3;border-radius:9px;line-height:1.5;white-space:pre-line;min-width:220px}.contact a{color:#185f88;font-weight:700;text-decoration:none}.commissioner-note{margin-top:8px;padding:9px 10px;border-left:4px solid var(--blue);border-radius:8px;background:#eef5f9;line-height:1.45;white-space:pre-line}.commissioner-note a{color:#185f88;font-weight:700;text-decoration:underline;text-underline-offset:2px}.commissioner-instructions{margin-top:17px;border-left:6px solid var(--blue)}.commissioner-instructions .instruction-list{display:grid;gap:11px;margin-top:14px}.commissioner-instructions .instruction-item{padding:12px 14px;border:1px solid #dce8ee;border-radius:11px;background:#f6fafc}.commissioner-instructions .instruction-name{font-weight:850;margin-bottom:6px}.commissioner-instructions .instruction-text{line-height:1.5;white-space:pre-line}.commissioner-instructions .instruction-text a{color:#185f88;font-weight:700;text-decoration:underline;text-underline-offset:2px}.locked{font-style:italic;color:#77817d}.commissioner-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 17px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);margin-bottom:17px}.commissioner-banner img{width:165px;height:85px;object-fit:contain}.expo-title{font-size:21px;font-weight:850}.proof-box{padding:12px 13px;border:1px solid #dce5e1;border-radius:11px;background:#f8faf9}.proof-list{display:grid;gap:7px;margin-bottom:10px}.proof-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:#fff;border:1px solid var(--line);border-radius:9px}.proof-item a{color:#185f88;font-weight:750;text-decoration:none;overflow-wrap:anywhere}.proof-upload{padding-top:10px;border-top:1px solid var(--line)}.proof-upload input[type=file]{padding:9px;background:#fff}.proof-upload .small{margin-top:6px;line-height:1.45}.work-photo-editor{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:16px;align-items:start;padding:13px;border:1px solid var(--line);border-radius:12px;background:#f8faf9}.work-photo-current{display:grid;gap:7px}.work-photo-current img{width:100%;max-height:210px;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#fff;padding:5px}.work-photo-actions{display:grid;gap:9px}.work-photo-actions input[type=file]{background:#fff}.proof-item .btn{flex:0 0 auto}.journal-detail{min-width:360px;max-width:760px;white-space:normal;line-height:1.45}.journal-filters{margin-bottom:4px}
.modal-wrap{position:fixed;inset:0;background:#1218157a;display:grid;place-items:center;padding:20px;z-index:20}.modal{background:#fff;border-radius:18px;width:min(760px,100%);max-height:92vh;overflow:auto;padding:21px;box-shadow:0 24px 80px #0005}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.modal-head h3{margin:0}.close{border:0;background:#edf1ef;width:35px;height:35px;border-radius:50%;font-size:21px;cursor:pointer}.date-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mail-body{min-height:310px;line-height:1.45}.modal-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:15px}.busy-indicator{position:fixed;z-index:1000;right:22px;bottom:22px;display:flex;align-items:center;gap:10px;max-width:min(430px,calc(100vw - 32px));padding:13px 17px;border-radius:12px;background:#202b27;color:#fff;box-shadow:0 16px 42px rgb(22 40 59 / 28%);pointer-events:none}.busy-hourglass{font-size:20px;animation:h360-hourglass 1.15s ease-in-out infinite}.busy-indicator strong{font-size:13px;line-height:1.35}body.is-busy{cursor:wait}body.is-busy button{cursor:wait}@keyframes h360-hourglass{0%,100%{transform:rotate(0deg)}50%{transform:rotate(180deg)}}
.consent-summary{display:grid;gap:5px;margin-top:8px;padding:9px 10px;border-radius:9px;border:1px solid #dce5e1;background:#f8faf9;font-size:12px;line-height:1.45}.consent-summary strong{font-size:13px}.task-list{display:grid;gap:12px}.task-item{display:grid;grid-template-columns:minmax(170px,.7fr) minmax(280px,1.6fr) auto;gap:14px;align-items:start;padding:14px;border:1px solid #eadcc2;border-left:5px solid var(--warn);border-radius:12px;background:#fffaf0}.task-note{white-space:pre-line;line-height:1.5}.mail-choice{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin:18px 0}.mail-choice button{min-height:95px;text-align:left}.mail-choice button strong{display:block;margin-bottom:5px}.mail-choice button span{display:block;font-size:12px;font-weight:500;line-height:1.4}.consent-proof{margin:14px 0;padding:13px;border:1px solid #dce5e1;border-radius:11px;background:#f8faf9;line-height:1.5}.consent-proof pre{white-space:pre-wrap;font:inherit;margin:8px 0 0}.mail-sender{overflow-wrap:anywhere}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:0 14px}.dimension-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:0 10px}.check{display:flex;align-items:center;gap:8px;font-weight:700;margin:10px 0}.check input{width:auto}.form-section{margin:22px 0 5px;padding-top:14px;border-top:1px solid var(--line);font-size:16px}.modal-wide{width:min(980px,100%)}input[readonly]{background:#f1f3f2;color:#68716d}.modal select[size]{min-height:230px}.modal h4:first-of-type{margin-top:18px}
.drag-cell{width:46px;text-align:center}.drag-handle{display:inline-grid;place-items:center;width:31px;height:31px;border:1px solid var(--line);border-radius:8px;background:#f3f6f4;color:var(--green);font-size:18px;cursor:grab;user-select:none}.drag-handle:active{cursor:grabbing}.work-row.dragging{opacity:.45}.work-row.drag-over{outline:2px dashed var(--accent);outline-offset:-3px}.room-chip{display:inline-block;padding:5px 9px;border-radius:999px;background:#edf1ef;font-weight:800;white-space:nowrap}.type-fiche-label{display:inline-block;margin-top:6px;padding:4px 8px;border-radius:999px;background:#eef2f7;color:#35506b;font-size:12px;font-weight:800;white-space:nowrap}.schema-note{margin-bottom:14px}.exhibition-status{display:inline-flex;align-items:center;gap:7px}.active-dot{width:9px;height:9px;border-radius:50%;background:var(--bad)}.active-dot.yes{background:var(--ok)}
.room-manager{border:1px solid var(--line);border-radius:14px;background:#f8faf9;padding:12px}.room-manager-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.room-manager-head strong{font-size:14px}.room-list{display:grid;gap:8px}.room-item{display:grid;grid-template-columns:38px minmax(180px,1fr) auto auto;gap:8px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:11px;padding:8px}.room-item.dragging{opacity:.45}.room-item.drag-over{outline:2px dashed var(--accent);outline-offset:2px}.room-item input{margin:0}.room-usage{white-space:nowrap;font-size:12px;color:var(--muted);font-weight:700}.room-remove{border:1px solid #ead7d7;background:#fff3f3;color:var(--bad);border-radius:9px;padding:7px 9px;font-weight:800;cursor:pointer}.room-remove:disabled{opacity:.45;cursor:not-allowed}.room-manager-empty{padding:13px;color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:10px}.room-help{margin-top:8px;line-height:1.45}.room-manager .drag-handle{cursor:grab}.room-manager .drag-handle:active{cursor:grabbing}
.wall-controls{display:flex;align-items:end;gap:14px;flex-wrap:wrap;margin:14px 0 18px}.wall-controls .field{margin:0;min-width:190px}.scale-control{display:flex;align-items:center;gap:10px}.scale-control input{width:230px}.room-plan{margin-bottom:22px}.room-plan h3{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px}.wall-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:15px;background:#fff}.wall-stage{min-width:100%;width:max-content;min-height:410px;padding:20px 28px 24px;background:#fbfaf7}.wall-works{min-height:350px;display:flex;align-items:center;gap:34px;padding:10px 18px 20px}.wall-work{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:105px}.wall-frame{display:grid;place-items:center;box-sizing:content-box;overflow:hidden;background:transparent}.wall-frame.is-framed{border:8px solid #5e5348;outline:2px solid #938577;outline-offset:-5px;background:#ece7de;box-shadow:0 4px 12px #0002;padding:3px}.wall-frame img{width:100%;height:100%;display:block;object-fit:contain;object-position:center;background:#f5f4f0}.wall-frame.assumed-dim:not(.is-framed){border:2px dashed #9b8f82}.wall-frame.is-framed.assumed-dim{border-style:dashed}.room-inline{min-width:145px;padding:7px 9px;font-size:12px}.table-select{min-width:135px;padding:7px 9px;font-size:12px}.table-textarea{min-width:190px;min-height:58px;padding:7px 9px;font-size:12px;resize:vertical}.table-note-label{display:block;margin:0 0 4px;font-size:11px;color:var(--muted);font-weight:800}.table-note-label+.table-textarea{margin-bottom:8px}.inline-check{display:inline-flex;align-items:center;gap:7px;font-weight:800;white-space:nowrap}.inline-check input{width:auto}.wall-label{max-width:180px;margin-top:9px;text-align:center;font-size:12px;line-height:1.35}.wall-label strong{display:block}.wall-measure{color:var(--muted);font-size:11px}.room-empty{padding:25px;color:var(--muted)}.modal select[multiple]{min-height:155px}
.manual-value{display:inline-block;background:#fff0bf;border:1px solid #e4c66f;border-radius:6px;padding:1px 5px;color:#5f4810}.manual-badge{display:inline-block;margin-top:5px;padding:4px 7px;border-radius:999px;background:#fff0bf;border:1px solid #e4c66f;color:#6b5111;font-size:11px;font-weight:850}.manual-row td:first-child{box-shadow:inset 5px 0 0 #d5a72d}.manual-field{padding:8px 9px;border-radius:10px;background:#fff8df;border:1px solid #ead58f}.manual-field label::after{content:' · modifié manuellement';color:#8a6815;font-size:11px;font-weight:800}.manual-legend{border-color:#ead58f;background:#fff8df;color:#6b5111}.manual-legend .manual-swatch{display:inline-block;width:18px;height:12px;border-radius:4px;background:#fff0bf;border:1px solid #e4c66f;vertical-align:-1px;margin-right:6px}.manual-dim-line{display:block;margin-top:3px}.manual-reset-list{display:grid;gap:7px;margin-top:11px}.manual-reset-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border:1px solid #e4c66f;border-radius:9px;background:#fffdf3}.manual-reset-item strong{font-size:13px}.manual-reset-help{margin-top:9px;font-size:12px;line-height:1.45}.manual-reset-all{margin-top:9px}
.app-brand-title,.app-kicker{font-family:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;color:var(--ink);font-weight:700;letter-spacing:.01em}.app-brand-title{margin:4px 0 2px;font-size:clamp(24px,5vw,34px)}.app-kicker{margin:0 0 5px;font-size:18px}.image-hover-preview{position:fixed;z-index:120;pointer-events:none;display:grid;place-items:center;max-width:min(460px,42vw);max-height:min(460px,72vh);padding:8px;border:1px solid #cfd8d4;border-radius:14px;background:#fff;box-shadow:0 18px 55px #0005}.image-hover-preview img{display:block;max-width:min(440px,40vw);max-height:min(440px,70vh);width:auto;height:auto;object-fit:contain;border-radius:9px}.image-hover-preview.hidden{display:none!important}
@media(min-width:1001px){.shell{height:100vh;min-height:0}.sidebar{height:100vh;overflow:auto}.content{height:100vh;min-width:0;overflow:auto}.panel{overflow:visible}.panel:has(> table){width:max-content;min-width:100%;background:#fff}.panel:has(> table)>table{min-width:100%;background:#fff}table thead{position:sticky;top:0;z-index:15;background:#fff;box-shadow:0 2px 0 #dfe5e2}table thead th{position:static;background:#fff}.shell.sidebar-collapsed{grid-template-columns:54px minmax(0,1fr)}.shell.sidebar-collapsed .sidebar{padding:10px 7px;overflow:hidden}.shell.sidebar-collapsed .sidebar-toggle{align-self:center;margin-bottom:0}.shell.sidebar-collapsed .side-logo,.shell.sidebar-collapsed .side-expo,.shell.sidebar-collapsed .nav,.shell.sidebar-collapsed .user{display:none}}
@media(max-width:1000px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;overflow:auto}.sidebar-toggle{display:none}.side-logo{width:170px;min-width:170px}.side-expo,.user{display:none}.nav{display:flex}.content{padding:0 18px 18px}.topbar{padding-top:18px}.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}}
@media(max-width:680px){.work-photo-editor,.mail-choice,.task-item{grid-template-columns:1fr}.form-grid,.dimension-grid{grid-template-columns:1fr}.cards{grid-template-columns:1fr}.topbar{flex-direction:column}.expo-picker{min-width:100%}.panel{overflow:auto}.date-grid{grid-template-columns:1fr}.commissioner-banner{align-items:flex-start;flex-direction:column}.room-item{grid-template-columns:38px minmax(0,1fr)}.room-usage,.room-remove{grid-column:2}.room-manager-head{align-items:flex-start;flex-direction:column}}

/* Charte graphique AAHS / Henry360 — v7.1.4 */
.side-logo{padding:9px 11px 10px}.side-logo-subtitle{margin-top:4px;padding-top:7px;border-top:1px solid #eadbd7;text-align:center;color:var(--accent-dark);font-family:"Segoe Print","Bradley Hand","Comic Sans MS",cursive;font-size:13px;font-weight:700;line-height:1.2}.app-brand-title,.app-kicker{color:var(--accent-dark)}a{color:var(--accent-dark)}input:focus,select:focus,textarea:focus{border-color:#b86b69;outline:3px solid #ead4d0;outline-offset:1px}.type-fiche-label{background:#f4e7e4;color:#70383a}.busy-indicator{background:#3b292a}.room-chip{background:#f4e9e6}.drag-handle{background:#f7eeeb;color:var(--accent-dark)}

/* Alerte d'expiration de session — V7.1.4 */
.session-warning{position:fixed;left:50%;top:18px;transform:translateX(-50%);z-index:10050;display:flex;align-items:center;justify-content:space-between;gap:18px;width:min(760px,calc(100vw - 28px));padding:14px 16px;border-radius:14px;background:#fff7df;border:1px solid #d8b66b;box-shadow:0 16px 42px #0003;color:#573b12}
.session-warning.hidden{display:none}.session-warning strong{display:block;margin-bottom:3px}.session-warning-actions{display:flex;gap:8px;flex-wrap:wrap;flex:0 0 auto}.session-warning .btn-ghost{background:#fff;border-color:#bda15e;color:#573b12}
@media(max-width:680px){.session-warning{align-items:stretch;flex-direction:column}.session-warning-actions .btn{flex:1}}
