:root{--bg:#050810;--panel:rgba(18,24,36,.76);--line:rgba(161,190,220,.18);--ink:#f4f7fb;--muted:#9ca9bb;--blue:#247bff;--blue2:#1648b8;--chrome:#dce8f4;--cyan:#8dc6ff}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{overflow-x:hidden}.liquid{position:fixed;z-index:-1;filter:blur(70px);border-radius:50%;opacity:.24;pointer-events:none}.liquid-a{width:48vw;height:48vw;top:-20vw;right:-12vw;background:#0d4cb8}.liquid-b{width:42vw;height:42vw;bottom:-18vw;left:-15vw;background:#112b67}.shell{width:min(1120px,100%);margin:auto;padding:28px 20px 22px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.eyebrow{letter-spacing:.22em;color:var(--cyan);font-size:.68rem;font-weight:700}.topbar h1{font-size:clamp(2.1rem,6vw,3.8rem);letter-spacing:.14em;line-height:1;margin:.3rem 0 0}.chrome-mark{font-size:2.2rem;color:#b8d5f4;text-shadow:0 0 24px #247bff}.modes{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-bottom:18px;padding-bottom:3px}.modes::-webkit-scrollbar{display:none}.mode{white-space:nowrap;flex:1;border:1px solid var(--line);background:rgba(255,255,255,.045);color:var(--muted);border-radius:12px;padding:12px 13px;font-weight:650;font-size:.87rem;cursor:pointer;transition:.18s}.mode:hover{border-color:#6c97c9}.mode.active{color:#fff;background:linear-gradient(135deg,var(--blue),var(--blue2));border-color:#6da9ff;box-shadow:0 8px 26px #0e49b850}.workspace{display:grid;grid-template-columns:minmax(280px,370px) minmax(0,1fr);gap:18px;align-items:start}.panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px;backdrop-filter:blur(18px);box-shadow:0 18px 50px #0005}.panel h2,.panel h3{margin:0 0 14px;font-size:1.02rem}.stack{display:grid;gap:14px}.field{display:grid;gap:7px}.field label{font-size:.82rem;color:var(--chrome);display:flex;justify-content:space-between;gap:12px}.field output{font-variant-numeric:tabular-nums;color:var(--cyan)}input[type=range]{width:100%;accent-color:#3989ff}select,.file-button{width:100%;background:#101827;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px;font:inherit}.file-button{display:inline-block;text-align:center;cursor:pointer;background:linear-gradient(135deg,#267dff,#163d9f);border-color:#75adff}.file-button input{display:none}.hint,.micro{color:var(--muted);font-size:.76rem;line-height:1.45}.preview-panel{min-width:0}.preview-wrap{background:#fff;border-radius:14px;min-height:360px;display:grid;place-items:center;position:relative;overflow:hidden}.preview-wrap canvas{max-width:100%;max-height:min(70vh,720px);width:auto;height:auto;display:block}.empty{color:#243447;text-align:center;padding:28px}.busy{position:absolute;inset:0;background:#fff9;display:grid;place-items:center;color:#17304b;font-weight:700}.busy[hidden]{display:none!important}.progress{height:5px;background:#162338;border-radius:4px;overflow:hidden}.progress i{display:block;height:100%;width:35%;background:linear-gradient(90deg,#2c7cff,#9cd1ff);animation:move 1.1s infinite}@keyframes move{to{transform:translateX(210%)}}.actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.actions button{flex:1;min-width:145px}.primary,.secondary,.danger{border-radius:11px;padding:11px 14px;font:inherit;font-weight:700;cursor:pointer}.primary{background:linear-gradient(135deg,var(--blue),var(--blue2));border:1px solid #75adff;color:#fff}.secondary{background:#ffffff0d;border:1px solid var(--line);color:var(--chrome)}.danger{background:#531c2a;border:1px solid #b95d77;color:#fff}.actions button:disabled{opacity:.4;cursor:not-allowed}.slots{display:grid;grid-template-columns:1fr 1fr;gap:9px}.slot{border:1px dashed #89a8c733;border-radius:12px;padding:10px;text-align:center;background:#ffffff08;color:var(--chrome);font-size:.8rem;cursor:pointer;min-height:88px;display:grid;place-items:center}.slot img{width:100%;height:62px;object-fit:cover;border-radius:7px}.slot input{display:none}.original{max-height:140px;width:100%;object-fit:contain;border-radius:10px;background:#fff}.legend{display:flex;justify-content:space-between;color:var(--muted);font-size:.76rem;margin-top:8px}footer{display:flex;justify-content:space-between;gap:10px;margin-top:16px;color:#718097;font-size:.72rem}@media(max-width:760px){.shell{padding:20px 13px}.workspace{grid-template-columns:1fr}.preview-wrap{min-height:290px}.modes{margin-inline:-2px}.mode{font-size:.78rem;padding:10px 9px}.panel{padding:15px}.topbar{margin-bottom:14px}}
.print-sheet{display:none}
.print-calibration{position:absolute;width:100mm;height:100mm;border:.25mm solid #000;box-sizing:border-box;pointer-events:none}
.calibration-circle{position:absolute;width:var(--cylinder-mm);height:var(--cylinder-mm);left:calc(50% - var(--cylinder-mm)/2);top:calc(50% - var(--cylinder-mm)/2);border:.25mm solid #000;border-radius:50%;box-sizing:border-box}
.calibration-toggle{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.76rem}
@media print{
  @page{margin:0}
  html,body{width:100%;height:100%;margin:0;background:white!important;color:#000}
  body>*:not(#print-sheet){display:none!important}
  .print-sheet{display:block!important;position:relative;overflow:hidden;background:#fff;margin:0;padding:0}
  .print-sheet img{display:block;position:absolute;max-width:none;margin:0;padding:0;border:0}
}

.conical-controls input[type=number]{width:100%;background:#101827;border:1px solid var(--line);border-radius:10px;padding:10px;color:var(--ink);font:inherit}

.conical-preview-panel .preview-wrap{background:#0d1420;padding:16px}
.conical-preview-panel canvas{box-shadow:0 2px 16px #0005;max-height:620px;width:min(100%,400px);height:auto}
.conical-preview-panel .empty{color:var(--muted)}

#conical-template-status[data-valid="false"]{color:#ffbc82}

.library-dialog{width:min(940px,calc(100% - 24px));max-height:90dvh;overflow:auto;background:#101827;color:var(--ink);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:0 24px 80px #0009}
.library-dialog::backdrop{background:#02050cbb;backdrop-filter:blur(7px)}
.library-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.library-heading h2{font-size:1rem;letter-spacing:.1em}
.library-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.library-filters [aria-pressed=true]{background:var(--blue2);border-color:var(--cyan)}
.library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}.library-card{min-width:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#ffffff08;color:var(--ink);padding:0;text-align:left;cursor:pointer;font:inherit}.library-card img{display:block;width:100%;height:160px;object-fit:contain;background:#080d16}.library-card span{display:block;padding:12px}.library-card:hover{border-color:var(--cyan)}
.library-preview{display:block;width:100%;height:min(48dvh,480px);object-fit:contain;margin-top:18px;background:#080d16;border-radius:12px}.library-detail h3{margin-bottom:0}.library-dialog [hidden]{display:none!important}.library-dialog button:disabled{opacity:.45;cursor:wait}.library-dialog button:focus-visible,#open-library:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
@media(max-width:480px){.library-dialog{padding:14px}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.library-card img{height:130px}#open-library{font-size:.72rem;padding:10px}.library-heading h2{font-size:.85rem}}

.library-toolbar{margin:18px 0}.library-toolbar .primary{width:100%}.library-upload .stack{margin-top:16px}.library-upload input,.library-auth input{width:100%;min-width:0;background:#101827;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:11px;font:inherit;font-size:16px}.library-upload input[readonly]{color:var(--muted)}.library-upload .field,.library-auth .field{font-size:.85rem;color:var(--chrome)}.library-upload .library-preview{height:min(30dvh,300px)}.library-delete{display:block;margin-top:18px;color:var(--muted);font-size:.72rem;font-weight:500}.library-auth{width:min(440px,calc(100% - 24px))}.library-auth h2{font-size:1.05rem}.library-toolbar[hidden],.library-upload[hidden]{display:none!important}

@media(hover:hover) and (pointer:fine){
  .library-dialog[data-dragover]{outline:3px dashed var(--cyan);outline-offset:-12px}
  .library-dialog[data-dragover]::after{content:'DÉPOSER L’IMAGE ICI';position:absolute;inset:18px;z-index:5;display:grid;place-items:center;background:#061020ed;border:2px dashed var(--cyan);border-radius:15px;color:var(--ink);font-size:clamp(1.15rem,3vw,2rem);font-weight:800;letter-spacing:.08em;pointer-events:none}
}

.library-category{display:flex;flex-wrap:wrap;align-items:end;gap:10px;margin:16px 0}.library-category .field{flex:1;min-width:0;font-size:.85rem;color:var(--chrome)}.library-category input{width:100%;min-width:0;background:#101827;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:11px;font:inherit;font-size:16px}.library-category input[readonly]{color:var(--muted)}
 .library-filters button{max-width:100%;overflow-wrap:anywhere}.library-detail [data-meta]{overflow-wrap:anywhere}

.printer-export{border-top:1px solid #d6d8dc;margin-top:20px;padding-top:16px;display:grid;gap:10px}
.printer-export h2{font-size:14px;letter-spacing:.06em;margin:0}
.printer-export .field{display:grid;gap:5px}
.printer-export input,.printer-export select{max-width:100%;box-sizing:border-box}
.printer-export input{width:100%;min-width:0;background:#101827;border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px;font:inherit;font-size:16px}
