:root{--bg:#0c0f14;--bg-raise:#121722;--line:#233047;--ink:#e8edf6;--ink-dim:#8d99ad;--blueprint:#4f8dff;--blueprint-soft:rgba(79,141,255,0.14);--cut:#ff5a3c;--ok:#3ddc97;--glass:rgba(18,23,34,0.72);--radius:14px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:Archivo,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.grid-bg{min-height:100vh;background-image:linear-gradient(rgba(79,141,255,.05) 1px,transparent 0),linear-gradient(90deg,rgba(79,141,255,.05) 1px,transparent 0),linear-gradient(rgba(79,141,255,.09) 1px,transparent 0),linear-gradient(90deg,rgba(79,141,255,.09) 1px,transparent 0);background-size:24px 24px,24px 24px,120px 120px,120px 120px}.wrap{max-width:880px;margin:0 auto;padding:48px 24px 96px}.eyebrow{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--blueprint)}h1.title{font-size:clamp(30px,5vw,44px);font-weight:700;letter-spacing:-.02em;margin:10px 0 8px}p.lead{color:var(--ink-dim);max-width:60ch;line-height:1.6;margin:0 0 36px}.panel{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.dropzone{padding:40px 24px;text-align:center;border:1.5px dashed var(--line);border-radius:var(--radius);cursor:pointer;transition:border-color .2s,background .2s}.dropzone.over,.dropzone:hover{border-color:var(--blueprint);background:var(--blueprint-soft)}.dropzone .big{font-size:17px;font-weight:600}.dropzone .small{color:var(--ink-dim);font-size:13px;margin-top:6px;font-family:IBM Plex Mono,ui-monospace,monospace}.files{margin-top:28px;display:flex;flex-direction:column;gap:10px}.file-row{display:flex;align-items:center;gap:14px;padding:14px 18px}.file-ext{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;font-weight:500;color:var(--blueprint);border:1px solid var(--blueprint);border-radius:6px;padding:3px 7px;min-width:42px;text-align:center}.file-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.file-meta{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;color:var(--ink-dim)}.btn{font-family:Archivo,sans-serif;font-size:14px;font-weight:600;border:none;border-radius:10px;padding:9px 16px;cursor:pointer;background:var(--blueprint);color:#fff;text-decoration:none;display:inline-block;transition:filter .15s}.btn:hover{filter:brightness(1.12)}.btn.ghost{background:transparent;color:var(--ink-dim);border:1px solid var(--line)}.btn.ghost:hover{color:var(--cut);border-color:var(--cut);filter:none}.progress{margin-top:16px;height:4px;border-radius:2px;background:var(--line);overflow:hidden;display:none}.progress.active{display:block}.progress>div{height:100%;background:var(--blueprint);width:0;transition:width .2s}.empty{text-align:center;padding:36px 0;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:13px}.empty,.hint{color:var(--ink-dim)}.hint{margin-top:36px;padding:18px 20px;font-size:13.5px;line-height:1.65}.hint b{color:var(--ink)}.viewer-root{position:fixed;inset:0;overflow:hidden;background:#0c0f14}.viewer-root canvas{display:block}.viewer-root.measuring canvas{cursor:crosshair}.hud-top{position:absolute;top:14px;left:14px;right:14px;display:flex;align-items:center;gap:10px;pointer-events:none}.hud-top>*{pointer-events:auto}.hud-title{padding:9px 14px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:10px;max-width:46vw;overflow:hidden}.hud-title span.name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-spacer{flex:1 1}.toolbar{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:8px;padding:8px;align-items:center}.tool-btn{font-family:Archivo,sans-serif;font-size:13px;font-weight:600;background:transparent;color:var(--ink);border:1px solid transparent;border-radius:9px;padding:8px 13px;cursor:pointer;white-space:nowrap}.tool-btn:hover{background:rgba(255,255,255,.06)}.tool-btn.primary{background:var(--blueprint)}.tool-btn.primary:hover{filter:brightness(1.12)}.tool-btn.active{border-color:var(--blueprint);color:var(--blueprint)}.tool-sep{width:1px;height:22px;background:var(--line)}.clip-slider{display:flex;align-items:center;gap:8px;padding:0 6px}.clip-slider input{accent-color:var(--blueprint);width:130px}.popup{position:absolute;width:320px;max-height:56vh;overflow-y:auto;padding:16px 18px;z-index:30}.ai-card h3,.popup h3{margin:0 0 2px;font-size:15px}.ai-card .ptype,.popup .ptype{color:var(--cut);letter-spacing:.08em}.ai-card .ptype,.popup .gid,.popup .ptype{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px}.popup .gid{color:var(--ink-dim);word-break:break-all;margin-top:4px}.popup .pset{margin-top:14px}.popup .pset-name{font-size:12px;font-weight:600;color:var(--blueprint);border-bottom:1px solid var(--line);padding-bottom:4px;margin-bottom:6px}.popup table{width:100%;border-collapse:collapse}.popup td{font-size:12px;padding:3px 0;vertical-align:top;font-family:IBM Plex Mono,ui-monospace,monospace}.popup td.k{color:var(--ink-dim);width:46%;padding-right:8px}.popup td.v{color:var(--ink);word-break:break-word}.ai-card .close,.popup .close{position:absolute;top:10px;right:12px;background:none;border:none;color:var(--ink-dim);font-size:16px;cursor:pointer}.ai-card .close:hover,.popup .close:hover{color:var(--cut)}.ai-card .row-actions,.popup .row-actions{margin-top:14px;display:flex;gap:8px}.ai-card{position:absolute;top:64px;right:14px;width:320px;max-height:50vh;overflow-y:auto;padding:16px 18px;z-index:25}.ai-card p{margin:10px 0 0;font-size:13px;line-height:1.5;color:var(--ink);white-space:pre-wrap}.tree-panel{position:absolute;left:14px;top:64px;bottom:84px;width:308px;z-index:25;display:flex;flex-direction:column;padding:12px 0 6px}.tp-head{display:flex;align-items:center;padding:0 14px 8px}.tp-title{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--blueprint);flex:1 1}.tp-close{background:none;border:none;color:var(--ink-dim);cursor:pointer;font-size:14px}.tp-close:hover{color:var(--cut)}.tp-search{margin:0 12px 6px;padding:8px 10px;background:rgba(12,15,20,.6);color:var(--ink);border:1px solid var(--line);border-radius:9px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;outline:none}.tp-search:focus{border-color:var(--blueprint)}.tp-results{padding:0 14px 6px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;color:var(--blueprint)}.tp-results.dim{color:var(--ink-dim)}.tp-section{border-top:1px solid var(--line)}.tp-sec-head{width:100%;text-align:left;background:none;border:none;cursor:pointer;display:flex;align-items:center;gap:6px;padding:9px 14px;color:var(--ink);font-family:Archivo,sans-serif;font-size:12.5px;font-weight:600}.tp-sec-head:hover{color:var(--blueprint)}.tp-cats{max-height:32vh;overflow-y:auto;padding:0 8px 10px}.tp-cat{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:7px;cursor:pointer;font-size:12.5px}.tp-cat:hover{background:rgba(255,255,255,.05)}.tp-cat input{accent-color:var(--blueprint);margin:0}.tp-cat.trans{border-bottom:1px dashed var(--line);margin-bottom:4px;padding-bottom:8px}.tp-tree{flex:1 1;overflow-y:auto;border-top:1px solid var(--line);padding:6px 6px 10px}.tn-row{display:flex;align-items:center;gap:5px;padding:3.5px 6px 3.5px 0;border-radius:7px;cursor:pointer;font-size:12.5px;line-height:1.25;user-select:none;-webkit-user-select:none}.tn-row:hover{background:rgba(255,255,255,.05)}.tn-row.node .tn-label{font-weight:600}.tn-row.cls .tn-label{color:var(--blueprint);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px}.tn-row.leaf .tn-label{color:var(--ink-dim)}.tn-row.leaf:hover .tn-label{color:var(--ink)}.tn-row.sel{background:var(--blueprint-soft);outline:1px solid var(--blueprint)}.tn-row.sel .tn-label{color:var(--ink)}.tn-row.off .tn-label{opacity:.4;text-decoration:line-through}.tn-caret{width:13px;color:var(--ink-dim);font-size:10px;flex:none;text-align:center}.tn-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tn-count{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px}.tn-act,.tn-count{color:var(--ink-dim);flex:none}.tn-act{background:none;border:none;cursor:pointer;padding:2px 3px;border-radius:5px;font-size:12px;display:none;align-items:center}.tn-row:hover .tn-act{display:inline-flex}.tn-act:hover{color:var(--blueprint)}.tn-more{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;color:var(--ink-dim);padding:3px 6px}.btn.ghost.on{color:var(--blueprint);border-color:var(--blueprint)}@media (max-width:760px){.tree-panel{width:min(86vw,308px);top:58px;bottom:78px}}.loading-veil{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(12,15,20,.85);z-index:50}.loading-veil .spin{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--blueprint);animation:spin .9s linear infinite}.loading-veil .msg{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:13px;color:var(--ink-dim)}@keyframes spin{to{transform:rotate(1turn)}}.toast{position:absolute;top:64px;left:50%;transform:translateX(-50%);padding:10px 16px;font-size:13px;z-index:60;border-left:3px solid var(--cut)}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (max-width:640px){.popup{width:calc(100vw - 28px);left:14px!important;right:14px}.ai-card{left:14px;right:14px;width:auto;top:auto;bottom:84px;max-height:32vh}.toolbar{max-width:calc(100vw - 16px);overflow-x:auto}}.pnrr-logos{--pnrr-h:40px;gap:calc(var(--pnrr-h) * 1.5)}.pnrr-logos,.pnrr-mark{display:flex;align-items:center}.pnrr-mark{gap:calc(var(--pnrr-h) * .2);flex:none}.pnrr-eu-flag{height:var(--pnrr-h);outline:calc(var(--pnrr-h) / 25) solid #fff}.pnrr-eu-flag,.pnrr-gov{width:auto;display:block}.pnrr-gov{height:calc(var(--pnrr-h) * 1.1);flex:none}.pnrr-symbol{height:var(--pnrr-h);width:auto;display:block}.pnrr-eu-label,.pnrr-label{display:flex;flex-direction:column;white-space:nowrap;line-height:1.15;color:#fff}.pnrr-eu-label{font-family:Arial,Helvetica,sans-serif;font-size:calc(var(--pnrr-h) * .275)}.pnrr-eu-label span{color:var(--ink-dim)}.pnrr-label{font-family:Carlito,Calibri,sans-serif;font-weight:700;font-size:calc(var(--pnrr-h) * .325);border-left:1px solid rgba(255,255,255,.5);padding-left:calc(var(--pnrr-h) * .2)}.pnrr-head{max-width:880px;margin:0 auto;padding:24px 24px 0}.pnrr-head .pnrr-logos{justify-content:space-between}.pnrr-slogan{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 14px}.pnrr-slogan a{color:var(--blueprint);text-decoration:none}.pnrr-slogan a:hover{text-decoration:underline}.pnrr-disclaimer{margin:4px 0 0;opacity:.75}.pnrr-footer{max-width:880px;margin:0 auto;padding:20px 24px 32px;border-top:1px solid var(--line);display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;font-size:12.5px;color:var(--ink-dim)}.pnrr-footer .pnrr-disclaimer{margin:0}.pnrr-beneficiary{height:28px;width:auto}.pnrr-logos.hud{--pnrr-h:38px;padding:7px 14px}.viewer-root .ai-card{top:80px}.pnrr-viewer-foot{position:absolute;left:0;right:0;bottom:0;z-index:20;padding:6px 14px 8px;text-align:center;font-size:11px;line-height:1.4;color:var(--ink-dim);background:linear-gradient(transparent,rgba(12,15,20,.9) 40%);pointer-events:none}.pnrr-viewer-foot .pnrr-disclaimer{margin:0}.pnrr-viewer-foot a{pointer-events:auto}.viewer-root .toolbar{bottom:calc(var(--pnrr-foot, 0px) + 6px)}.viewer-root .tree-panel{bottom:calc(var(--pnrr-foot, 0px) + 72px)}@media (max-width:760px){.hud-top{flex-wrap:wrap}.pnrr-logos.hud{--pnrr-h:24px;order:-1;flex-basis:100%;justify-content:space-between;gap:6px;padding:6px 10px}.viewer-root .ai-card,.viewer-root .toast,.viewer-root .tree-panel{top:114px}}@media (max-width:640px){.pnrr-head .pnrr-logos{--pnrr-h:28px;gap:6px}.pnrr-head{padding:16px 14px 0}.viewer-root .ai-card{top:auto;bottom:calc(var(--pnrr-foot, 0px) + 72px)}}