#plan-upload-panel {
  position: fixed; left: calc(var(--sb-w, 220px)); top: 56px; right: 0; bottom: 0;
  width: auto; overflow: hidden;
  background: rgba(11,20,16,.97); z-index: 199;
  transition: opacity .28s ease, transform .28s cubic-bezier(.4,0,.2,1);
  display: none; flex-direction: column;
  backdrop-filter: blur(24px);
  opacity: 0; transform: translateX(-12px);
}
#plan-upload-panel.open { display: flex; opacity: 1; transform: translateX(0); }
body.sb-icon-only #plan-upload-panel { left: 68px; }

#plan-upload-panel .pup-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 20px 14px; border-bottom: 1px solid rgba(44,221,127,.15); flex-shrink: 0;
}
#plan-upload-panel .pup-title {
  font-size: .9rem; font-weight: 700; color: #ecf3f0;
  letter-spacing: .5px; display: flex; align-items: center; gap: 8px;
}
#plan-upload-panel .pup-close {
  background: rgba(255,77,109,.1); border: 1px solid rgba(255,77,109,.35);
  color: #ff4d6d; font-size: .8rem; font-weight: 600;
  cursor: pointer; padding: 6px 14px; border-radius: 8px;
  transition: all .2s; white-space: nowrap;
}
#plan-upload-panel .pup-close:hover { background: rgba(255,77,109,.22); box-shadow: 0 0 12px rgba(255,77,109,.3); }
#plan-upload-panel .pup-body {
  flex: 1; overflow-y: auto; padding: 18px 20px;
  scrollbar-width: thin; scrollbar-color: rgba(44,221,127,.2) transparent;
}
#plan-upload-panel #drop-zone-clone {
  border: 2px dashed rgba(44,221,127,.4); border-radius: 16px;
  padding: 28px 20px; text-align: center; cursor: pointer;
  background: rgba(44,221,127,.03); transition: border-color .2s, background .2s;
  margin-bottom: 14px;
}
#plan-upload-panel #drop-zone-clone:hover,
#plan-upload-panel #drop-zone-clone.drag-over { border-color: #2cdd7f; background: rgba(44,221,127,.07); }
#plan-upload-panel #drop-zone-clone .drop-icon { font-size: 2.2rem; margin-bottom: 8px; }
#plan-upload-panel #drop-zone-clone .drop-title {
  font-size: .88rem; font-weight: 700; color: #ecf3f0; margin: 0 0 4px;
}
#plan-upload-panel #drop-zone-clone .drop-sub {
  font-size: .72rem; color: rgba(255,255,255,.45); margin: 0 0 10px;
}
#plan-upload-panel #drop-zone-clone .badge-row { display: flex; justify-content: center; gap: 6px; }

#pup-context-section { margin-bottom: 14px; }
.pup-section-title {
  font-size: .75rem; font-weight: 700; color: rgba(44,221,127,.8); letter-spacing: .5px; margin-bottom: 12px;
}
.pup-field-group { margin-bottom: 12px; }
.pup-field-label {
  display: block; font-size: .65rem; font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase; color: rgba(44,221,127,.55); margin-bottom: 6px;
}
.pup-tabs { display: flex; gap: 4px; margin-bottom: 7px; }
.pup-tab {
  padding: 4px 12px; font-size: .7rem; font-weight: 600;
  border: 1px solid rgba(44,221,127,.2); border-radius: 6px;
  background: transparent; color: rgba(44,221,127,.55); cursor: pointer; transition: all .15s;
}
.pup-tab.active { background: rgba(44,221,127,.15); border-color: rgba(44,221,127,.45); color: #2cdd7f; }
.pup-select {
  width: 100%; padding: 8px 28px 8px 10px; box-sizing: border-box;
  background: rgba(44,221,127,.06); border: 1px solid rgba(44,221,127,.2);
  border-radius: 8px; color: #ecf3f0; font-size: .8rem;
  outline: none; cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%232cdd7f' d='M5 7L1 3h8z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 8px center; transition: border-color .15s;
}
.pup-select:focus, .pup-select:hover { border-color: rgba(44,221,127,.45); }
.pup-select:disabled { opacity: .4; cursor: not-allowed; }
.pup-select option { background: #0a130f; color: #ecf3f0; }
.pup-select option:hover, .pup-select option:checked { background: #1a2a23; color: #2cdd7f; }
.pup-input {
  width: 100%; padding: 8px 10px; box-sizing: border-box;
  background: rgba(44,221,127,.06); border: 1px solid rgba(44,221,127,.2);
  border-radius: 8px; color: #ecf3f0; font-size: .8rem; outline: none; transition: border-color .15s;
}
.pup-input:focus { border-color: rgba(44,221,127,.45); }
.pup-divider { height: 1px; background: rgba(44,221,127,.12); margin: 14px 0 16px; }
#plan-upload-panel .pup-generate {
  width: 100%; padding: 13px; border: none; border-radius: 12px;
  background: linear-gradient(135deg, #2cdd7f, #77e9d6);
  color: #0a130f; font-weight: 800; font-size: .85rem;
  cursor: pointer; letter-spacing: .5px; margin-top: 10px;
  transition: opacity .2s, transform .1s;
}
#plan-upload-panel .pup-generate:disabled { opacity: .35; cursor: not-allowed; }
#plan-upload-panel .pup-generate:not(:disabled):hover { opacity: .9; transform: translateY(-1px); }
#pup-file-name { font-size: .72rem; color: rgba(44,221,127,.75); margin: 6px 0 2px; text-align: center; }

/* Drop zone & upload card */
#drop-zone {
  padding: 2.5rem 1.5rem; text-align: center; cursor: pointer;
  transition: border-color .2s, background .2s;
  border: 2px dashed var(--border); border-radius: var(--radius);
  background: var(--surface); position: relative; outline: none;
}
#drop-zone:hover, #drop-zone.drag-over { border-color: var(--accent); background: rgba(111,232,167,.05); }
#drop-zone.drag-over { box-shadow: 0 0 0 3px rgba(111,232,167,.2); }
.drop-icon { font-size: 3rem; line-height: 1; margin-bottom: .75rem; filter: drop-shadow(0 0 12px rgba(111,232,167,.4)); }
.drop-title { font-size: 1.05rem; font-weight: 600; color: var(--text); }
.drop-sub { font-size: .82rem; color: var(--muted); margin-top: .35rem; }
#file-input { display: none; }
.badge-row { display: flex; justify-content: center; gap: .5rem; margin-top: 1rem; }
.badge { font-size: .7rem; font-weight: 600; padding: .2rem .55rem; border-radius: 20px; letter-spacing: .5px; text-transform: uppercase; }
.badge-pdf { background: rgba(248,81,73,.18); color: #f85149; border: 1px solid rgba(248,81,73,.3); }
.badge-dxf { background: rgba(111,232,167,.18); color: #6fe8a7; border: 1px solid rgba(111,232,167,.3); }
.badge-usd { background: rgba(126,234,216,.18); color: #7eead8; border: 1px solid rgba(126,234,216,.3); }

#file-info {
  display: none; align-items: center; gap: .75rem;
  padding: .85rem 1.1rem; background: rgba(111,232,167,.07);
  border: 1px solid rgba(111,232,167,.25); border-radius: 8px;
}
#file-info.visible { display: flex; }
.file-type-icon { width: 36px; height: 36px; border-radius: 8px; display: grid; place-items: center; font-size: .75rem; font-weight: 700; flex-shrink: 0; }
.icon-pdf { background: rgba(248,81,73,.2); color: #f85149; }
.icon-dxf { background: rgba(111,232,167,.2); color: #6fe8a7; }
.file-meta { flex: 1; min-width: 0; }
#file-name { font-size: .9rem; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
#file-size { font-size: .76rem; color: var(--muted); margin-top: .15rem; }
#clear-btn { background: none; border: none; cursor: pointer; color: var(--muted); font-size: 1.1rem; padding: .2rem; transition: color .15s; }
#clear-btn:hover { color: var(--warn); }

#submit-btn {
  width: 100%; padding: .85rem 1.5rem;
  background: linear-gradient(135deg, var(--accent), #7eead8);
  border: none; border-radius: var(--radius); color: #fff; font-size: 1rem; font-weight: 700;
  letter-spacing: .3px; cursor: pointer; transition: opacity .2s, transform .1s;
  box-shadow: 0 4px 20px rgba(111,232,167,.3);
}
#submit-btn:hover:not(:disabled) { opacity: .88; }
#submit-btn:active:not(:disabled) { transform: scale(.98); }
#submit-btn:disabled { opacity: .4; cursor: not-allowed; }
#submit-btn {
  background: linear-gradient(135deg, #2cdd7f, #77e9d6) !important;
  border: none !important; color: #0a130f !important; font-weight: 700 !important;
  border-radius: 10px !important; box-shadow: 0 0 25px rgba(44,221,127,.4) !important; letter-spacing: .5px !important;
}
#submit-btn:hover { box-shadow: 0 0 40px rgba(44,221,127,.6) !important; transform: translateY(-1px); }

#progress-wrap { display: none; flex-direction: column; gap: .6rem; }
#progress-wrap.visible { display: flex; }
.progress-header { display: flex; justify-content: space-between; font-size: .82rem; color: var(--muted); }
.progress-track { height: 6px; background: var(--border); border-radius: 99px; overflow: hidden; }
#progress-bar { height: 100%; width: 0%; background: linear-gradient(90deg, var(--accent), #7eead8); border-radius: 99px; transition: width .3s ease; }
.progress-track.indeterminate #progress-bar { width: 35%; animation: slide 1.2s linear infinite; }
@keyframes slide { 0% { margin-left: -35%; } 100% { margin-left: 100%; } }

#result-card { display: none; padding: 1.25rem 1.25rem 1.1rem; border-radius: var(--radius); border: 1px solid; gap: 1rem; flex-direction: column; }
#result-card.visible { display: flex; }
#result-card.success { background: rgba(63,185,80,.06); border-color: rgba(63,185,80,.3); }
#result-card.error { background: rgba(248,81,73,.06); border-color: rgba(248,81,73,.3); }
.result-header { display: flex; align-items: center; gap: .65rem; font-size: .95rem; font-weight: 700; }
.result-icon { font-size: 1.3rem; }
.result-body { font-size: .85rem; color: var(--muted); line-height: 1.55; }
.btn-row { display: flex; gap: .75rem; flex-wrap: wrap; }

#download-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .65rem 1.25rem; background: var(--accent2); color: #0d1713;
  font-weight: 700; font-size: .9rem; border-radius: 8px; text-decoration: none;
  transition: opacity .2s; width: fit-content;
}
#download-btn:hover { opacity: .85; }
#preview-btn {
  display: inline-flex; align-items: center; gap: .5rem;
  padding: .65rem 1.25rem; background: var(--accent); color: #0d1713;
  font-weight: 700; font-size: .9rem; border-radius: 8px; border: none;
  cursor: pointer; transition: opacity .2s; width: fit-content;
}
#preview-btn:hover { opacity: .85; }

#recent-panel { margin-top: 1.25rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); overflow: hidden; }
#recent-panel-header {
  padding: .65rem .9rem; font-size: .85rem; font-weight: 600; color: var(--text);
  border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center;
}
#recent-panel-header .count { font-size: .72rem; color: var(--muted); font-weight: 400; }
#recent-list { max-height: 260px; overflow-y: auto; }
.recent-item {
  display: flex; flex-direction: column; gap: .15rem; padding: .55rem .9rem;
  border-bottom: 1px solid var(--border); cursor: pointer; transition: background .15s;
}
.recent-item:hover { background: rgba(111,232,167,.08); }
.recent-item:last-child { border-bottom: none; }
.recent-name { font-size: .82rem; color: var(--text); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.recent-meta { font-size: .7rem; color: var(--muted); display: flex; gap: .65rem; }
.recent-empty { padding: 1rem; text-align: center; font-size: .78rem; color: var(--muted); }

/* recent-panel futuristic override */
#recent-panel { background: var(--glass) !important; border: 1px solid var(--glass-border) !important; border-radius: 14px !important; backdrop-filter: blur(20px) !important; }
#recent-panel-header { border-bottom: 1px solid var(--glass-border) !important; color: var(--accent) !important; }
.recent-item { border: 1px solid rgba(44,221,127,.08) !important; border-radius: 10px !important; background: rgba(44,221,127,.04) !important; transition: all .2s !important; }
.recent-item:hover { border-color: rgba(44,221,127,.25) !important; background: rgba(44,221,127,.08) !important; }

/* Branch/Floor picker modal */
.bfp-card{background:rgba(11,20,16,.98);border:1px solid rgba(44,221,127,.22);border-radius:20px;padding:28px 30px;width:100%;max-width:460px;box-shadow:0 24px 70px rgba(0,0,0,.75);animation:bfIn .2s ease}
@keyframes bfIn{from{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:none}}
.bfp-label{font-size:.65rem;font-weight:800;letter-spacing:1.2px;text-transform:uppercase;color:rgba(44,221,127,.6);margin-bottom:6px;display:block}
.bfp-toggle{display:flex;gap:6px;margin-bottom:8px}
.bfp-toggle-btn{flex:1;padding:8px 6px;font-size:.75rem;font-weight:700;border-radius:8px;cursor:pointer;transition:all .15s;border:1px solid rgba(44,221,127,.2);background:rgba(44,221,127,.04);color:rgba(44,221,127,.5)}
.bfp-toggle-btn.active{background:rgba(44,221,127,.15);border-color:rgba(44,221,127,.5);color:#2cdd7f}
.bfp-select{display:none}
.bfp-cs{position:relative;width:100%}
.bfp-cs-btn{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;background:rgba(44,221,127,.06);border:1px solid rgba(44,221,127,.22);color:#ecf3f0;border-radius:10px;padding:10px 14px;font-size:.82rem;cursor:pointer;user-select:none;transition:border-color .15s;gap:8px}
.bfp-cs-btn:hover:not(.disabled){border-color:rgba(44,221,127,.45)}
.bfp-cs-btn.open{border-color:#2cdd7f}
.bfp-cs-btn.disabled{opacity:.38;cursor:not-allowed;pointer-events:none}
.bfp-cs-btn span:first-child{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bfp-cs-arrow{color:rgba(44,221,127,.6);font-size:.65rem;transition:transform .15s;flex-shrink:0}
.bfp-cs-btn.open .bfp-cs-arrow{transform:rotate(180deg)}
.bfp-cs-drop{display:none;position:absolute;top:calc(100% + 5px);left:0;right:0;z-index:9999;background:#192922;border:1px solid rgba(44,221,127,.3);border-radius:10px;max-height:200px;overflow-y:auto;box-shadow:0 10px 40px rgba(0,0,0,.8)}
.bfp-cs-drop.open{display:block}
.bfp-cs-opt{padding:10px 14px;font-size:.82rem;color:#cee2d8;cursor:pointer}
.bfp-cs-opt:hover{background:rgba(44,221,127,.12);color:#ecf3f0}
.bfp-cs-opt.active{background:rgba(44,221,127,.18);color:#2cdd7f}
.bfp-cs-opt.ph{color:rgba(206,226,216,.35);cursor:default;pointer-events:none}
.bfp-input{width:100%;box-sizing:border-box;background:rgba(44,221,127,.06);border:1px solid rgba(44,221,127,.3);color:#ecf3f0;border-radius:10px;padding:10px 14px;font-size:.82rem;outline:none}
.bfp-input:focus{border-color:#2cdd7f;background:rgba(44,221,127,.1)}
.bfp-input::placeholder{color:rgba(255,255,255,.25)}
.bfp-row2{display:flex;gap:8px;margin-top:8px}
.bfp-row2 .bfp-input{flex:1}
.bfp-hint{font-size:.68rem;color:rgba(255,255,255,.35);margin-top:5px;padding-left:2px}
.bfp-warn{font-size:.7rem;color:rgba(255,180,0,.85);margin-top:6px;padding:6px 10px;background:rgba(255,180,0,.08);border-radius:6px;border:1px solid rgba(255,180,0,.2)}
.bfp-section{margin-bottom:18px}
.bfp-divider{height:1px;background:rgba(44,221,127,.1);margin:18px 0}
