/* Atelier : chrome saisonnier, scène Dofus indépendante de la saison. */
.haven-page .haven{max-width:1680px;margin:auto;padding:30px 30px 22px;color:var(--text);font-family:Manrope,sans-serif}
.haven *, .haven *::before,.haven *::after{box-sizing:border-box}
.haven button,.haven input,.haven select{font:inherit}
.haven button,.haven-file-label{cursor:pointer;border:1px solid var(--card-border,rgba(125,100,130,.25));border-radius:12px;background:var(--panel-strong);color:var(--text);padding:10px 14px;font-size:12px;font-weight:800;line-height:1.4;transition:background .15s,transform .15s,border-color .15s}
.haven button:hover:not(:disabled),.haven-file-label:hover{border-color:var(--accent);transform:translateY(-1px)}
.haven button:disabled{opacity:.35;cursor:default}
.haven :focus-visible{outline:3px solid var(--accent,#e8b35a);outline-offset:3px}
.haven .haven-primary{background:var(--action-solid,var(--primary));color:var(--action-solid-text,#fff);border-color:transparent;box-shadow:0 6px 18px var(--action-shadow,rgba(90,50,90,.18))}
.haven .haven-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:0 0 24px;padding:0;min-height:0}
.haven-title{display:flex;align-items:center;gap:15px}
.haven h1,.haven h2{font-family:'Bricolage Grotesque',sans-serif;margin:0;letter-spacing:-.04em;line-height:1.1;color:var(--text)}
.haven h1{font-size:clamp(25px,2.4vw,38px)}
.haven h2{font-size:24px}
.haven p{margin:6px 0 0;font-size:12px;line-height:1.6;color:var(--muted)}
.haven p.haven-eyebrow{margin:0 0 5px;text-transform:uppercase;font-size:9px;letter-spacing:.16em;font-weight:800;color:var(--accent)}
.haven-actions{display:flex;gap:8px;flex-shrink:0}
.haven-workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
.haven-room-panel,.haven-catalogue{background:var(--panel-strong);border:1px solid var(--card-border,rgba(125,100,130,.25));border-radius:22px;overflow:hidden;box-shadow:0 14px 45px rgba(30,15,35,.08)}
.haven-room-heading{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;gap:10px}
.haven .haven-theme-open{display:flex;gap:11px;align-items:center;text-align:left;padding:0;border:0;background:none}
.haven-theme-open img{width:70px;height:44px;object-fit:cover;border-radius:9px;background:#151318}
.haven-theme-open span:nth-child(2){display:grid;gap:3px;min-width:105px}
.haven-theme-open small{font-size:9px;color:var(--muted);font-weight:600}
.haven-theme-open strong{font-size:14px}
.haven-history{display:flex;gap:5px}
.haven-history button{padding:6px;width:34px;height:34px;font-size:20px;background:var(--panel-soft);border-color:transparent}
.haven-history button:last-child{font-size:13px}
.haven-stage{position:relative;width:100%;height:clamp(420px,43vw,690px);background:#111016;overflow:hidden;isolation:isolate;touch-action:none}
.haven-stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.haven-stage canvas.is-placing{cursor:crosshair}
.haven-stage canvas.is-dragging{cursor:grabbing}
.haven-stage-loading{position:absolute;inset:0;display:grid;place-items:center;color:#f7e5cc;background:#111016;z-index:4;font-size:14px}
.haven [hidden]{display:none!important}
.haven-stage-badge{position:absolute;top:17px;left:17px;display:flex;align-items:center;gap:7px;font-size:9px;color:#e4d8c9;letter-spacing:.06em;text-transform:uppercase;background:#17131ccc;border:1px solid #ffffff20;padding:7px 10px;border-radius:30px;pointer-events:none}
.haven-stage-badge span{width:5px;height:5px;border-radius:50%;background:#dabb7b;box-shadow:0 0 9px #dabb7b99}
.haven-view-tools{position:absolute;right:14px;top:14px;display:flex;gap:4px}
.haven .haven-view-tools button{width:32px;height:32px;padding:0;background:#17131cda;color:#f4e7d6;border-color:#ffffff28;font-size:18px;border-radius:9px}
.haven .haven-view-tools button[aria-pressed=true]{background:#ac8247;color:#fff}
.haven-stage-hint{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);max-width:90%;text-align:center;pointer-events:none;color:#e9dfd0;font-size:10px;line-height:1.5;padding:8px 14px;border-radius:30px;background:#17131cdd;border:1px solid #ffffff20;white-space:normal}
.haven-selection{padding:15px 17px;display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:78px}
#haven-selection-info{display:grid;gap:5px;min-width:0}
#haven-selection-info strong{font-size:12px}
#haven-selection-info span{font-size:10px;color:var(--muted)}
.haven-selection-actions{display:flex;gap:5px;flex-shrink:0}
.haven-selection-actions button{padding:8px;font-size:11px;background:var(--panel-soft)}
.haven-room-foot{border-top:1px solid var(--card-border,rgba(125,100,130,.2));display:flex;align-items:center;gap:10px;padding:9px 17px;color:var(--muted);font-size:9px}
.haven-room-foot span:first-child{font-weight:800;color:var(--text)}
.haven-room-foot button{margin-left:auto;border:0;background:none;color:var(--muted);font-size:9px;padding:2px}
.haven-catalogue{padding:20px 16px;display:flex;flex-direction:column;height:clamp(610px,calc(43vw + 202px),892px)}
.haven-catalogue-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:21px}
.haven-catalogue h2{font-size:24px}
#haven-catalogue-count{font-size:10px;color:var(--muted);white-space:nowrap}
.haven-field{display:grid;gap:7px;font-size:10px;font-weight:800;color:var(--muted)}
.haven-field select,.haven-field input{width:100%;min-height:39px;color:var(--text);background:var(--panel-soft);border:1px solid var(--card-border,rgba(125,100,130,.25));padding:9px 12px;border-radius:11px;font-size:12px;outline-offset:2px}
.haven-field select option{color:var(--text);background:var(--panel-strong)}
.haven-tabs{display:flex;gap:4px;background:var(--panel-soft);padding:4px;border-radius:12px;margin-top:14px}
.haven-tabs button{flex:1;padding:8px 4px;border:0;font-size:10px;background:transparent;border-radius:8px}
.haven-tabs button[aria-pressed=true]{background:var(--action-solid,var(--primary));color:var(--action-solid-text,#fff);box-shadow:0 2px 6px rgba(0,0,0,.1)}
.haven .haven-catalogue-help{font-size:10px;margin:10px 0 14px;line-height:1.6}
.haven-items{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;align-content:start;overflow:auto;min-height:0;padding:2px 3px 3px;scrollbar-width:thin;flex:1}
.haven .haven-item{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px;min-height:98px;overflow:hidden;background:var(--panel-soft);border-radius:12px}
.haven-item img{width:100%;height:66px;object-fit:contain;filter:drop-shadow(0 4px 3px #0003);pointer-events:none}
.haven-item small{font-size:8px;color:var(--muted);margin-top:5px;line-height:1.2}
.haven .haven-item[aria-pressed=true]{border:2px solid var(--accent);background:var(--panel-strong);padding:4px}
.haven .haven-item.is-unavailable{opacity:.5}
.haven .haven-more{margin-top:10px;padding:7px;font-size:10px;background:var(--panel-soft)}
.haven .haven-credit{font-size:9px;max-width:950px;margin:16px auto 0;text-align:center;line-height:1.8}
.haven-credit a{color:var(--text);text-decoration:underline;text-underline-offset:3px}
.haven-dialog{background:var(--panel-strong);color:var(--text);border:1px solid var(--card-border,rgba(125,100,130,.3));border-radius:24px;width:min(900px,calc(100% - 28px));max-height:85dvh;padding:25px;box-shadow:0 30px 110px #0008}
.haven-dialog::backdrop{background:#120e1bc9;backdrop-filter:blur(8px)}
.haven-dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:0 0 20px}
.haven .haven-close{border:0;background:var(--panel-soft);font-size:22px;padding:2px;width:32px;height:32px;border-radius:50%;flex-shrink:0}
.haven .haven-dialog-note{font-size:11px;margin:12px 0 18px}
.haven-themes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.haven .haven-theme-card{padding:0;overflow:hidden;text-align:left;background:var(--panel-soft);border-radius:14px}
.haven-theme-card img{width:100%;aspect-ratio:1.7;object-fit:cover;display:block;background:#111016}
.haven-theme-card span{display:flex;justify-content:space-between;gap:6px;padding:12px;font-size:11px}
.haven-theme-card small{color:var(--muted);font-size:9px}
.haven .haven-theme-card[aria-pressed=true]{border:2px solid var(--accent)}
.haven-project-dialog{max-width:650px}
#haven-save-form{display:flex;gap:10px;align-items:end}
#haven-save-form label{flex:1}
.haven-project-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--card-border,rgba(125,100,130,.25))}
.haven-project-row img{width:75px;height:50px;object-fit:cover;border-radius:8px}
.haven-project-row div{flex:1;min-width:0;display:grid;gap:5px}
.haven-project-row strong{font-size:12px;overflow:hidden;text-overflow:ellipsis}
.haven-project-row small{font-size:10px;color:var(--muted)}
.haven-project-row button{padding:7px;font-size:10px}
.haven-file-actions{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.haven-file-label{display:inline-flex;align-items:center;position:relative;overflow:hidden}
.haven-file-label input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}
.haven-help-dialog{max-width:600px}
.haven-help-dialog ol{padding-left:20px}
.haven-help-dialog li{font-size:12px;line-height:1.8;margin:15px 0;color:var(--muted)}
.haven-help-dialog li strong{color:var(--text)}
#haven-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--panel-strong);color:var(--text);border:1px solid var(--accent);padding:12px 20px;border-radius:14px;z-index:10000;box-shadow:0 8px 30px #0004;max-width:90%;font-size:12px}
.haven-stage:fullscreen{height:100dvh;width:100vw}
@media(min-width:1600px){.haven-workspace{grid-template-columns:minmax(0,1fr) 340px}.haven-items{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1050px){.haven-page .haven{padding:22px 18px}.haven-workspace{grid-template-columns:minmax(0,1fr) 265px;gap:12px}.haven-stage{height:480px}.haven-catalogue{height:682px}.haven-selection-actions button span{display:none}.haven-room-foot{flex-wrap:wrap;font-size:8px}.haven-title img{width:40px;height:40px}.haven-actions button{padding:9px}.haven h1{font-size:26px}}
@media(max-width:740px){.haven-page .haven{padding:18px 12px}.haven .haven-heading{align-items:start;flex-direction:column;gap:14px;margin-bottom:16px}.haven-actions{width:100%}.haven-actions button{flex:1}.haven-workspace{grid-template-columns:1fr}.haven-stage{height:420px}.haven-catalogue{height:470px}.haven-catalogue-title{margin-bottom:12px}.haven-items{grid-template-columns:repeat(5,minmax(0,1fr))}.haven-selection{padding:12px;gap:6px}.haven-selection-actions button{padding:7px}.haven-themes{grid-template-columns:repeat(2,minmax(0,1fr))}.haven-dialog{padding:18px}.haven-title{gap:10px}.haven-title p{font-size:10px}.haven-room-foot span:nth-child(2){font-size:8px}.haven-stage-hint{font-size:9px;width:max-content}.haven .haven-item{min-height:88px}.haven-item img{height:55px}}
@media(max-width:420px){.haven-items{grid-template-columns:repeat(4,minmax(0,1fr))}.haven-room-heading{padding:10px}.haven-stage{height:360px}.haven-theme-open img{width:52px}.haven .haven-selection{flex-wrap:wrap}.haven-selection-actions{margin-left:auto}.haven-room-foot{gap:6px}.haven-room-foot span:nth-child(2){flex-basis:65%}#haven-save-form{flex-wrap:wrap}#haven-save-form label{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){.haven button{transition:none}}
/* Compact, wrapping tools keep height and support controls reachable. */
.haven-selection-actions{flex-wrap:wrap;justify-content:flex-end;max-width:62%;flex-shrink:1}
.haven-selection-actions button{min-width:29px}
@media(max-width:1050px){.haven-selection-actions{max-width:65%}}
@media(max-width:740px){.haven-selection-actions{max-width:100%}.haven-selection-actions button span{display:inline}.haven-selection{flex-wrap:wrap}.haven-selection-actions{margin-left:auto}}
.haven .haven-object-mirror{position:absolute;z-index:3;display:flex;align-items:center;gap:6px;min-height:34px;padding:7px 10px;border-radius:10px;border-color:#e6c68999;background:#251b32ed;color:#fff0ce;box-shadow:0 5px 18px #0006;font-size:11px;white-space:nowrap;touch-action:manipulation;transition:background .15s,border-color .15s}
.haven .haven-object-mirror:hover:not(:disabled){transform:none;background:#49334fed;border-color:#ffe09c}
