:root{--bg:#eef2eb;--panel:#fbfcfa;--stage:#e2e8de;--ink:#1b231e;--muted:#5a675e;--line:#d2dacd;--accent:#2c6a46;--accent-soft:#dcebdf;--on-accent:#fff;--ok:#2c6a46;--warn:#9a6a00;--err:#b3261e;--info:#3d5f80;--font-display:"Bricolage Grotesque", "Avenir Next", "Segoe UI", system-ui, sans-serif;--font-body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#111612;--panel:#161d18;--stage:#1b241e;--ink:#e6ece4;--muted:#98a69c;--line:#2b362e;--accent:#7cc39a;--accent-soft:#1f3327;--on-accent:#0f1712;--ok:#7cc39a;--warn:#e0b54f;--err:#f08a80;--info:#8db6dd;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--font-body);flex-direction:column;margin:0;display:flex}button,input,select{font:inherit;color:inherit}h1,h2{font-family:var(--font-display);margin:0}h1{font-size:1.9rem;font-weight:800}h2{font-size:.78rem;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.hint{color:var(--muted);margin:0;font-size:.86rem}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.topbar{padding:10px max(16px, env(safe-area-inset-right,0px)) 10px max(16px, env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:24px;display:flex}.brand{align-items:baseline;gap:8px;display:flex}.brand strong{font:800 1.5rem var(--font-display);letter-spacing:-.01em}.brand small{font-family:var(--font-mono);color:var(--muted)}.nav{gap:4px;display:flex}.navBtn{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:6px 12px;font-weight:500}.navBtn[aria-current=page]{background:var(--accent-soft);color:var(--accent)}.printer{color:var(--muted);align-items:center;gap:8px;margin-left:auto;font-size:.86rem;display:flex}.printer .dot{background:var(--ok);border-radius:50%;width:8px;height:8px}main{flex:1;min-height:0;display:flex}.page{flex:1;min-height:0}.atelier{grid-template-columns:330px minmax(0,1fr) 310px;min-height:0;display:grid}.side{background:var(--panel);flex-direction:column;gap:18px;min-width:0;padding:14px 16px 28px;display:flex;overflow-y:auto}.side.left{border-right:1px solid var(--line)}.side.right{border-left:1px solid var(--line)}.block{gap:10px;display:grid}.models{grid-template-columns:1fr 1fr;gap:8px;display:grid}.modelBtn{text-align:left;border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:10px;gap:2px;padding:9px 10px;display:grid}.modelBtn b{font-weight:600}.modelBtn span{color:var(--muted);font-size:.78rem;line-height:1.3}.modelBtn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.seg{border:1px solid var(--line);background:var(--bg);border-radius:10px;display:flex;overflow:hidden}.seg button{cursor:pointer;background:0 0;border:0;flex:1;padding:8px 6px;font-weight:500}.seg button+button{border-left:1px solid var(--line)}.seg button[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.seg.small button{padding:6px;font-size:.86rem}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:999px;padding:4px 10px;font-size:.86rem}.chip[aria-pressed=true]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.slider{gap:4px;display:grid}.slider .row{justify-content:space-between;gap:8px;font-size:.9rem;display:flex}.slider output{font-family:var(--font-mono);color:var(--muted)}input[type=range]{width:100%;accent-color:var(--accent)}.field{gap:4px;font-size:.9rem;display:grid}.field input[type=text],.field input[type=number]{border:1px solid var(--line);background:var(--bg);border-radius:8px;width:100%;padding:7px 9px}.pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.toggle{cursor:pointer;align-items:center;gap:8px;font-size:.92rem;display:flex}.toggle input{accent-color:var(--accent);width:16px;height:16px}.swRow{gap:6px;display:grid}.swRow>span{font-size:.9rem}.swatches{flex-wrap:wrap;gap:6px;display:flex}.sw{border:2px solid var(--panel);outline:1px solid var(--line);cursor:pointer;border-radius:50%;width:26px;height:26px;padding:0}.sw[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px}.stage{background:var(--stage);touch-action:none;min-width:0;min-height:0;position:relative;overflow:hidden}.stage canvas{width:100%;height:100%;display:block}.stageHud{pointer-events:none;justify-content:space-between;gap:12px;display:flex;position:absolute;top:12px;left:14px;right:14px}.stageHud #hudModel{font:700 1.25rem var(--font-display)}.stageHud #hudDims{color:var(--muted)}.stageNote{color:var(--muted);pointer-events:none;font-size:.75rem;position:absolute;bottom:10px;left:14px}.busy{font:500 .8rem var(--font-mono);color:var(--accent);background:var(--panel);border-radius:6px;padding:3px 8px;position:absolute;top:48px;left:14px}.checks{gap:8px;margin:0;padding:0;list-style:none;display:grid}.checks li{grid-template-columns:20px minmax(0,1fr);gap:6px;font-size:.88rem;line-height:1.4;display:grid}.checks li:before{content:attr(data-icon);font:600 .78rem var(--font-mono);width:18px;height:18px;color:var(--panel);border-radius:50%;place-items:center;margin-top:1px;display:grid}.checks li.ok:before{background:var(--ok)}.checks li.warn:before{background:var(--warn)}.checks li.err:before{background:var(--err)}.checks li.info:before{background:var(--info)}.figures{grid-template-columns:max-content minmax(0,1fr);gap:5px 14px;margin:0;font-size:.9rem;display:grid}.figures dt{color:var(--muted)}.figures dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;margin:0}.figures dt{min-width:0}.exports{gap:8px;display:grid}.btn{border:1px solid var(--line);background:var(--bg);cursor:pointer;text-align:center;border-radius:10px;padding:9px 12px;font-weight:500}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.danger{color:var(--err)}.mespots{padding:24px max(16px, env(safe-area-inset-right,0px)) 40px max(16px, env(safe-area-inset-left,0px));overflow-y:auto}.pageHead{gap:6px;max-width:1100px;margin:0 auto 18px;display:grid}.cards{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));align-items:start;gap:14px;max-width:1100px;margin:0 auto;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;display:grid;overflow:hidden}.card img,.card .noThumb{aspect-ratio:4/3;object-fit:cover;background:var(--stage);width:100%;display:block}.card .body{gap:8px;padding:12px;display:grid}.card .meta{color:var(--muted);font-size:.82rem}.card .actions{flex-wrap:wrap;gap:6px;display:flex}.card .actions .btn{padding:5px 9px;font-size:.84rem}.empty{color:var(--muted);border:1px dashed var(--line);text-align:center;border-radius:12px;grid-column:1/-1;padding:28px}.toast{bottom:max(18px, env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);z-index:20;border-radius:10px;max-width:min(560px,100vw - 32px);padding:9px 16px;font-size:.9rem;position:fixed;left:50%;transform:translate(-50%)}@media (width<=1100px){.atelier{grid-template-columns:300px minmax(0,1fr)}.side.right{border-left:0;border-top:1px solid var(--line);grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));display:grid}.atelier{grid-template-rows:minmax(420px,1fr) auto;overflow-y:auto}}@media (width<=720px){body{height:auto}main{display:block}.atelier{flex-direction:column;display:flex}.stage{order:-1;height:62vh}.side{overflow:visible}.side.left{border-right:0}.printer{display:none}}.account{position:relative}.accountBtn{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:999px;padding:5px 12px;font-weight:500}.accountMenu{background:var(--panel);border:1px solid var(--line);z-index:30;border-radius:10px;min-width:220px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000001f}.accountMenu button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 10px}.accountMenu button:hover{background:var(--accent-soft)}.banner{background:var(--accent-soft);color:var(--ink);padding:6px max(16px, env(safe-area-inset-left,0px));border-bottom:1px solid var(--line);font-size:.86rem}.overlay{background:color-mix(in srgb, var(--bg) 88%, transparent);z-index:40;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.loginBox{background:var(--panel);border:1px solid var(--line);border-radius:14px;gap:14px;width:min(380px,100%);padding:24px;display:grid;box-shadow:0 18px 48px #00000024}.loginBox h1{font-size:2.2rem}.formError{color:var(--err);margin:0;font-size:.88rem}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar .seg{width:auto}.chipStatus{font:500 .74rem var(--font-mono);background:var(--accent-soft);color:var(--accent);border-radius:6px;padding:2px 8px;display:inline-block}.chipStatus[data-s=Brouillon]{background:var(--bg);color:var(--muted);border:1px solid var(--line)}.chipStatus[data-s=À\ imprimer]{background:color-mix(in srgb, var(--warn) 18%, transparent);color:var(--warn)}.chipStatus[data-s=Imprimé]{background:color-mix(in srgb, var(--info) 18%, transparent);color:var(--info)}.details{border-top:1px solid var(--line);gap:8px;padding-top:10px;display:grid}.details textarea,.details select,.field select{border:1px solid var(--line);background:var(--bg);width:100%;font:inherit;color:inherit;border-radius:8px;padding:7px 9px}.details textarea{resize:vertical;min-height:70px}.versions{gap:4px;max-height:180px;margin:0;padding:0;font-size:.84rem;list-style:none;display:grid;overflow-y:auto}.versions li{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.versions button{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.admin{padding:24px max(16px, env(safe-area-inset-right,0px)) 40px max(16px, env(safe-area-inset-left,0px));overflow-y:auto}.adminGrid{grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));align-items:start;gap:18px;max-width:1100px;margin:0 auto;display:grid}.box{background:var(--panel);border:1px solid var(--line);border-radius:12px;gap:12px;min-width:0;padding:18px;display:grid}.box h3{font:600 1rem var(--font-body);margin:6px 0 0}.lead{margin:0;font-size:1.05rem}.updateForm,.newUser{gap:10px;display:grid}.log{background:var(--stage);max-height:220px;font:.78rem/1.45 var(--font-mono);white-space:pre-wrap;border-radius:8px;margin:0;padding:10px;overflow:auto}.status p{margin:0 0 6px;font-weight:500}.list{gap:6px;margin:0;padding:0;font-size:.88rem;list-style:none;display:grid}.list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:6px 0;display:flex}.list li:last-child{border-bottom:0}.list .btn{padding:4px 9px;font-size:.82rem}.tblWrap{overflow-x:auto}table.users{border-collapse:collapse;width:100%;min-width:520px;font-size:.86rem}table.users th,table.users td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:7px 6px}table.users th{font:500 .72rem var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}table.users select{border:1px solid var(--line);background:var(--bg);border-radius:6px;padding:3px 6px}table.users .btn{white-space:nowrap;padding:4px 8px;font-size:.8rem}.secret{background:color-mix(in srgb, var(--warn) 14%, transparent);border-radius:8px;margin:0;padding:10px 12px;font-size:.9rem}.secret code{font-family:var(--font-mono);-webkit-user-select:all;user-select:all;font-size:1rem}.fratrie{border-top:1px dashed var(--line);gap:8px;padding-top:10px;display:grid}.slots{flex-wrap:wrap;gap:6px;display:flex}.slot{border:1px solid var(--line);background:var(--bg);cursor:pointer;font:500 .82rem var(--font-mono);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 4px;display:inline-flex}.slot .sw{width:18px;height:18px;cursor:inherit}.slot[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.chip:disabled{opacity:1;cursor:default;outline:2px solid var(--accent);outline-offset:-2px}.figures .calib{text-align:left;font-family:var(--font-body);color:var(--muted);margin-top:4px;font-size:.8rem}.prints{gap:8px;margin:0;padding:0;list-style:none;display:grid}.print{grid-template-columns:56px minmax(0,1fr) auto;align-items:start;gap:8px;font-size:.84rem;display:grid}.print img,.print .noPhoto{object-fit:cover;background:var(--stage);border-radius:8px;width:56px;height:56px;display:block}.print .note{color:var(--muted)}.linkBtn{color:var(--err);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-size:.8rem;text-decoration:underline}.addPrint summary{cursor:pointer;color:var(--accent);font-size:.9rem;font-weight:500}.printForm{gap:8px;margin-top:8px;display:grid}.printForm input,.printForm select,.printForm textarea{border:1px solid var(--line);background:var(--bg);width:100%;font:inherit;color:inherit;border-radius:8px;padding:6px 8px}
