@charset "UTF-8";
/* BIMSEEK clean light theme v1.7 - overlay only, no DOM/JS changes.
   ASCII only on purpose: the server sends text/css without a charset,
   so non-ASCII comments were mis-decoded and truncated the stylesheet. */
:root{
  --bs-bg:#f3f5f8;
  --bs-surface:#ffffff;
  --bs-surface-2:#fafbfc;
  --bs-border:#e4e8ee;
  --bs-border-2:#d5dbe4;
  --bs-text:#18212e;
  --bs-text-2:#5b6676;
  --bs-text-3:#8b95a5;
  --bs-primary:#003565;          
  --bs-primary-h:#00284d;
  --bs-accent:#1266c9;
  --bs-primary-soft:#eaf0f6;
  --bs-danger:#c0392b;
  --bs-sidebar:#0e2438;
  --bs-sidebar-hover:#17334c;
  --bs-r:8px;
  --bs-r-lg:12px;
  --bs-s1:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.05);
  --bs-s2:0 4px 14px rgba(16,24,40,.08);
  color-scheme: light;   
  --bs-font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,
            "PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
}

html{color-scheme:light}
html,body,#app{background:var(--bs-bg);color:var(--bs-text)}
body,#app,.view,.el-container,.el-main{
  font-family:var(--bs-font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
#app>.el-container.is-vertical{min-height:100vh}

#app>.el-container>.el-header{
  height:60px!important;line-height:normal!important;padding:0 20px!important;
  background:#fff!important;border-bottom:1px solid var(--bs-border);
  box-shadow:0 1px 2px rgba(16,24,40,.04);position:relative;z-index:1200;
}
#app>.el-container>.el-header>.el-row{display:flex!important;align-items:center;flex-wrap:nowrap;height:60px;margin:0!important}
#app>.el-container>.el-header>.el-row::before,
#app>.el-container>.el-header>.el-row::after{display:none!important}
#app>.el-container>.el-header>.el-row>.el-col{float:none!important;width:auto!important;padding:0!important;flex:0 0 auto;min-width:0}
#app>.el-container>.el-header>.el-row>.el-col:nth-child(1){margin-right:8px}
#app>.el-container>.el-header>.el-row>.el-col:nth-child(2){margin-right:auto}
#app>.el-container>.el-header>.el-row>.el-col:nth-child(3){margin-right:16px;flex:0 1 auto;min-width:0;overflow:hidden}
#app>.el-container>.el-header>.el-row>.el-col:nth-child(4){flex:0 0 auto}
#app>.el-container>.el-header .el-row .el-row{display:flex!important;align-items:center;flex-wrap:nowrap;margin:0!important;min-width:0}
#app>.el-container>.el-header .el-row .el-row::before,
#app>.el-container>.el-header .el-row .el-row::after{display:none!important}
#app>.el-container>.el-header .el-row .el-row>.el-col{float:none!important;width:auto!important;padding:0!important;margin:0!important;flex:0 1 auto;min-width:0}

#app>.el-container>.el-header .text-4{display:flex!important;align-items:center;gap:10px;height:60px;width:auto!important;overflow:visible!important;margin:0}
#app>.el-container>.el-header .text-4 img{height:30px!important;width:auto!important;margin-top:0!important;flex:0 0 auto}
#app>.el-container>.el-header .text-4 span{color:#cfd6e0;font-weight:400;white-space:nowrap;font-size:15px}

#app>.el-container>.el-header .btnss,
#app>.el-container>.el-header .btns{margin:0 2px}
#app>.el-container>.el-header .btnss p,
#app>.el-container>.el-header .btns p{
  display:flex;align-items:center;gap:7px;margin:0;padding:7px 11px;border-radius:var(--bs-r);
  white-space:nowrap;font-size:13.5px;font-weight:500;color:var(--bs-text-2);cursor:pointer;
  transition:background .15s,color .15s;
}
#app>.el-container>.el-header .btnss p:hover,
#app>.el-container>.el-header .btns p:hover{background:var(--bs-primary-soft);color:var(--bs-primary)}
#app>.el-container>.el-header .indexIcon{font-size:16px;color:var(--bs-text-3)}
#app>.el-container>.el-header .btnss p:hover .indexIcon,
#app>.el-container>.el-header .btns p:hover .indexIcon{color:var(--bs-primary)}

#app>.el-container>.el-header .font-sz16{font-size:12px!important;color:var(--bs-text-3);font-weight:500;margin-right:6px;white-space:nowrap}
#app>.el-container>.el-header .el-select{width:140px!important;min-width:96px}
#app>.el-container>.el-header .el-select .el-input__inner{
  height:32px!important;line-height:32px!important;background:var(--bs-surface-2);
  border:1px solid var(--bs-border);border-radius:var(--bs-r);color:var(--bs-text);font-size:13px;
}
#app>.el-container>.el-header .el-select .el-input__inner:hover{border-color:var(--bs-border-2)}
#app>.el-container>.el-header .el-select .el-input__suffix{line-height:32px}
#app>.el-container>.el-header .el-row .el-row>.el-col+.el-col{margin-left:14px!important}

#app>.el-container>.el-header .dis-flex{display:flex!important;align-items:center;gap:7px;margin-left:16px!important;min-width:0}
#app>.el-container>.el-header .img-two{width:20px;height:20px;border-radius:50%;object-fit:cover;flex:0 0 auto}
#app>.el-container>.el-header .box-one{font-size:12.5px;color:var(--bs-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}

#app>.el-container>.el-header>.el-row>.el-col:nth-child(4) .el-row>.el-col{margin-left:8px!important}
#app>.el-container>.el-header .el-button--small{
  height:30px;padding:0 10px!important;border-radius:var(--bs-r);border:1px solid var(--bs-border);
  background:#fff;color:var(--bs-text-2);font-size:12.5px;box-shadow:none!important;
}
#app>.el-container>.el-header .el-button--small:hover{border-color:var(--bs-primary);color:var(--bs-primary);background:var(--bs-primary-soft)}
#app>.el-container>.el-header .el-dropdown-selfdefine img{width:30px;height:30px;border-radius:50%;object-fit:cover;display:block;border:1px solid var(--bs-border)}
#app>.el-container>.el-header .box-two{margin-left:8px!important}
#app>.el-container>.el-header .box-two .el-tooltip{font-size:13.5px;font-weight:600;color:var(--bs-text);white-space:nowrap}

.el-container .el-container .el-header{
  height:auto!important;line-height:normal!important;padding:12px 16px!important;
  background:transparent!important;border-bottom:1px solid var(--bs-border)!important;box-shadow:none!important;
}
.el-container .el-container .el-header>.el-row{display:block!important;height:auto!important}
.el-container .el-container .el-header .el-button--small{height:32px;padding:0 12px!important}

.el-menu-vertical-demo{background:var(--bs-sidebar)!important;border-right:none!important;padding:6px 0}
.el-menu-vertical-demo .el-menu-item{
  background:transparent!important;height:42px!important;line-height:42px!important;
  margin:2px 8px;border-radius:var(--bs-r);color:rgba(255,255,255,.72)!important;
  font-size:13px!important;padding-left:12px!important;padding-right:10px!important;
  transition:background .15s,color .15s;
}
.el-menu-vertical-demo .el-menu-item i{color:rgba(255,255,255,.6)!important;font-size:16px;margin-right:9px;width:16px}
.el-menu-vertical-demo .el-menu-item:hover{background:var(--bs-sidebar-hover)!important;color:#fff!important}
.el-menu-vertical-demo .el-menu-item:hover i{color:#fff!important}
.el-menu-vertical-demo .el-menu-item.is-active{background:rgba(255,255,255,.13)!important;color:#fff!important;font-weight:600}
.el-menu-vertical-demo .el-menu-item.is-active i{color:#fff!important}
.el-menu-vertical-demo .el-menu-item span,
.el-menu-vertical-demo .el-menu-item div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.el-menu-vertical-demo:not(.el-menu--collapse){width:210px!important}
.el-menu--collapse.el-menu-vertical-demo .el-menu-item{padding-left:0!important;padding-right:0!important;text-align:center}
.el-menu--collapse.el-menu-vertical-demo .el-menu-item i{margin-right:0}

.enterpriseIndex{padding:18px 18px 24px!important;background:transparent}
.flexLR{display:flex!important;align-items:flex-start!important;gap:18px}
.flexLR>div:first-child{flex:1 1 auto;min-width:0}
.flexLR>div:nth-child(2){display:flex;align-items:center;align-self:center!important;flex:0 0 auto}
.flexLR>div:last-child{flex:0 0 360px;max-width:360px}

.enterpriseIndex>.flexLR>div>.el-card.box-card{
  background:#fff;border:1px solid var(--bs-border);border-radius:var(--bs-r-lg);
  box-shadow:var(--bs-s1)!important;overflow:hidden;
}
.flexLR>div:first-child>.el-card{min-height:calc(100vh - 116px)}
.enterpriseIndex .el-card.box-card>.el-card__header{padding:13px 18px;border-bottom:1px solid var(--bs-border);background:#fff}
.enterpriseIndex .el-card.box-card>.el-card__body{padding:18px}
.enterpriseIndex .font-sz18{font-size:15px!important;font-weight:600;color:var(--bs-text);letter-spacing:-.01em}

.enterpriseIndex .el-card__header .el-row{display:flex!important;align-items:center;gap:10px;margin:0!important}
.enterpriseIndex .el-card__header .el-row::before,.enterpriseIndex .el-card__header .el-row::after{display:none!important}
.enterpriseIndex .el-card__header .el-col{float:none!important;width:auto!important;padding:0!important;margin:0!important;flex:0 0 auto}
.enterpriseIndex .el-card__header>div>.el-row>.el-col:nth-child(2){margin-left:auto!important}
.enterpriseIndex .el-card__header .el-col-offset-6,
.enterpriseIndex .el-card__header .el-col-offset-2{margin-left:0!important}

.enterpriseIndex .height710{
  display:grid!important;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:18px;height:auto!important;min-height:0;margin:0!important;
}
.enterpriseIndex .height710::before,.enterpriseIndex .height710::after{display:none!important}
.enterpriseIndex .height710>div{min-width:0;display:block}
.enterpriseIndex .height710 .pos-rel.el-col{width:100%!important;padding:0!important;float:none!important;height:auto!important}
.enterpriseIndex .height710 .el-card{
  background:#fff!important;border:1px solid var(--bs-border)!important;border-radius:var(--bs-r-lg)!important;
  box-shadow:none!important;overflow:hidden;height:auto!important;cursor:pointer;
  transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease;
}
.enterpriseIndex .height710 .el-card:hover{box-shadow:var(--bs-s2)!important;transform:translateY(-2px);border-color:#c8d4e2!important}
.enterpriseIndex .height710 .el-card__body{padding:0!important;width:100%!important;height:auto!important;background:#fff!important}
.enterpriseIndex .height710 img.image{
  width:100%!important;height:auto!important;aspect-ratio:16/10!important;
  object-fit:cover!important;object-position:center;display:block;
  background:#eef1f5;border-bottom:1px solid var(--bs-border);
}
.enterpriseIndex .enterpriseIndexIcon{padding:11px 13px 13px!important;height:auto!important;width:auto!important;background:#fff}
.enterpriseIndex .enterpriseIndexIcon span{
  display:block!important;color:var(--bs-text)!important;font-size:13.5px;font-weight:600;line-height:1.35;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.enterpriseIndex .enterpriseIndexIcon p{
  color:var(--bs-text-3)!important;font-size:12px!important;margin:4px 0 0!important;font-variant-numeric:tabular-nums;
}
.enterpriseIndex .enterpriseIndexIcon .gl{
  top:10px!important;left:auto!important;right:10px!important;bottom:auto!important;
  background:rgba(0,25,48,.72)!important;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  border-radius:999px!important;padding:3px 10px!important;height:auto!important;width:auto!important;
  font-size:11px!important;font-style:normal;font-weight:500;line-height:1.4;
  opacity:0;transition:opacity .18s ease;
}
.enterpriseIndex .height710 .el-card:hover .gl{opacity:1}

.flexLR>div:last-child>.el-card{display:flex;flex-direction:column;height:calc(100vh - 116px);position:sticky;top:78px}
.flexLR>div:last-child .el-card__body{
  height:auto!important;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden!important;padding:8px!important;
}
.flexLR>div:last-child .el-card__body>div{overflow-x:hidden!important;max-width:100%}
.flexLR>div:last-child .el-card__body>div>p{margin:0!important;height:auto!important}
.flexLR>div:last-child .el-button--text{
  display:block!important;width:100%;max-width:100%;padding:7px 10px!important;border-radius:6px;
  color:var(--bs-text-2)!important;text-align:left;overflow:hidden;
}
.flexLR>div:last-child .el-button--text:hover{background:var(--bs-primary-soft);color:var(--bs-primary)!important}
.flexLR>div:last-child .el-button--text>span{
  display:block!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:12.5px;line-height:1.5;max-width:100%;
}
.flexLR>div:last-child .el-button--text img{width:15px;height:15px;vertical-align:-3px;margin-right:7px}

.userprojectindex{padding:16px!important;background:transparent}
.userprojectindex>.el-row{margin-left:-8px!important;margin-right:-8px!important}
.userprojectindex>.el-row>.el-col{padding:0 8px!important}
.userprojectindex .el-card.box-card{
  border-radius:var(--bs-r-lg);border:1px solid var(--bs-border);box-shadow:var(--bs-s1)!important;
  background:#fff;margin:0 0 16px!important;height:auto!important;
}
.userprojectindex .el-card__body{padding:20px 22px!important;height:auto!important;overflow:visible!important}

.userprojectindex .el-card__body>div:first-child{
  line-height:1.4!important;margin:0 0 16px!important;padding-bottom:12px;border-bottom:1px solid var(--bs-border);
}
.userprojectindex .el-card__body>div:first-child>span{
  font-size:15px!important;font-weight:600!important;color:var(--bs-text)!important;
  border-bottom:none!important;display:inline-block;letter-spacing:-.01em;
}

.userprojectindex>.el-row .el-col-16>.el-card:first-child .el-card__body>div:nth-child(2)>.el-row{
  display:flex!important;flex-wrap:wrap;gap:20px;align-items:flex-start;margin:0!important;
}
.userprojectindex .textP img{
  width:100%!important;height:auto!important;aspect-ratio:4/3!important;object-fit:cover!important;
  border-radius:var(--bs-r-lg);display:block;background:#eef1f5;margin:0!important;
}
.userprojectindex .textP.el-col-8{flex:1 1 190px!important;max-width:250px!important;width:auto!important;padding:0!important;float:none!important}
.userprojectindex .textP.el-col-16{flex:4 1 250px!important;width:auto!important;padding:0!important;float:none!important;min-width:0}
.userprojectindex .textP.el-col-16>.el-row{display:block!important;margin:0!important}
.userprojectindex .textP.el-col-16>.el-row>.el-col-24{width:100%!important;float:none!important;padding:0!important;margin:0 0 4px!important;display:block}
.userprojectindex .textP.el-col-16 .el-col-24>.el-row{
  display:grid!important;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));
  gap:16px 20px;margin:0 0 16px!important;
}
.userprojectindex .textP.el-col-16 .el-col-24>.el-row::before,
.userprojectindex .textP.el-col-16 .el-col-24>.el-row::after{display:none!important}
.userprojectindex .textP.el-col-16 .el-col-6{
  width:auto!important;float:none!important;padding:0!important;margin:0!important;
  display:flex;flex-direction:column;gap:16px;min-width:0;
}
.userprojectindex .textP .MarginB20{margin-bottom:0!important}
.userprojectindex .textP p[class^="p"]{
  font-size:11.5px!important;font-weight:500!important;color:var(--bs-text-3)!important;
  white-space:normal!important;overflow:visible!important;text-overflow:clip!important;
  width:auto!important;height:auto!important;line-height:1.4!important;letter-spacing:.02em;
  background-size:14px 14px!important;background-position:0 1px!important;
  padding-left:20px!important;margin:0 0 5px!important;
}
.userprojectindex .textP p:not([class]){
  font-size:13.5px!important;font-weight:600!important;color:var(--bs-text)!important;
  line-height:1.45!important;white-space:normal!important;overflow:visible!important;
  text-overflow:clip!important;width:auto!important;height:auto!important;margin:0!important;word-break:break-word;
}
.userprojectindex>.el-row>.el-col-16>.el-card:not(:first-child){min-height:300px}

.resizable-container>.left-panel,.resizable-container>.right-panel{
  background:#fff;border:1px solid var(--bs-border);border-radius:var(--bs-r-lg);box-shadow:var(--bs-s1);overflow:hidden;
}
.resizable-container .el-tree{background:transparent;padding:8px}
.resizable-container .el-tree-node__content{height:34px;border-radius:6px;font-size:13px}
.resizable-container .el-tree-node__content:hover{background:var(--bs-primary-soft)}
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{
  background:var(--bs-primary-soft);color:var(--bs-primary);font-weight:600;
}

.el-button{border-radius:var(--bs-r);font-weight:500;transition:all .15s ease;box-shadow:none}
.el-button--primary{background:var(--bs-primary);border-color:var(--bs-primary)}
.el-button--primary:hover,.el-button--primary:focus{background:var(--bs-primary-h);border-color:var(--bs-primary-h)}
.el-button--default{border-color:var(--bs-border-2);color:var(--bs-text-2);background:#fff}
.el-button--default:hover,.el-button--default:focus{border-color:var(--bs-primary);color:var(--bs-primary);background:var(--bs-primary-soft)}
.el-button--danger{background:var(--bs-danger);border-color:var(--bs-danger)}
.el-button--text{color:var(--bs-accent)}
.el-button-group>.el-button:first-child{border-top-left-radius:var(--bs-r);border-bottom-left-radius:var(--bs-r)}
.el-button-group>.el-button:last-child{border-top-right-radius:var(--bs-r);border-bottom-right-radius:var(--bs-r)}

.el-input__inner,.el-textarea__inner{border-radius:var(--bs-r);border-color:var(--bs-border-2);color:var(--bs-text);transition:border-color .15s,box-shadow .15s}
.el-input__inner:hover,.el-textarea__inner:hover{border-color:#b9c3d0}
.el-input__inner:focus,.el-textarea__inner:focus{border-color:var(--bs-accent);box-shadow:0 0 0 3px rgba(18,102,201,.12)}
.el-input.is-disabled .el-input__inner{background:#f5f7fa;color:var(--bs-text-3)}
.el-select .el-input.is-focus .el-input__inner{border-color:var(--bs-accent)}
.el-select-dropdown,.el-dropdown-menu,.el-picker-panel,.el-cascader__dropdown{
  border-radius:var(--bs-r)!important;border:1px solid var(--bs-border)!important;
  box-shadow:0 8px 24px rgba(16,24,40,.10)!important;
}
.el-select-dropdown__item.selected{color:var(--bs-primary);font-weight:600}
.el-select-dropdown__item.hover,.el-select-dropdown__item:hover,
.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background:var(--bs-primary-soft);color:var(--bs-primary)}

.el-card{border-radius:var(--bs-r-lg);border:1px solid var(--bs-border);box-shadow:var(--bs-s1)}
.el-card__header{border-bottom:1px solid var(--bs-border);padding:14px 18px;font-weight:600;color:var(--bs-text)}

.el-table{color:var(--bs-text);font-size:13px;border-color:var(--bs-border)}
.el-table th.el-table__cell{background:#f7f9fb!important;color:var(--bs-text-2);font-weight:600;font-size:12.5px}
.el-table td.el-table__cell,.el-table th.el-table__cell{border-bottom:1px solid var(--bs-border);padding:9px 0}
.el-table--border th.el-table__cell,.el-table--border td.el-table__cell{border-right:1px solid var(--bs-border)}
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background:var(--bs-primary-soft)}
.el-table::before,.el-table--group::after,.el-table--border::after{background-color:var(--bs-border)}

.el-tabs__header{margin-bottom:16px}
.el-tabs__nav-wrap::after{background-color:var(--bs-border);height:1px}
.el-tabs__item{color:var(--bs-text-2);font-weight:500;font-size:13.5px}
.el-tabs__item.is-active{color:var(--bs-primary);font-weight:600}
.el-tabs__item:hover{color:var(--bs-primary)}
.el-tabs__active-bar{background-color:var(--bs-primary);height:2px;border-radius:2px}

.el-dialog{border-radius:var(--bs-r-lg);box-shadow:0 20px 48px rgba(16,24,40,.18);overflow:hidden}
.el-dialog__header{padding:18px 22px;border-bottom:1px solid var(--bs-border)}
.el-dialog__title{font-size:15.5px;font-weight:600;color:var(--bs-text)}
.el-dialog__body{padding:22px;color:var(--bs-text-2)}
.el-dialog__footer{padding:14px 22px;border-top:1px solid var(--bs-border);background:var(--bs-surface-2)}
.el-drawer__header{margin-bottom:0;padding:18px 22px;border-bottom:1px solid var(--bs-border);color:var(--bs-text);font-weight:600}
.el-message,.el-notification{border-radius:var(--bs-r);box-shadow:0 8px 24px rgba(16,24,40,.12)}
.el-message-box{border-radius:var(--bs-r-lg)}

.el-menu:not(.el-menu-vertical-demo){border-right-color:var(--bs-border)}
.el-menu:not(.el-menu-vertical-demo) .el-menu-item,
.el-menu:not(.el-menu-vertical-demo) .el-submenu__title{font-size:13.5px;color:var(--bs-text-2)}
.el-menu:not(.el-menu-vertical-demo) .el-menu-item.is-active{color:var(--bs-primary);font-weight:600;background:var(--bs-primary-soft)}
.el-menu:not(.el-menu-vertical-demo) .el-menu-item:hover,
.el-menu:not(.el-menu-vertical-demo) .el-submenu__title:hover{background:var(--bs-primary-soft)}
.el-pagination button,.el-pager li{border-radius:6px;font-weight:500}
.el-pager li.active{background:var(--bs-primary);color:#fff}
.el-tag{border-radius:6px;font-weight:500;border-color:transparent}
.el-breadcrumb__inner,.el-breadcrumb__inner a{color:var(--bs-text-2);font-weight:500}
.el-breadcrumb__item:last-child .el-breadcrumb__inner{color:var(--bs-text)}

.el-card__body::-webkit-scrollbar,.el-scrollbar__wrap::-webkit-scrollbar,
.el-table__body-wrapper::-webkit-scrollbar,.view::-webkit-scrollbar{width:8px;height:8px}
.el-card__body::-webkit-scrollbar-thumb,.el-scrollbar__wrap::-webkit-scrollbar-thumb,
.el-table__body-wrapper::-webkit-scrollbar-thumb,.view::-webkit-scrollbar-thumb{
  background:#cbd3dd;border-radius:8px;border:2px solid transparent;background-clip:padding-box;
}
.el-card__body::-webkit-scrollbar-thumb:hover,.el-scrollbar__wrap::-webkit-scrollbar-thumb:hover{background:#aeb9c7;background-clip:padding-box;border:2px solid transparent}

.login-main{background:radial-gradient(1200px 700px at 50% -10%,#eef3f9 0%,#f3f5f8 45%,#eceff4 100%)}
.login-main>#canvas.canvas{display:none!important}
.login-main>img.canvas{object-fit:cover}
.login-bg{position:absolute!important;top:0!important;left:0;right:0;bottom:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}
.register-bj{
  width:940px!important;max-width:calc(100vw - 48px);height:520px!important;margin:0!important;
  border-radius:16px!important;overflow:hidden;background:#fff!important;
  box-shadow:0 24px 60px rgba(16,24,40,.14),0 2px 8px rgba(16,24,40,.06)!important;display:flex!important;
}
.register-bj .register-left{
  width:54%!important;height:100%!important;float:none!important;border-radius:0!important;
  background:#fff!important;border-right:1px solid var(--bs-border);
  display:flex;align-items:center;justify-content:center;
}
.register-bj .register-left .el-carousel,
.register-bj .register-left .el-carousel__container{width:100%;height:100%!important}
.register-bj .el-carousel__item{background-color:transparent!important;display:flex;align-items:center;justify-content:center}
.register-bj .el-carousel__item:nth-child(2n),
.register-bj .el-carousel__item:nth-child(odd){background-color:transparent!important}
.register-bj .el-carousel__item>*{background:transparent!important}
.register-bj .register-left img{width:100%!important;height:100%!important;object-fit:contain!important;padding:36px;box-sizing:border-box}
.register-bj .el-carousel__indicators--outside{position:absolute;bottom:14px;left:0;right:0;margin:0;text-align:center}
.register-bj .el-carousel__indicators--outside button{background:#b8c4d2;opacity:.6;height:3px;width:16px;border-radius:2px}
.register-bj .el-carousel__indicators--outside .is-active button{background:var(--bs-primary);opacity:1}
.register-bj .register-right{width:46%!important;height:100%!important;float:none!important;position:relative}
.register-bj .register-right .register-right-content{width:78%!important;height:auto!important}
.register-bj .register-right-content h3{
  top:0!important;margin:0 0 32px!important;color:var(--bs-text)!important;
  font-size:23px!important;font-weight:650!important;letter-spacing:-.02em;text-align:left!important;
}
.register-bj .accounts{display:block!important;position:relative;margin:0 0 18px!important;top:0!important;height:auto!important}
.register-bj .accounts::before{display:none!important}
.register-bj .accounts .accounts-icon{
  position:absolute;left:14px;top:22px;transform:translateY(-50%);margin:0!important;z-index:3;
  width:17px!important;height:17px!important;opacity:.5;pointer-events:none;
}
.register-bj .demo-ruleForm,.register-bj .el-form{width:100%!important;height:auto!important}
.register-bj .el-form-item{margin-bottom:0!important}
.register-bj .el-form-item__content{margin:0!important;line-height:normal}
.register-bj .el-input__inner{
  position:static!important;left:auto!important;top:auto!important;width:100%!important;
  height:44px!important;line-height:44px!important;background:#fff!important;
  border:1px solid var(--bs-border-2)!important;border-radius:10px!important;
  padding:0 40px 0 42px!important;font-size:14px;color:var(--bs-text);
}
.register-bj .el-input__inner:focus{border-color:var(--bs-accent)!important;box-shadow:0 0 0 3px rgba(18,102,201,.12)!important}
.register-bj .el-input__suffix{top:0!important;right:10px!important;line-height:44px;height:44px}
.register-bj .el-form-item__error{position:static!important;left:auto!important;top:auto!important;padding-top:6px;font-size:12px}
.register-bj .register-right-content button{
  margin-top:10px!important;width:100%!important;height:46px;border-radius:10px!important;
  background:var(--bs-primary)!important;border-color:var(--bs-primary)!important;
  font-size:14.5px;font-weight:600;box-shadow:none!important;padding:0!important;
}
.register-bj .register-right-content button:hover{background:var(--bs-primary-h)!important;border-color:var(--bs-primary-h)!important}
.register-bj .el-tag{
  right:20px!important;top:20px!important;background:#fff!important;border:1px solid var(--bs-border-2)!important;
  color:var(--bs-text-2)!important;border-radius:999px!important;font-size:12px;height:26px;line-height:24px;padding:0 12px;
}
.register-bj .el-tag:hover{border-color:var(--bs-primary)!important;color:var(--bs-primary)!important}
.record{margin-top:26px!important;position:static!important}
.record a{color:var(--bs-text-3)!important;font-size:12px;text-decoration:none}
.record a:hover{color:var(--bs-text-2)!important}
.record p{margin:0 0 4px}

.adsk-viewing-viewer,.adsk-viewing-viewer *,
#viewer,#viewer *,
.layui-layer,.layui-layer *,
.cke,.cke *{border-radius:revert}

.bs-empty-cap{
  text-align:center;font-size:13px;color:var(--bs-text-3);
  margin:10px 0 0;letter-spacing:.01em;line-height:1.4;
}
.userprojectindex img[src*="img/empty."]{display:block}

.enterpriseIndex .enterpriseIndexIcon{
  background:#fff!important;background-image:none!important;color:var(--bs-text)!important;
}
.enterpriseIndex .enterpriseIndexIcon span{color:var(--bs-text)!important}
.enterpriseIndex .enterpriseIndexIcon p{color:var(--bs-text-3)!important}

.el-button.jb{
  background-image:none!important;background-color:var(--bs-primary)!important;
  border-color:var(--bs-primary)!important;color:#fff!important;
}
.el-button.jb:hover{background-color:var(--bs-primary-h)!important;border-color:var(--bs-primary-h)!important}

#MyViewerDiv,#modelShow,#viewer3d{background:#111820!important}
html.bs-viewer,
html.bs-viewer body,
html.bs-viewer #app,
html.bs-viewer .view,
html.bs-viewer .home{background:#111820!important}
html.bs-viewer #app>.el-container>.el-header{background:#111820!important;border-bottom-color:rgba(255,255,255,.08)}

#MyViewerDiv,#modelShow,#viewer3d,
.adsk-viewing-viewer,
.adsk-viewing-viewer.light-theme,
.adsk-viewing-viewer .canvas-wrap,
.adsk-viewing-viewer canvas,
html.bs-viewer .home>div,
html.bs-viewer iframe{background:#111820!important}

#bs-pdfname{padding-left:20px!important;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 22px),transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 12px,#000 calc(100% - 22px),transparent 100%);position:fixed;height:56px;line-height:56px;z-index:2147483647;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;font:400 14px/56px "Segoe UI",Roboto,system-ui,-apple-system,Arial,sans-serif}

#app>.el-container>.el-header .btnss,
#app>.el-container>.el-header .btns{display:flex!important;align-items:center;height:60px!important;margin:0 2px!important}
#app>.el-container>.el-header .el-row .el-row>.el-col{height:60px;display:flex;align-items:center}
.right-panel p>button.el-button.el-icon-s-home{font-size:14px!important;color:var(--bs-accent)!important;padding:0!important}
.right-panel p>button.el-button.el-icon-s-home::before{content:"Home/"!important;
font-family:var(--bs-font)!important;font-size:14px!important;font-weight:500!important}
.resizable-container>.resizer{width:5px!important;background:transparent!important}
.resizable-container>.resizer .resizer-handle{width:1px!important;height:100%!important;
background:var(--bs-border)!important;margin:0 auto!important;transition:background .15s,width .15s}
.resizable-container>.resizer:hover .resizer-handle{background:var(--bs-accent)!important;width:2px!important}
.resizable-container>.left-panel{min-width:0!important;box-sizing:border-box!important;padding-right:0!important;flex-shrink:0!important}
.resizable-container>.right-panel{min-width:0!important}
.left-panel .el-tree{overflow:auto!important}
.left-panel .el-tree-node{min-width:max-content}
.left-panel .el-tree-node__content{overflow:visible!important}
.left-panel .el-tree-node__content>span{overflow:visible!important;text-overflow:clip!important;white-space:nowrap}

/* Forge clears its own WebGL buffer, so the canvas is white until the viewer
   API has been called. Keep it transparent until then - the black container
   behind it is what the user sees, so opening a DWG never flashes white. */
html.bs-viewer #MyViewerDiv canvas,
html.bs-viewer .adsk-viewing-viewer canvas{opacity:0}
html.bs-viewer.bs-painted #MyViewerDiv canvas,
html.bs-viewer.bs-painted .adsk-viewing-viewer canvas{opacity:1;transition:opacity .12s linear}

/* ---- photo / video gallery on the file viewer page ---- */
.bs-gal{position:absolute;inset:0;display:flex;flex-direction:column;background:#111820;z-index:5}
.bs-gal-bar{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:10px 200px 10px 18px;color:#e6ebf2;
  font:500 14px/1.4 "Segoe UI",Roboto,system-ui,-apple-system,"PingFang SC","Microsoft YaHei",Arial,sans-serif}
.bs-gal-name{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-gal-count{flex:0 0 auto;color:#94a3b4;font-variant-numeric:tabular-nums}
.bs-gal-box{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:0 60px}
.bs-gal-media{max-width:100%;max-height:100%;object-fit:contain;display:block}
video.bs-gal-media{width:auto;height:auto}
.bs-gal-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:76px;border:0;
  border-radius:8px;background:rgba(255,255,255,.08);color:#e6ebf2;font-size:22px;line-height:1;
  cursor:pointer;transition:background .15s,opacity .15s;z-index:2}
.bs-gal-nav:hover{background:rgba(255,255,255,.18)}
.bs-gal-nav:disabled{opacity:.18;cursor:default}
.bs-gal-prev{left:10px}
.bs-gal-next{right:10px}
/* leave the app's own icon bar in the bottom-right corner clear */
.bs-gal-strip{flex:0 0 auto;display:flex;gap:8px;padding:10px 12px 12px;overflow-x:auto;overflow-y:hidden;
  background:rgba(0,0,0,.25);scrollbar-width:thin}
.bs-gal-strip::-webkit-scrollbar{height:8px}
.bs-gal-strip::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:4px}
.bs-gal-tile{flex:0 0 auto;width:88px;height:62px;border-radius:5px;cursor:pointer;
  background:#1b2735 center/cover no-repeat;border:2px solid transparent;opacity:.65;
  transition:opacity .15s,border-color .15s}
.bs-gal-tile:hover{opacity:1}
.bs-gal-tile.on{opacity:1;border-color:#3f9dff}
.bs-gal-tile.bs-gal-vid{background-color:#243244}
.bs-gal-tile.bs-gal-vid::after{content:"\25B6";display:flex;width:100%;height:100%;align-items:center;
  justify-content:center;color:#8ea3bd;font-size:18px}
.bs-gal-tile.bs-gal-bad{background-color:#2a2323}
.bs-gal-tile::before{content:attr(data-n);position:absolute;inset:0;display:flex;align-items:center;
  justify-content:center;color:#6b7d94;font:500 12px/1 system-ui,Arial,sans-serif}
.bs-gal-tile[style*="background-image"]::before{content:none}
.bs-gal-tile{position:relative}
/* lift the app's own icon bar out of the thumbnail strip while browsing */
.home.bs-gal-on .file_icon_container{top:6px!important;bottom:auto!important;right:14px!important;left:auto!important}

/* ---- drawing comment panels ------------------------------------------------
   These float over the black CAD canvas. The app builds them from light-theme
   Element UI, so before this the panel was a black box with #606266 labels and
   pure-white inputs punched through it. Give them a real dark surface.       */
:root{
  --bs-p-bg:#161e29; --bs-p-head:#1d2735; --bs-p-line:#2b3644;
  --bs-p-text:#e3eaf3; --bs-p-dim:#94a3b6; --bs-p-field:#0e141c;
  --bs-p-fieldline:#2d3946; --bs-p-focus:#3f9dff;
}
html.bs-viewer .dialog,
html.bs-viewer .home>.dialog{
  background:var(--bs-p-bg)!important;color:var(--bs-p-text)!important;
  border:1px solid var(--bs-p-line)!important;border-radius:10px!important;
  box-shadow:0 18px 48px rgba(0,0,0,.55)!important;overflow:hidden}
html.bs-viewer .dialog .dialog-header{
  background:var(--bs-p-head)!important;color:var(--bs-p-text)!important;
  border-bottom:1px solid var(--bs-p-line)!important;
  font-weight:600!important;letter-spacing:.2px}
html.bs-viewer .dialog .dialog-header button,
html.bs-viewer .dialog .dialog-header span{color:var(--bs-p-dim)!important}
html.bs-viewer .dialog .dialog-header button:hover{color:var(--bs-p-text)!important}
html.bs-viewer .dialog .dialog-content{background:var(--bs-p-bg)!important;color:var(--bs-p-text)!important}
html.bs-viewer .dialog .dialog-content>div,
html.bs-viewer .dialog .dialog-content>div>div{background:transparent!important}

/* labels: stacked and left-aligned instead of a right-aligned 90px column */
html.bs-viewer .dialog .el-form-item__label{
  float:none!important;display:block!important;width:auto!important;
  text-align:left!important;color:var(--bs-p-dim)!important;
  font-size:12px!important;font-weight:600!important;letter-spacing:.3px;
  line-height:1.4!important;padding:0 0 6px 0!important}
html.bs-viewer .dialog .el-form-item__content{margin-left:0!important;line-height:1.5!important}
html.bs-viewer .dialog .el-form-item{margin-bottom:16px!important}
html.bs-viewer .dialog .el-form-item__error{color:#ff8a80!important}

/* fields */
html.bs-viewer .dialog .el-input__inner,
html.bs-viewer .dialog .el-textarea__inner,
html.bs-viewer .dialog .el-input-number__decrease,
html.bs-viewer .dialog .el-input-number__increase{
  background:var(--bs-p-field)!important;color:var(--bs-p-text)!important;
  border-color:var(--bs-p-fieldline)!important;border-radius:6px!important}
html.bs-viewer .dialog .el-input__inner::placeholder,
html.bs-viewer .dialog .el-textarea__inner::placeholder{color:#5d6b7f!important}
html.bs-viewer .dialog .el-input__inner:hover,
html.bs-viewer .dialog .el-textarea__inner:hover{border-color:#3a4859!important}
html.bs-viewer .dialog .el-input__inner:focus,
html.bs-viewer .dialog .el-textarea__inner:focus{border-color:var(--bs-p-focus)!important}
html.bs-viewer .dialog .el-input__icon,
html.bs-viewer .dialog .el-select__caret{color:#66748a!important}
html.bs-viewer .dialog .el-upload,
html.bs-viewer .dialog .el-upload-dragger,
html.bs-viewer .dialog .el-upload--picture-card{
  background:var(--bs-p-field)!important;border-color:var(--bs-p-fieldline)!important;
  color:var(--bs-p-dim)!important;border-radius:6px!important}
html.bs-viewer .dialog .el-upload--picture-card:hover{border-color:var(--bs-p-focus)!important}

/* buttons */
html.bs-viewer .dialog .el-button{border-radius:6px!important;font-weight:500!important}
html.bs-viewer .dialog .el-button--default,
html.bs-viewer .dialog .el-button:not(.el-button--primary):not(.el-button--success):not(.el-button--text){
  background:#22303f!important;border-color:#33445600!important;color:var(--bs-p-text)!important}
html.bs-viewer .dialog .el-button--default:hover{background:#2c3d4f!important}
html.bs-viewer .dialog .el-button--primary{background:#1266c9!important;border-color:#1266c9!important;color:#fff!important}
html.bs-viewer .dialog .el-button--primary:hover{background:#1a76e0!important;border-color:#1a76e0!important}
html.bs-viewer .dialog .el-button--success{background:#2f9e4f!important;border-color:#2f9e4f!important;color:#fff!important}
html.bs-viewer .dialog .el-button--text{color:var(--bs-p-focus)!important}

/* tabs, dividers, plain text blocks inside the panels */
html.bs-viewer .dialog .el-tabs__item{color:var(--bs-p-dim)!important}
html.bs-viewer .dialog .el-tabs__item.is-active{color:var(--bs-p-focus)!important}
html.bs-viewer .dialog .el-tabs__nav-wrap::after{background:var(--bs-p-line)!important}
html.bs-viewer .dialog .el-tabs__active-bar{background:var(--bs-p-focus)!important}
html.bs-viewer .dialog hr,html.bs-viewer .dialog .el-divider{background:var(--bs-p-line)!important;border-color:var(--bs-p-line)!important}
html.bs-viewer .dialog p,html.bs-viewer .dialog span,html.bs-viewer .dialog div,
html.bs-viewer .dialog label,html.bs-viewer .dialog li,html.bs-viewer .dialog td{color:var(--bs-p-text)}
html.bs-viewer .dialog .el-scrollbar__bar .el-scrollbar__thumb{background:#3a4859!important}

/* the comment list cards */
html.bs-viewer .dialog2 .el-card,
html.bs-viewer .dialog .pz-item,
html.bs-viewer .dialog .dialog-content>div>div[class*=item]{
  background:#1c2634!important;border:1px solid var(--bs-p-line)!important;
  border-radius:8px!important;color:var(--bs-p-text)!important}

/* poppers are teleported to <body>, so scope them to the viewer route */
html.bs-viewer .el-select-dropdown,
html.bs-viewer .el-picker-panel,
html.bs-viewer .el-popper,
html.bs-viewer .el-cascader__dropdown{
  background:var(--bs-p-head)!important;border-color:var(--bs-p-line)!important;
  color:var(--bs-p-text)!important}
html.bs-viewer .el-select-dropdown__item{color:var(--bs-p-text)!important}
html.bs-viewer .el-select-dropdown__item.hover,
html.bs-viewer .el-select-dropdown__item:hover{background:#26364a!important}
html.bs-viewer .el-select-dropdown__item.selected{color:var(--bs-p-focus)!important}
html.bs-viewer .el-popper .popper__arrow,
html.bs-viewer .el-popper .popper__arrow::after{border-bottom-color:var(--bs-p-head)!important;
  border-top-color:var(--bs-p-head)!important}

/* cascader search boxes and checkboxes render their own white surfaces */
html.bs-viewer .dialog .el-cascader__search-input,
html.bs-viewer .dialog .el-select__input,
html.bs-viewer .dialog input,
html.bs-viewer .dialog textarea{background:var(--bs-p-field)!important;color:var(--bs-p-text)!important}
html.bs-viewer .dialog .el-cascader__search-input::placeholder{color:#5d6b7f!important}
html.bs-viewer .dialog .el-checkbox__inner,
html.bs-viewer .dialog .el-radio__inner{background:var(--bs-p-field)!important;border-color:var(--bs-p-fieldline)!important}
html.bs-viewer .dialog .el-checkbox__input.is-checked .el-checkbox__inner,
html.bs-viewer .dialog .el-radio__input.is-checked .el-radio__inner{background:var(--bs-p-focus)!important;border-color:var(--bs-p-focus)!important}
html.bs-viewer .dialog .el-checkbox__label,html.bs-viewer .dialog .el-radio__label{color:var(--bs-p-text)!important}
html.bs-viewer .el-cascader-panel,html.bs-viewer .el-cascader-menu{background:var(--bs-p-head)!important;border-color:var(--bs-p-line)!important}
html.bs-viewer .el-cascader-node{color:var(--bs-p-text)!important}
html.bs-viewer .el-cascader-node:hover,html.bs-viewer .el-cascader-node:focus{background:#26364a!important}

/* Element's Descriptions block renders its own white body - the comment detail
   panel is built from it, so the fields sat as pale text on white. */
html.bs-viewer .dialog .el-descriptions,
html.bs-viewer .dialog .el-descriptions__header,
html.bs-viewer .dialog .el-descriptions__table,
html.bs-viewer .dialog .el-descriptions-item__cell,
html.bs-viewer .dialog .el-descriptions__body table,
html.bs-viewer .dialog .el-descriptions__body td,
html.bs-viewer .dialog .el-descriptions__body th{background:transparent!important;
  color:var(--bs-p-text)!important;border-color:var(--bs-p-line)!important}
html.bs-viewer .dialog .el-descriptions__body{background:#141b25!important;
  border:1px solid var(--bs-p-line)!important;border-radius:8px!important;padding:4px 2px!important}
html.bs-viewer .dialog .el-descriptions-item__label{color:var(--bs-p-dim)!important;font-weight:500!important}
html.bs-viewer .dialog .el-descriptions-item__content{color:var(--bs-p-text)!important}
html.bs-viewer .dialog .el-carousel__mask,
html.bs-viewer .dialog .el-carousel__container,
html.bs-viewer .dialog .el-carousel__item{background:transparent!important}
html.bs-viewer .dialog .el-carousel__indicator button{background:var(--bs-p-dim)!important}
html.bs-viewer .dialog .el-tabs__content,
html.bs-viewer .dialog .el-tab-pane{background:transparent!important}

/* ---- bs-annot: drawing comment flow (v1.27) ---- */
.bs-annot-bar{position:absolute;left:14px;top:14px;z-index:120;display:flex;align-items:center;gap:12px;
  padding:6px 8px 6px 6px;background:#161e29;border:1px solid #3a4759;border-radius:9px;
  box-shadow:0 12px 32px rgba(0,0,0,.55);font:500 13px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#e3eaf3}
.bs-annot-modes{display:flex;gap:3px;padding:3px;background:#0b1017;border:1px solid #2b3644;border-radius:7px}
.bs-annot-modes button{font:500 13px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;padding:7px 13px;border:0;border-radius:5px;background:transparent;color:#93a2b6;cursor:pointer;white-space:nowrap}
.bs-annot-modes button[aria-pressed="true"]{background:#3f9dff;color:#fff}
.bs-annot-hint{color:#93a2b6;font-size:12.5px;white-space:nowrap}
.bs-annot-exit{width:26px;height:26px;border:1px solid #3a4759;border-radius:5px;background:transparent;color:#93a2b6;cursor:pointer;font-size:16px;line-height:1}
.bs-annot-exit:hover{color:#e3eaf3;border-color:#6b7c92}
.bs-annot-tally{position:absolute;left:50%;bottom:84px;transform:translateX(-50%);z-index:120;display:flex;align-items:center;gap:10px;
  padding:9px 12px;background:#161e29;border:1px solid #3a4759;border-radius:9px;box-shadow:0 12px 32px rgba(0,0,0,.6);
  font:500 13px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#e3eaf3}
.bs-annot-toast{position:absolute;left:50%;top:70px;transform:translateX(-50%) translateY(-6px);z-index:130;padding:8px 14px;
  background:#1d2735;border:1px solid #3a4759;border-radius:7px;color:#e3eaf3;font:500 13px/1 sans-serif;opacity:0;transition:all .18s}
.bs-annot-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.bs-b{font:500 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;padding:8px 13px;border-radius:5px;border:1px solid #3a4759;background:transparent;color:#93a2b6;cursor:pointer;white-space:nowrap}
.bs-b:hover{color:#e3eaf3;border-color:#6b7c92}
.bs-b.bs-p{background:#3f9dff;border-color:#3f9dff;color:#fff}
.bs-b.bs-p:hover{background:#5aade8}
.bs-annot-box{position:fixed;z-index:3000;width:336px;max-height:calc(100vh - 16px);overflow-y:auto;padding:12px;
  background:#161e29;border:1px solid #3a4759;border-radius:9px;box-shadow:0 16px 44px rgba(0,0,0,.65);
  font:400 13px/1.4 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#e3eaf3;box-sizing:border-box}
.bs-annot-box *{box-sizing:border-box}
.bs-annot-box.bs-busy{pointer-events:none;opacity:.7}
.bs-ah{font:600 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid #2b3644}
.bs-shots{font:500 10.5px/1 Menlo,Consolas,monospace;color:#3f9dff;margin-left:6px}
.bs-annot-box .bs-l{display:block;font:600 11px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#93a2b6;margin:0 0 6px}
.bs-annot-box .bs-l i{font-style:normal;color:#e0736a;letter-spacing:0;text-transform:none;font-weight:500}
.bs-mt{margin-top:10px!important}
.bs-annot-box .bs-ta{width:100%;height:64px;resize:none;background:#0d131b;color:#e3eaf3;border:1px solid #3a4759;border-radius:6px;padding:8px 10px;font:400 13.5px/1.5 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;outline:0}
.bs-annot-box .bs-ta:focus,.bs-annot-box select:focus,.bs-annot-box input:focus{border-color:#3f9dff;outline:0}
.bs-annot-box .bs-ta::placeholder,.bs-annot-box input::placeholder{color:#6b7c92}
.bs-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.bs-grid label{display:block;min-width:0}
.bs-annot-box select,.bs-annot-box input:not([type=file]){width:100%;background:#0d131b;color:#e3eaf3;border:1px solid #3a4759;border-radius:5px;padding:7px 8px;font:400 12.5px/1.2 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;min-width:0}
.bs-annot-box select option,.bs-annot-box select optgroup{background:#161e29;color:#e3eaf3}
.bs-chk{display:none;margin-top:7px;padding:8px 10px;background:#0d131b;border:1px solid #2b3644;border-radius:5px;font:400 11.5px/1.55 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#93a2b6;white-space:pre-line;max-height:84px;overflow-y:auto}
.bs-row{display:flex;gap:7px}
.bs-row select{flex:1 1 auto}
.bs-ups{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.bs-tag{font:500 10.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;padding:3px 7px;border-radius:4px;background:rgba(63,157,255,.13);color:#8fc4ff;white-space:nowrap}
.bs-foot{display:flex;align-items:center;gap:8px;margin-top:12px}
.bs-foot .bs-n{font:500 11.5px/1 Menlo,Consolas,monospace;color:#6b7c92;margin-right:auto}
html.bs-annot-on .docking-markup,html.bs-annot-on #cloudInputModal{display:none!important}
.bs-annot-tally span{white-space:nowrap}
.bs-locate{display:block;margin:6px auto 4px;font-family:inherit}
/* ---- v1.14: own overlay (clouds + leaders) and notes on the sheet ---- */
.bs-ov{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:30;overflow:visible}
.bs-lab{position:absolute;z-index:31;transform:translate(0,-50%);width:max-content;max-width:320px;padding:7px 12px;
  border-radius:6px;background:rgba(9,13,19,.92);border:1px solid #e0736a;font:400 16px/1.45 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:#e3eaf3;cursor:default;user-select:none;white-space:normal;box-sizing:border-box}
/* v1.25: "8.1. text" on one line; v1.28: up to 8 lines - two was cutting notes off */
.bs-lab{display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}
.bs-lab b{font-family:Menlo,Consolas,monospace;font-weight:400;opacity:.9;margin-right:2px}
.bs-lab span{display:inline}
.bs-lab.rec{cursor:pointer}
.bs-lab.rec:hover{background:#1d2735}
.bs-lab.pend{cursor:move;color:#ffd6d1}
.bs-lab.ghost{border-style:dashed;color:#93a2b6;pointer-events:none}
.bs-annot-tog{display:flex;align-items:center;gap:6px;font:500 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#93a2b6;cursor:pointer;white-space:nowrap}
.bs-annot-tog input{accent-color:#3f9dff;margin:0;width:14px;height:14px}
/* comment list rows + history cards were still light */
html.bs-viewer .dialog .el-descriptions.activeList,
html.bs-viewer .dialog .el-descriptions.inactivityList{background:#141b25!important;border:1px solid var(--bs-p-line)!important;border-radius:8px!important}
html.bs-viewer .dialog .el-descriptions.activeList{background:#17222f!important;border-color:var(--bs-p-focus)!important}
html.bs-viewer .dialog .line{background:var(--bs-p-line)!important}
html.bs-viewer .dialog .el-timeline-item__node{background:var(--bs-p-dim)!important}
html.bs-viewer .dialog .el-timeline-item__tail{border-left-color:var(--bs-p-line)!important}
html.bs-viewer .dialog .el-timeline-item__timestamp{color:var(--bs-p-dim)!important}
html.bs-viewer .dialog .el-card{background:#141b25!important;border:1px solid var(--bs-p-line)!important;box-shadow:none!important;color:var(--bs-p-text)!important}
html.bs-viewer .dialog .el-card *{color:var(--bs-p-text)!important;background:transparent!important}
/* v1.15: comment list as cards */
html.bs-viewer .dialog.dialog2 .el-descriptions{display:none!important}
html.bs-viewer .dialog.dialog2 .dialog-content{padding:8px!important;overflow-y:auto!important}
/* v1.18: the issue list is docked on the right, full height, like the prototype.
   v1.19: it slides in from the right edge and the drawing shrinks beside it (never covered);
   `right` stays non-!important so the keyframes can drive it (the app sets no inline right). */
html.bs-viewer .dialog.dialog2{position:fixed!important;left:auto!important;right:0;top:0!important;bottom:0!important;
  transform:none!important;width:var(--bs-list-size)!important;height:100vh!important;max-height:100vh!important;margin:0!important;
  border-radius:0!important;border-left:1px solid #2a3442!important;box-shadow:-8px 0 24px rgba(0,0,0,.35)!important;
  display:flex!important;flex-direction:column!important;animation:bs-slide-in .45s cubic-bezier(.22,.61,.36,1);z-index:2000!important}
html.bs-viewer .dialog.dialog2.bs-closing{animation:bs-slide-out .38s cubic-bezier(.4,0,.2,1) forwards}
@keyframes bs-slide-in{from{right:calc(-20px - var(--bs-list-size))}to{right:0}}
@keyframes bs-slide-out{from{right:0}to{right:calc(-20px - var(--bs-list-size))}}
html.bs-viewer .dialog.dialog2 .dialog-header{cursor:default!important;flex:0 0 auto}
html.bs-viewer .dialog.dialog2 .dialog-header .control-btn:first-child{display:none!important}   /* "minimize" makes no sense docked */
html.bs-viewer .dialog.dialog2{transition:none!important}
/* v1.20: details drawer (.dialog3) - a full-height column glued to the list's left edge (or the
   screen edge when the list is closed), drawn from under the list (lower z-index) */
/* v1.21: --bs-list-size / --bs-det-size are the user-adjustable panel widths (drag the left edge; kept in
   localStorage, written as inline vars on <html>); -w are the space they take right now (0 when closed) */
html.bs-viewer{--bs-list-size:252px;--bs-det-size:336px;--bs-list-w:0px;--bs-det-w:0px;--bs-btn-gap:46px;--bs-det-r:var(--bs-list-w)}
html.bs-viewer.bs-2d{--bs-btn-gap:14px}          /* no Forge home button on sheets */
html.bs-viewer.bs-list-open{--bs-list-w:var(--bs-list-size)}
html.bs-viewer.bs-det-open{--bs-det-w:var(--bs-det-size)}
html.bs-viewer .dialog.dialog3{position:fixed!important;left:auto!important;right:var(--bs-det-r);top:0!important;bottom:0!important;
  transform:none!important;width:var(--bs-det-size)!important;height:100vh!important;max-height:100vh!important;margin:0!important;
  border-radius:0!important;border-left:1px solid #2a3442!important;box-shadow:-8px 0 24px rgba(0,0,0,.35)!important;
  display:flex!important;flex-direction:column!important;z-index:1999!important;transition:none!important;
  animation:bs-det-in .42s cubic-bezier(.22,.61,.36,1)}
html.bs-viewer .dialog.dialog3.bs-closing{animation:bs-det-out .34s cubic-bezier(.4,0,.2,1) forwards}
@keyframes bs-det-in{from{right:calc(var(--bs-det-r) - var(--bs-det-size) - 4px)}to{right:var(--bs-det-r)}}
@keyframes bs-det-out{from{right:var(--bs-det-r)}to{right:calc(var(--bs-det-r) - var(--bs-det-size) - 4px)}}
html.bs-viewer .dialog.dialog3 .dialog-header{cursor:default!important;flex:0 0 auto}
html.bs-viewer .dialog.dialog3 .dialog-header .control-btn:first-child{display:none!important}
html.bs-viewer .dialog.dialog3 .dialog-content{flex:1 1 auto;height:auto!important;max-height:none!important;overflow-y:auto!important}
/* the Forge wrapper (.model, position:fixed) gives up the list width while the list is open; the js calls viewer.resize() */
html.bs-viewer .model{transition:width .45s cubic-bezier(.22,.61,.36,1)}
html.bs-viewer.bs-list-open .model{width:calc(100% - var(--bs-list-w))!important;right:var(--bs-list-w)!important}
html.bs-viewer.bs-resizing .model,html.bs-viewer.bs-resizing .file_icon_container{transition:none!important}
/* v1.21: drag handle on the left edge of the two docked panels */
.bs-rz{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;z-index:6;background:transparent;transition:background .15s}
.bs-rz:hover,.bs-rz.on{background:rgba(63,157,255,.45)}
html.bs-resizing,html.bs-resizing *{cursor:col-resize!important;user-select:none!important}
/* v1.21: compact details drawer - no tab strip, everything stacked: snapshots, locate, fields, reply box, activity */
html.bs-viewer .dialog.dialog3 .dialog-content{padding:8px 10px!important}
html.bs-viewer .dialog.dialog3 .el-tabs__header{display:none!important}
html.bs-viewer .dialog.dialog3 .el-tab-pane{display:block!important;height:auto!important;overflow:visible!important}
html.bs-viewer .dialog.dialog3 #pane-first{display:flex!important;flex-direction:column}
html.bs-viewer .dialog.dialog3 #pane-first>div:first-child{order:3;margin-top:8px;padding-top:8px;border-top:1px solid #2a3442}
html.bs-viewer .dialog.dialog3 #pane-first>.line{display:none!important}
html.bs-viewer .dialog.dialog3 #pane-first>.el-descriptions{order:2;margin-top:4px!important}
html.bs-viewer .dialog.dialog3 #pane-first .el-textarea__inner{min-height:56px!important;height:56px!important}
html.bs-viewer .dialog.dialog3 #pane-first>div:first-child>div:last-child{margin-top:6px!important;text-align:right}
html.bs-viewer .dialog.dialog3 .el-carousel__indicators--outside{margin:0!important;padding:0!important;line-height:0}
html.bs-viewer .dialog.dialog3 .el-carousel__indicator{padding:6px 4px!important}
html.bs-viewer .dialog.dialog3 .bs-locate{margin:2px auto 0!important;padding:5px 11px!important;font-size:12px!important}
html.bs-viewer .dialog.dialog3 .el-descriptions--small .el-descriptions-item__cell{padding:3px 0!important;font-size:12.5px!important;line-height:1.35!important}
html.bs-viewer .dialog.dialog3 #pane-second{margin-top:8px;padding-top:8px;border-top:1px solid #2a3442}
html.bs-viewer .dialog.dialog3 .el-timeline{padding-left:2px!important}
html.bs-viewer .dialog.dialog3 .el-timeline-item{padding-bottom:10px!important}
html.bs-viewer .dialog.dialog3 .el-timeline-item__timestamp{font-size:11px!important;margin-bottom:4px!important;padding-top:0!important}
html.bs-viewer .dialog.dialog3 .el-card__body{padding:7px 9px!important;font-size:12.5px!important;line-height:1.4}
html.bs-viewer .dialog.dialog3 .el-card__body h4{margin:0 0 3px!important;font-size:12.5px!important}
html.bs-viewer .dialog.dialog3 .el-card__body p{margin:0!important}
.bs-sec{font:600 11px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#93a2b6;margin:0 0 6px}
/* v1.19: the two viewer buttons (annotate / issue list) float top-right, left of Forge's home button,
   and move with the drawing edge when the list is open */
html.bs-viewer .file_icon_container{position:fixed!important;top:10px!important;right:calc(var(--bs-btn-gap) + var(--bs-list-w) + var(--bs-det-w))!important;bottom:auto!important;left:auto!important;
  width:auto!important;height:auto!important;padding:4px!important;gap:4px!important;align-items:center!important;justify-content:flex-start!important;
  border-radius:9px!important;background:rgba(17,24,32,.94)!important;border:1px solid #2a3442;box-shadow:0 4px 14px rgba(0,0,0,.35);
  z-index:2001!important;transition:right .45s cubic-bezier(.22,.61,.36,1);user-select:none;-webkit-user-select:none}
html.bs-2d .viewcubeWrapper,html.bs-2d .homeViewWrapper{display:none!important}   /* v1.20: the "home" icon is gone on 2D sheets */
html.bs-viewer .file_icon_container>div{flex:0 0 32px!important;width:32px!important;max-width:32px!important;min-width:0!important;height:32px!important;
  align-self:center!important;display:flex;align-items:center;justify-content:center;border-radius:7px;cursor:pointer;transition:background .15s}
html.bs-viewer .file_icon_container>div:hover{background:#1c2633}
html.bs-viewer.bs-list-open .file_icon_container>div:nth-child(2){background:#1d3049;box-shadow:inset 0 0 0 1px #3f9dff}
html.bs-viewer.bs-annot-on .file_icon_container>div:first-child{background:#3a2622;box-shadow:inset 0 0 0 1px #e0736a}
html.bs-viewer .file_icon_container img{display:block;filter:invert(.82);-webkit-user-drag:none;user-drag:none;pointer-events:auto}
html.bs-viewer .file_icon_container>div:hover img{filter:invert(1)}
html.bs-viewer.bs-list-open .file_icon_container>div:nth-child(2) img{filter:invert(.55) sepia(1) saturate(6) hue-rotate(190deg) brightness(1.25)}
html.bs-viewer.bs-annot-on .file_icon_container>div:first-child img{filter:invert(.6) sepia(1) saturate(5) hue-rotate(320deg) brightness(1.2)}
html.bs-viewer .dialog.dialog2 .dialog-content{flex:1 1 auto;height:auto!important;max-height:none!important}
html.bs-viewer .dialog.dialog2 .el-input__inner{height:30px!important;line-height:30px!important;font-size:12.5px!important}
.bs-list{display:flex;flex-direction:column;gap:7px}
.bs-empty{color:#7c8ba0;font:500 13px/1.5 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;padding:24px 6px;text-align:center}
.bs-card{background:#141b25;border:1px solid #2a3442;border-left:3px solid #e0736a;border-radius:7px;padding:7px 9px 7px 8px;cursor:pointer;transition:border-color .15s,background .15s}
.bs-card.ok{border-left-color:#63b981}
.bs-card.off{border-left-color:#8d9bb0}
.bs-card:hover{background:#18212d;border-color:#3a4759}
.bs-card.on{background:#17222f;border-color:#3f9dff;border-left-color:#3f9dff}
.bs-ch{display:flex;align-items:center;gap:7px;margin-bottom:6px}
.bs-no{font:700 12px/1 Menlo,Consolas,monospace;color:#e3eaf3;letter-spacing:.02em}
.bs-pill{font:700 10.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;letter-spacing:.06em;padding:3px 6px 3px 7px;border-radius:9px;border:1px solid transparent;cursor:pointer;background:rgba(224,115,106,.16);color:#f0a59d;border-color:rgba(224,115,106,.35)}
.bs-pill i{font-style:normal;opacity:.7}
.bs-pill.ok{background:rgba(99,185,129,.16);color:#8fd6a8;border-color:rgba(99,185,129,.35)}
.bs-pill.off{background:rgba(141,155,176,.14);color:#aab6c7;border-color:rgba(141,155,176,.3)}
.bs-pill:hover{filter:brightness(1.15)}
.bs-cnt{font:500 11.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#7c8ba0}
.bs-del{margin-left:auto;font:600 12px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#7c8ba0;background:transparent;border:1px solid transparent;border-radius:5px;padding:4px 6px;cursor:pointer}
.bs-del:hover{color:#f0a59d;border-color:#3a4759}
.bs-del.arm{color:#fff;background:#c9463c;border-color:#c9463c}
.bs-thumbs{display:flex;gap:5px;margin-bottom:6px;overflow-x:auto;padding-bottom:3px;scrollbar-width:thin;scrollbar-color:#34435a transparent}
.bs-thumbs::-webkit-scrollbar{height:4px}
.bs-thumbs::-webkit-scrollbar-track{background:transparent}
.bs-thumbs::-webkit-scrollbar-thumb{background:#34435a;border-radius:2px}
.bs-thumbs::-webkit-scrollbar-thumb:hover{background:#4a5c78}
.bs-th{position:relative;flex:0 0 auto;width:92px;height:58px;border-radius:4px;overflow:hidden;background:#0d1219;border:1px solid #2a3442}
.bs-th img{width:100%;height:100%;object-fit:cover;display:block}
.bs-th b{position:absolute;left:5px;top:4px;font:700 10.5px/1 Menlo,Consolas,monospace;color:#ffd6d1;background:rgba(9,13,19,.85);border:1px solid #e0736a;border-radius:3px;padding:2px 4px}
.bs-th:hover{border-color:#3f9dff}
.bs-desc{font:500 12.5px/1.45 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#e3eaf3;word-break:break-word;margin-bottom:6px}
.bs-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.bs-chip{font:500 10.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#93a2b6;background:#1b2430;border:1px solid #2a3442;border-radius:4px;padding:3px 6px}
.bs-cf{display:flex;align-items:center;gap:6px;font:500 11px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#7c8ba0}
.bs-cf .bs-by{margin-left:auto;opacity:.8}
.bs-more{font:600 11px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#3f9dff;text-decoration:none;margin-left:8px;white-space:nowrap}
.bs-more:hover{text-decoration:underline}
.bs-menu{position:fixed;z-index:4000;background:#141b25;border:1px solid #3a4759;border-radius:7px;padding:4px;box-shadow:0 10px 28px rgba(0,0,0,.45);display:flex;flex-direction:column;min-width:130px}
.bs-mi{display:flex;align-items:center;gap:8px;font:600 12px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#c9d3df;background:transparent;border:0;border-radius:5px;padding:8px 10px;cursor:pointer;text-align:left}
.bs-mi i{width:8px;height:8px;border-radius:50%;background:#e0736a}
.bs-mi.ok i{background:#63b981}
.bs-mi.off i{background:#8d9bb0}
.bs-mi:hover{background:#1f2a38}
.bs-mi.cur{opacity:.45;cursor:default}
/* smooth panel drag */
html.bs-viewer .dialog{transition:width .2s,height .2s!important}
html.bs-viewer .dialog-header{touch-action:none}
/* on 2D drawings the old markup toolbar is replaced by the bs-annot flow */
html.bs-2d .docking-markup,html.bs-2d #cloudInputModal{display:none!important}

/* v1.23: Forge's bottom toolbar - always there (the app keeps hiding it with an inline display:none
   around its own markup flow) and styled like the floating annotate / list buttons */
html.bs-viewer #guiviewer3d-toolbar{display:block!important;visibility:visible!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-control-group{background:rgba(17,24,32,.94)!important;border:1px solid #2a3442!important;border-radius:9px!important;box-shadow:0 4px 14px rgba(0,0,0,.35)!important;padding:4px!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-control-group:not(.adsk-hidden){display:inline-block!important}   /* the app hides each group inline too */
html.bs-viewer #guiviewer3d-toolbar .adsk-control-group.adsk-hidden{display:none!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button{width:32px!important;height:32px!important;margin:0 2px!important;border:0!important;border-radius:7px!important;background:transparent!important;transition:background .15s}
html.bs-viewer #guiviewer3d-toolbar .adsk-button .adsk-button-icon{color:#c9d3df!important;line-height:32px!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button:hover{background:#1c2633!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button:hover .adsk-button-icon{color:#fff!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button.active{background:#1d3049!important;box-shadow:inset 0 0 0 1px #3f9dff!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button.active .adsk-button-icon{color:#3f9dff!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-button.disabled .adsk-button-icon{color:#4b5a6d!important}
html.bs-viewer #guiviewer3d-toolbar .measure-toolbar-seperator{background:#2a3442!important;margin:6px 4px!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-control-tooltip{background:#0d131b!important;color:#e3eaf3!important;border:1px solid #2a3442!important;border-radius:5px!important;font-size:12px!important}
html.bs-viewer #guiviewer3d-toolbar .adsk-control-tooltip:after{border-top-color:#0d131b!important}
/* v1.24: the sheet / layout selector bottom-left was still a white box */
html.bs-viewer .home>.el-select .el-input__inner{background:rgba(17,24,32,.94)!important;color:#e3eaf3!important;border:1px solid #2a3442!important;border-radius:9px!important;box-shadow:0 4px 14px rgba(0,0,0,.35)!important;height:34px!important;line-height:34px!important;font-size:12.5px!important}
html.bs-viewer .home>.el-select .el-input__inner:focus{border-color:#3f9dff!important}
html.bs-viewer .home>.el-select .el-input__icon,html.bs-viewer .home>.el-select .el-select__caret{color:#93a2b6!important;line-height:34px!important}
html.bs-viewer .home>.el-select .el-input__inner::placeholder{color:#6b7c92!important}

/* ================= v1.29: project workspace nav rail (DingTalk style) ======
   The rail keeps the app's own labels when expanded; collapsed the app drops
   them, so bimseek-annot.js puts a small one back (.bs-nav-t) and these rules
   lay the item out as icon-over-label. Scoped away from the admin console. */
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse{width:78px!important}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item{
  height:auto!important;line-height:1.15!important;padding:9px 2px 8px!important;margin:3px 7px!important;
  display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;
  gap:5px;text-align:center!important;border-radius:8px!important;overflow:hidden;
}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item .el-tooltip{
  position:static!important;width:auto!important;height:auto!important;padding:0!important;line-height:1!important;
  display:flex!important;align-items:center;justify-content:center;text-align:center!important;
}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item i{
  margin:0!important;width:auto!important;font-size:19px!important;line-height:1!important;letter-spacing:0!important;
}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item .bs-nav-t{
  display:block!important;visibility:visible!important;height:auto!important;width:auto!important;
  max-width:64px;font-size:11px;line-height:1.15;letter-spacing:0;
  color:rgba(255,255,255,.72);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item:hover .bs-nav-t,
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item.is-active .bs-nav-t{color:#fff}
/* the first row is the company + the collapse switch */
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse>li:first-child{
  border-bottom:1px solid rgba(255,255,255,.08);border-radius:0!important;margin:0 0 6px!important;padding:12px 2px 10px!important;
}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse>li:first-child::after{
  content:"\00bb";display:block;margin-top:3px;font-size:12px;color:rgba(255,255,255,.45);line-height:1}
html:not(.bs-rail-mini):not(.bs-admin) .el-menu-vertical-demo:not(.el-menu--collapse)>li:first-child{
  border-bottom:1px solid rgba(255,255,255,.08);border-radius:0!important;margin:0 0 6px!important}
html:not(.bs-rail-mini):not(.bs-admin) .el-menu-vertical-demo:not(.el-menu--collapse)>li:first-child::after{
  content:"\00ab";float:right;font-size:13px;color:rgba(255,255,255,.45)}

/* ---- app-navigation panel: card + header with a fold button ---- */
.Yuan-title{
  border-radius:10px!important;box-shadow:0 8px 28px rgba(16,32,56,.16)!important;
  border:1px solid var(--bs-border)!important;overflow:hidden!important;padding-top:0!important;
}
.bs-nav-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:9px 10px 9px 14px;border-bottom:1px solid var(--bs-border);background:var(--bs-surface-2);
}
.bs-nav-ttl{font-size:13px;font-weight:600;color:var(--bs-text);letter-spacing:-.01em;white-space:nowrap}
.bs-nav-fold{
  width:24px;height:24px;line-height:22px;text-align:center;border-radius:6px;cursor:pointer;
  border:1px solid var(--bs-border);background:#fff;color:var(--bs-text-2);font-size:13px;padding:0;
}
.bs-nav-fold:hover{background:var(--bs-primary-soft);color:var(--bs-primary);border-color:var(--bs-border-2)}
/* the app's round button becomes the slim handle that brings the panel back */
.Yuan{box-shadow:0 4px 14px rgba(16,32,56,.18)!important;border:1px solid var(--bs-border)!important;transition:background .15s}
.Yuan:hover{background:var(--bs-primary-soft)!important}

/* ---- images: placeholder instead of a broken icon, no layout jump ---- */
.bs-img-load{
  background:transparent!important;box-shadow:none!important;
  color:transparent!important;font-size:0!important;object-fit:cover;
}
/* v1.36: a missing or broken picture shows NOTHING at all - no grey block,
   no icon, no frame. The space stays, the page stays quiet. */
.bs-img-fail{
  background:transparent!important;background-image:none!important;
  box-shadow:none!important;border:0!important;
  color:transparent!important;font-size:0!important;object-fit:cover;
}
}

/* ---- v1.31  file library toolbar ------------------------------------
   The header was two floated Element columns (el-col-16 / el-col-8), so a
   narrower window broke the buttons into ragged, misaligned blocks and the
   right-hand column stacked vertically. One wrapping flex row instead: the
   columns become display:contents, every control is a direct flex item, so
   the buttons keep one baseline, one gap and one left edge at any width.
   Layout only - no markup, no handlers, no data touched. */
html.bs-files .right-panel .el-header{
  height:auto!important;line-height:normal!important;padding:10px 14px!important;
}
html.bs-files .right-panel .el-header>.el-row{
  display:flex!important;flex-wrap:wrap!important;align-items:center!important;
  gap:8px!important;margin:0!important;
}
html.bs-files .right-panel .el-header>.el-row:before,
html.bs-files .right-panel .el-header>.el-row:after{display:none!important}
html.bs-files .right-panel .el-header>.el-row>.el-col{display:contents!important}
html.bs-files .right-panel .el-header .el-button,
html.bs-files .right-panel .el-header .el-dropdown,
html.bs-files .right-panel .el-header .el-radio-group,
html.bs-files .right-panel .el-header .el-popover__reference-wrapper{
  margin:0!important;flex:0 0 auto!important;
}
html.bs-files .right-panel .el-header .el-popover__reference-wrapper{display:inline-flex!important}
/* the search box takes the rest of its line but never strands itself */
html.bs-files .right-panel .el-header .el-input{
  margin:0!important;flex:1 1 180px!important;min-width:150px!important;max-width:260px!important;
}

/* ---- v1.32  the viewer button capsule can be moved ------------------- */
html.bs-viewer .file_icon_container.bs-drag{cursor:move!important;touch-action:none!important}

/* ================= v1.40: PDF sheets ================= */
#bs-pdf{position:fixed;left:0;top:0;bottom:0;right:0;z-index:1;overflow:auto;background:#39404a;
  padding:16px 0 26px;box-sizing:border-box;transition:right .45s ease;-webkit-overflow-scrolling:touch}
html.bs-resizing #bs-pdf{transition:none}
html.bs-list-open #bs-pdf{right:var(--bs-list-w,252px)}
.bs-pdf-wait{color:#aebbcc;font:500 14px/1.6 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;text-align:center;padding:80px 0}
.bs-pdf-page{position:relative;margin:0 auto 18px;background:#fff;box-shadow:0 3px 16px rgba(0,0,0,.5);overflow:visible}
.bs-pdf-cv{position:absolute;left:0;top:0;width:100%;height:100%;display:block}
svg.bs-povl{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:30;overflow:visible}
svg.bs-povl.bs-flash{animation:bs-pdf-flash .9s ease}
@keyframes bs-pdf-flash{0%,100%{filter:none}35%{filter:drop-shadow(0 0 10px #f0262e)}}
.bs-pdf-band{position:absolute;border:1.5px dashed #f0262e;background:rgba(240,38,46,.09);pointer-events:none;z-index:40}
html.bs-annot-on #bs-pdf .bs-pdf-page{cursor:crosshair}
/* notes read as ink on paper here, not as dark chips on a dark sheet */
html.bs-pdf .bs-lab{background:rgba(255,255,255,.96);color:#17202b;border-width:1px;
  box-shadow:0 2px 8px rgba(0,0,0,.22);font-size:15px;padding:5px 10px}
html.bs-pdf .bs-lab.rec:hover{background:#fff5f4}
html.bs-pdf .bs-lab.pend{color:#8f1a1a}
html.bs-pdf .bs-lab.ghost{color:#6b7787;background:rgba(255,255,255,.8)}
/* page / zoom toolbar, same skin as the viewer's bottom bar */
#bs-pdf-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:120;
  display:flex;align-items:center;gap:4px;padding:5px 8px;border-radius:9px;
  background:rgba(17,24,32,.94);border:1px solid #2a3442;box-shadow:0 6px 22px rgba(0,0,0,.45);
  font:500 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#c9d3df;
  transition:left .45s ease}
html.bs-list-open #bs-pdf-bar{left:calc(50% - var(--bs-list-w,252px)/2)}
#bs-pdf-bar button{appearance:none;background:transparent;border:0;color:#c9d3df;cursor:pointer;
  min-width:30px;height:28px;padding:0 8px;border-radius:7px;font:inherit;font-size:14px}
#bs-pdf-bar button:hover{background:#1d2735;color:#fff}
#bs-pdf-bar button:active{background:#25324a}
#bs-pdf-bar .bs-sep{width:1px;height:18px;background:#2a3442;margin:0 4px}
#bs-pdf-bar .bs-pg{display:flex;align-items:center;gap:4px;color:#93a2b6}
#bs-pdf-bar .bs-pgi{width:38px;height:24px;text-align:center;border-radius:5px;border:1px solid #2d3946;
  background:#0e141c;color:#e3eaf3;font:inherit;padding:0}
#bs-pdf-bar .bs-pgi:focus{outline:0;border-color:#3f9dff}
#bs-pdf-bar .bs-pgn{font-weight:500;color:#c9d3df}
#bs-pdf-bar .bs-zm{min-width:44px;text-align:center;color:#93a2b6}
html.bs-pdf #bs-pdfname{display:none!important}

/* v1.44: the file-name chip, same skin as the toolbars */
#bs-pdf-file{position:fixed;left:14px;top:10px;z-index:2001;display:flex;align-items:center;gap:8px;
  max-width:min(46vw,560px);height:32px;padding:0 10px 0 8px;border-radius:9px;cursor:pointer;
  background:rgba(17,24,32,.94);border:1px solid #2a3442;box-shadow:0 6px 22px rgba(0,0,0,.42);
  font:500 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#e3eaf3;
  user-select:none;-webkit-user-select:none;transition:border-color .15s,background .15s}
#bs-pdf-file:hover{background:#1b2531;border-color:#3a4759}
#bs-pdf-file .bs-ft{flex:0 0 auto;font:600 9.5px/1 Menlo,Consolas,monospace;letter-spacing:.4px;
  color:#fff;background:#c8342f;border-radius:4px;padding:4px 5px}
#bs-pdf-file .bs-fn{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#bs-pdf-file .bs-ar{flex:0 0 auto;font-style:normal;font-size:11px;color:#8d9bb0;margin-left:2px}
#bs-pdf-file.bs-one{cursor:default}
#bs-pdf-file.bs-one .bs-ar{display:none}
#bs-pdf-file.bs-one:hover{background:rgba(17,24,32,.94);border-color:#2a3442}
#bs-pdf-menu{position:fixed;z-index:4000;max-height:min(62vh,520px);overflow:auto;padding:5px;
  background:#141b25;border:1px solid #3a4759;border-radius:9px;box-shadow:0 12px 34px rgba(0,0,0,.5);
  display:flex;flex-direction:column;min-width:260px}
#bs-pdf-menu .bs-fmi{appearance:none;background:transparent;border:0;color:#c9d3df;cursor:pointer;
  text-align:left;padding:7px 10px;border-radius:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font:500 12.5px/1.35 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
#bs-pdf-menu .bs-fmi:hover{background:#1d2735;color:#fff}
#bs-pdf-menu .bs-fmi.cur{color:#3f9dff;background:rgba(63,157,255,.1)}
#bs-pdf-menu .bs-fmi.cur::before{content:"\2713  ";font-weight:600}

/* v1.45: the app points an <iframe> at the raw PDF, so Chrome's own reader (hamburger,
   file name, page box, zoom, rotate) paints for a second or two before our viewer takes
   over. An attribute selector kills it the instant the tag is parsed - no timing involved. */
.home iframe[src*=".pdf"],
.home iframe[src*=".PDF"]{display:none!important}
/* the area behind it is dark from the first frame, so there is no white flash either */
.home:has(iframe[src*=".pdf"]){background:#39404a}

/* ================= v1.46: one clean top row =================
   left = which file you are on, centre = what you are doing, right = the tools.
   The mode bar used to sit at top-left, where it collided with the file chip. It is
   now centred over the visible sheet (it follows the panels) and can never grow into
   either side: the hint is the part that gives way. */
.bs-annot-bar{left:50%!important;top:10px!important;
  transform:translateX(-50%);
  max-width:calc(100vw - 660px);min-width:0;
  padding:5px 7px 5px 5px;gap:10px;
  transition:left .45s cubic-bezier(.22,.61,.36,1)}
html.bs-list-open .bs-annot-bar{left:calc(50% - var(--bs-list-w,0px)/2)!important}
html.bs-det-open .bs-annot-bar{left:calc(50% - (var(--bs-list-w,0px) + var(--bs-det-w,0px))/2)!important}
.bs-annot-bar .bs-annot-modes{flex:0 0 auto}
.bs-annot-bar .bs-annot-modes button{padding:6px 11px;font-size:12.5px}
.bs-annot-hint{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
.bs-annot-bar .bs-annot-tog{flex:0 0 auto}
.bs-annot-bar .bs-annot-exit{flex:0 0 auto;width:24px;height:24px;font-size:15px}
/* while marking up, the file name gives way - the sheet matters more than its title */
html.bs-annot-on #bs-pdf-file{max-width:min(24vw,280px)}
/* narrow windows: the hint is the first thing to go, then the mode labels stay */
@media (max-width:1240px){
  .bs-annot-bar{max-width:calc(100vw - 420px)}
  .bs-annot-hint{display:none}
}

/* ==================================================================
   v1.47 - Word / Excel / PowerPoint on the same sheet
   The file is converted to PDF by ONLYOFFICE and drawn by pdf.js, so
   everything below is only about keeping the editor out of the way and
   telling the three file kinds apart in the chip and the folder menu.
   ================================================================== */
html.bs-off iframe[name="frameEditor"],
html.bs-off iframe[src*="/web-apps/"],
html.bs-off .home iframe{display:none!important}
html.bs-off .home{background:#39404a}

/* file-kind tag - PDF red, Word blue, Excel green, PowerPoint orange */
#bs-pdf-file .bs-ft.k-WORD{background:#2b579a}
#bs-pdf-file .bs-ft.k-EXCEL{background:#1d7044}
#bs-pdf-file .bs-ft.k-PPT{background:#c25016}
#bs-pdf-menu .bs-fmi{display:flex;align-items:center;gap:8px}
#bs-pdf-menu .bs-fk{flex:0 0 42px;text-align:center;font:600 8.5px/1 Menlo,Consolas,monospace;
  letter-spacing:.3px;color:#fff;background:#c8342f;border-radius:3px;padding:4px 0;font-style:normal}
#bs-pdf-menu .bs-fk.k-WORD{background:#2b579a}
#bs-pdf-menu .bs-fk.k-EXCEL{background:#1d7044}
#bs-pdf-menu .bs-fk.k-PPT{background:#c25016}

/* fallback annotate button: only appears when the app draws no tool group */
#bs-pdf-annot{position:fixed;right:16px;top:10px;z-index:2002;height:32px;padding:0 14px;
  border-radius:9px;cursor:pointer;appearance:none;border:1px solid #2a3442;
  background:rgba(17,24,32,.94);color:#e3eaf3;box-shadow:0 6px 22px rgba(0,0,0,.42);
  font:600 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
#bs-pdf-annot:hover{background:#1b2531;border-color:#3a4759}
#bs-pdf-annot.on{background:#2f7fe0;border-color:#2f7fe0;color:#fff}

.bs-pdf-wait .bs-oo-fb{display:block;margin:16px auto 0;appearance:none;cursor:pointer;
  height:30px;padding:0 14px;border-radius:8px;border:1px solid #3a4759;background:#1b2531;
  color:#c9d3df;font:500 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
.bs-pdf-wait .bs-oo-fb:hover{background:#243040;color:#fff}

/* ==================================================================
   v1.48 - the project photo slot
   Element UI draws the "add a picture" square with an icon font glyph.
   When that glyph does not render the square looks like an empty dashed
   box and nobody can tell it is a button, so draw the plus ourselves.
   ================================================================== */
.el-upload--picture-card i.el-icon-plus{display:none}
.el-upload--picture-card{position:relative}
.el-upload--picture-card::after{
  content:"+";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font:300 40px/1 -apple-system,"Segoe UI",Arial,sans-serif;color:#b6c0cd;pointer-events:none}
.el-upload--picture-card:hover::after{color:#3f9dff}
/* a cover whose file is missing on the server is blanked by the image net -
   keep the slot readable instead of showing an empty white card */
.bs-img-fail{background:#eef1f5}

/* ==================================================================
   v1.49 - CAD-style navigation on the PDF sheet
   wheel = zoom at the pointer, left drag = move the sheet.
   In annotate mode the left button draws, so the cursor says so and
   panning moves to the middle button.
   ================================================================== */
#bs-pdf{cursor:grab}
#bs-pdf.bs-panning{cursor:grabbing}
html.bs-annot-on #bs-pdf{cursor:crosshair}
html.bs-annot-on #bs-pdf.bs-panning{cursor:grabbing}

/* ==================================================================
   v1.54 - model conversion status in the file library
   The app writes the eye's colour inline (black = never converted,
   red = the conversion failed), so the attribute selector is what can
   reach it. Amber says "to do"; red is kept for a real failure.
   ================================================================== */
.el-table i.el-icon-view[style*="color: black"]{color:#e0851b!important;font-size:15px}
.el-table i.el-icon-view[style*="color: red"]{color:#e5322d!important;font-size:15px}
.el-table i.el-icon-view:hover{filter:brightness(1.25)}
.el-table i.el-icon-loading{color:#2f7fe0}

#bs-conv{display:flex;align-items:center;margin-left:4px}
/* v1.58: the chip is always on the toolbar - grey when there is nothing to
   convert, blue while it counts the sub-folders, amber when work is due */
#bs-conv.bs-none .bs-conv-go{border-color:#e4e7ed;background:#fafafa;color:#a8abb2;cursor:default}
#bs-conv.bs-scan .bs-conv-go{border-color:#cdd8e6;background:#f4f7fb;color:#5b6b80;cursor:default}
#bs-conv .bs-conv-go{appearance:none;cursor:pointer;height:32px;padding:0 14px;border-radius:8px;
  border:1px solid #e0851b;background:#fff7ec;color:#a35d06;white-space:nowrap;
  font:600 12.5px/1 -apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
#bs-conv .bs-conv-go:hover{background:#fdecd2}
#bs-conv.bs-run .bs-conv-go{border-color:#2f7fe0;background:#eef4fd;color:#1d5fb0;cursor:pointer}
#bs-conv.bs-ok .bs-conv-go{border-color:#cfe3d4;background:#f2f8f4;color:#3a7d52;cursor:default}


/* ==================================================================
   v1.56 - file library toolbar
   Actions on the left, view controls hard right. The classes come from
   tagTools(): bs-i-* sits on the flex item (layout), bs-b-* on the control
   inside it (looks). .el-col is display:contents from v1.31, so every one
   of these is a direct flex item of the row and `order` just works.
   The view toggle, the recycle bin and the search box + magnifier read as
   two joined pills, one design language.
   ================================================================== */
/* v1.57: the v1.2x header clean-up already ships
     html.bs-files .right-panel .el-header > .el-row      {gap:8px !important}
     html.bs-files .right-panel .el-header .el-input      {flex:1 1 180px !important}
     html.bs-files .right-panel .el-header .el-button ... {margin-left:0 !important}
   Those are more specific AND !important, so the short v1.56 selectors lost
   every box property and kept only `order` - which is exactly what the toolbar
   looked like. Everything below therefore carries the same long prefix.
   The keyword box growing (flex-grow:1) is what ate the free space, so
   margin-left:auto had nothing to push with. */
html.bs-files .right-panel .el-header > .el-row.bs-toolrow{align-items:center;gap:0 !important}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-new{order:1}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-up{order:2;margin-left:8px !important}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-move{order:3;margin-left:8px !important}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-down{order:4;margin-left:8px !important}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-del{order:5;margin-left:8px !important}
html.bs-files .right-panel .el-header .bs-toolrow #bs-conv{order:6;margin-left:8px !important}
/* right edge: keyword box + advanced query, then list / grid / recycle bin */
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-find{order:20;margin-left:auto !important;
  flex:0 0 240px !important;width:240px !important;max-width:240px !important;min-width:0}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-search{order:21;margin-left:-1px !important;display:inline-flex;align-items:center}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-view{order:22;margin-left:14px !important}
html.bs-files .right-panel .el-header .bs-toolrow .bs-i-bin{order:23;margin-left:-1px !important}
/* same two, keyed on structure - the group keeps its place in the instant
   after Vue rewrites a class attribute */
html.bs-files .right-panel .el-header .el-radio-group{order:22;margin-left:14px !important}

/* --- the shared pill look ------------------------------------------ */
html.bs-files .right-panel .el-header .bs-b-bin,
html.bs-files .right-panel .el-header .bs-b-search{height:28px;min-width:34px;padding:0;font-size:0;display:inline-flex;
  align-items:center;justify-content:center;border:1px solid #dcdfe6;background:#fff;
  color:#606266;box-shadow:none;border-radius:0 4px 4px 0}
html.bs-files .right-panel .el-header .bs-b-bin:hover,
html.bs-files .right-panel .el-header .bs-b-search:hover{background:#f2f6fc;color:#1266c9;border-color:#c6d4e4}
html.bs-files .bs-b-bin>span,html.bs-files .bs-b-bin>i,
html.bs-files .bs-b-search>span,html.bs-files .bs-b-search>i{display:none}
html.bs-files .bs-b-bin::before,
html.bs-files .bs-b-search::before{content:"";width:15px;height:15px;background:currentColor;
  -webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
html.bs-files .bs-b-bin::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Cpath%20d%3D%27M6.2%201h3.6l.6%201.2H14v1.6H2V2.2h3.6L6.2%201z%27%20fill%3D%27black%27%2F%3E%3Cpath%20d%3D%27M3.2%205h9.6l-.9%209.2a.9.9%200%200%201-.9.8H5a.9.9%200%200%201-.9-.8L3.2%205zm2.6%201.8v6.4h1.3V6.8H5.8zm3.1%200v6.4h1.3V6.8H8.9z%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Cpath%20d%3D%27M6.2%201h3.6l.6%201.2H14v1.6H2V2.2h3.6L6.2%201z%27%20fill%3D%27black%27%2F%3E%3Cpath%20d%3D%27M3.2%205h9.6l-.9%209.2a.9.9%200%200%201-.9.8H5a.9.9%200%200%201-.9-.8L3.2%205zm2.6%201.8v6.4h1.3V6.8H5.8zm3.1%200v6.4h1.3V6.8H8.9z%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E")}
html.bs-files .bs-b-search::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Cpath%20d%3D%27M10.6%206.6a4%204%200%201%201-8%200%204%204%200%200%201%208%200zm-.5%204.6a5.6%205.6%200%201%201%201.2-1.2l3.4%203.4-1.2%201.2-3.4-3.4z%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Cpath%20d%3D%27M10.6%206.6a4%204%200%201%201-8%200%204%204%200%200%201%208%200zm-.5%204.6a5.6%205.6%200%201%201%201.2-1.2l3.4%203.4-1.2%201.2-3.4-3.4z%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E")}

/* list / grid segments - the bin becomes the third segment of the same pill */
html.bs-files .right-panel .el-header .el-radio-button__inner{font-size:0;padding:0;width:34px;height:28px;
  display:inline-flex;align-items:center;justify-content:center}
html.bs-files .right-panel .el-header .el-radio-button:nth-child(2) .el-radio-button__inner{border-radius:0}
html.bs-files .right-panel .el-header .el-radio-button:first-child .el-radio-button__inner::before,
html.bs-files .right-panel .el-header .el-radio-button:nth-child(2) .el-radio-button__inner::before{content:"";width:15px;height:15px;
  background:currentColor;-webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
html.bs-files .right-panel .el-header .el-radio-button:first-child .el-radio-button__inner::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Crect%20x%3D%271%27%20y%3D%272.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%273.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271%27%20y%3D%276.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%277.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271%27%20y%3D%2710.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%2711.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Crect%20x%3D%271%27%20y%3D%272.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%273.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271%27%20y%3D%276.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%277.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271%27%20y%3D%2710.5%27%20width%3D%273%27%20height%3D%273%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%276%27%20y%3D%2711.4%27%20width%3D%279%27%20height%3D%271.4%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E")}
html.bs-files .right-panel .el-header .el-radio-button:nth-child(2) .el-radio-button__inner::before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Crect%20x%3D%271.5%27%20y%3D%271.5%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%279%27%20y%3D%271.5%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271.5%27%20y%3D%279%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%279%27%20y%3D%279%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E");mask-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2016%2016%27%3E%3Crect%20x%3D%271.5%27%20y%3D%271.5%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%279%27%20y%3D%271.5%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%271.5%27%20y%3D%279%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3Crect%20x%3D%279%27%20y%3D%279%27%20width%3D%275.5%27%20height%3D%275.5%27%20fill%3D%27black%27%2F%3E%3C%2Fsvg%3E")}

/* the keyword box and the magnifier are one control */
html.bs-files .bs-i-find .el-input__inner{border-radius:4px 0 0 4px;padding-left:10px}
html.bs-files .bs-i-find .el-input__prefix{display:none}

/* ==================================================================
   v1.61 - the company wordmark, and the rail labels on two lines
   The header name was 20px/700 with 2px tracking: loud, and its column
   was pinned at 194px so a longer company name ran towards the nav.
   It becomes a wordmark - geometric face, medium weight, light tracking -
   and the column sizes to the name with a fixed 44px breathing space.
   The rail labels were one nowrap line clipped at 64px, which is how
   "Application Navigation" became "Applicati...". Two lines, smaller.
   ================================================================== */
html:not(.bs-admin) .el-header .el-row>.el-col:first-child{
  width:auto!important;max-width:none!important;margin-right:44px!important}
html:not(.bs-admin) .el-header p.text-4{
  align-items:center!important;gap:11px!important;padding-right:0!important;white-space:nowrap;
  font-family:"Futura","Avenir Next","Century Gothic","Segoe UI",sans-serif!important;
  font-size:16px!important;font-weight:500!important;letter-spacing:.06em!important;color:#16202c!important}
/* the "|" between logo and name becomes a hairline rule - and disappears
   entirely when the tenant has no logo to separate from */
html:not(.bs-admin) .el-header p.text-4>span{
  font-size:0!important;flex:0 0 auto;width:1px!important;height:18px!important;
  background:#d9dee5!important;border-radius:1px;margin:0 1px!important}
html:not(.bs-admin) .el-header p.text-4 img.bs-img-fail~span{display:none!important}

html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse{width:86px!important}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item{
  padding:8px 2px 7px!important;gap:4px!important}
html.bs-rail-mini:not(.bs-admin) .el-menu-vertical-demo.el-menu--collapse .el-menu-item .bs-nav-t{
  max-width:74px!important;font-size:10.5px!important;line-height:1.25!important;
  white-space:normal!important;word-break:break-word;text-overflow:clip!important;
  display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* v1.62 - the login page carousel shows a single slide, so its one
   indicator dash is just a stray mark under the logo. Hidden only when
   there really is nothing to page through. */
.register-left .el-carousel__indicators li:only-child,
.register-left .el-carousel__indicators .el-carousel__indicator:only-child{display:none!important}

/* ==================================================================
   v1.63 - project home: one grid, one baseline
   The left column floated its cards with hard widths (626 / 601 next to
   a 1248 one), so nothing lined up and a third card had nowhere to sit.
   Both columns become flex containers with a single 20px rhythm; the
   details card spans the left column, the cards under it share it and
   stretch to the same height.
   ================================================================== */
html .userprojectindex:not(.bs-home-6)>.el-row{display:flex!important;align-items:flex-start;gap:20px;margin:0!important}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col{padding:0!important;float:none!important}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-16{
  display:flex!important;flex-wrap:wrap;gap:20px;align-content:flex-start;width:auto!important;flex:1 1 66%;min-width:0}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-8{
  display:flex!important;flex-direction:column;gap:20px;width:auto!important;flex:1 1 31%;min-width:0}
html .userprojectindex .el-col>.el-card{float:none!important;width:auto!important;margin:0!important}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-16>.el-card{flex:1 1 320px;min-width:0}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-16>.el-card:first-child{flex:1 1 100%}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-16>.el-card:not(:first-child){min-height:320px}
html .userprojectindex:not(.bs-home-6)>.el-row>.el-col-8>.el-card{min-height:180px}
html .userprojectindex .el-card__body{box-sizing:border-box;height:100%}

/* ---- the issue list card ---- */
#bs-iss .el-card__body{display:flex;flex-direction:column;padding:18px 20px}
.bs-iss-h{display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid #ebeef5;margin-bottom:6px}
.bs-iss-t{font-size:15px;font-weight:600;color:#303133}
.bs-iss-n{min-width:20px;height:18px;padding:0 6px;border-radius:9px;background:#eef2f8;
  color:#5b6b80;font-size:11px;line-height:18px;text-align:center}
.bs-iss-all{margin-left:auto;font-size:12px;color:#1266c9;cursor:pointer;text-decoration:none}
.bs-iss-all:hover{text-decoration:underline}
.bs-iss-b{flex:1;min-height:0;overflow:auto;margin:0 -8px}
.bs-iss-row{padding:9px 8px;border-radius:8px;cursor:pointer}
.bs-iss-row:hover{background:#f5f8fc}
.bs-iss-line{display:flex;align-items:center;gap:8px}
.bs-iss-desc{flex:1;min-width:0;font-size:13px;color:#303133;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-iss-st{flex:0 0 auto;font-size:11px;line-height:18px;padding:0 8px;border-radius:10px;
  border:1px solid #dcdfe6;color:#606266;background:#fafafa}
.bs-iss-st.bs-todo{border-color:#f0d5a8;background:#fdf6ec;color:#b4741a}
.bs-iss-st.bs-ok{border-color:#cfe3d4;background:#f2f8f4;color:#3a7d52}
.bs-iss-meta{margin-top:2px;font-size:11px;color:#9aa3ad;display:flex;gap:8px}
.bs-iss-meta i{margin-left:auto;font-style:normal}
.bs-iss-none{flex:1;display:flex;align-items:center;justify-content:center;color:#a8abb2;font-size:13px}

/* ==================================================================
   v1.64 - the home page as one 12-column grid
   Issue list beside the project details (same height), to-do under it
   against the second row. Both el-cols are display:contents, so all six
   cards are grid items of the same grid and the rows line up.
   ================================================================== */
html .userprojectindex.bs-home-6>.el-row{
  display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px;align-items:stretch;margin:0!important}
html .userprojectindex.bs-home-6>.el-row>.el-col{display:contents!important}
html .userprojectindex.bs-home-6 .el-card{margin:0!important;width:auto!important;float:none!important;min-width:0}
html .userprojectindex.bs-home-6 [data-bs-card="details"]{grid-area:1/1/2/10}
html .userprojectindex.bs-home-6 [data-bs-card="iss"]    {grid-area:1/10/2/13}
html .userprojectindex.bs-home-6 [data-bs-card="notice"] {grid-area:2/1/3/4}
html .userprojectindex.bs-home-6 [data-bs-card="work"]   {grid-area:2/4/3/7}
html .userprojectindex.bs-home-6 [data-bs-card="doc"]    {grid-area:2/7/3/10}
html .userprojectindex.bs-home-6 [data-bs-card="todo"]   {grid-area:2/10/3/13}
html .userprojectindex.bs-home-6>.el-row>.el-col>*{align-self:stretch!important}
/* Element's clearfix pseudo-elements become grid items and open a third row */
html .userprojectindex.bs-home-6>.el-row::before,
html .userprojectindex.bs-home-6>.el-row::after{display:none!important}
/* the two activity panels carry an inline height from the app - drop it so
   they can stretch to the row like everything else */
html .userprojectindex.bs-home-6 [data-bs-card="work"],
html .userprojectindex.bs-home-6 [data-bs-card="doc"]{height:auto!important}
/* v1.66: the work-activity panel carries a 20px bottom margin from the app,
   which ate exactly that much off its stretched height - the one card in the
   row whose bottom edge did not line up */
html .userprojectindex.bs-home-6>.el-row>.el-col>*{margin:0!important}
html .userprojectindex.bs-home-6 [data-bs-card="work"]>*,
html .userprojectindex.bs-home-6 [data-bs-card="doc"]>*{
  flex:1 1 auto!important;min-height:0;height:auto!important}
/* the four parties read exactly like the card's own facts */
.bs-pd-x p{margin:0}
.bs-pd-x p:first-child{font-size:11.5px;font-weight:500;color:#8b95a5;margin-bottom:3px}
.bs-pd-x p:last-child{font-size:13.5px;font-weight:600;color:#18212e;line-height:1.35;
  overflow-wrap:anywhere}
html .userprojectindex.bs-home-6 [data-bs-card="notice"],
html .userprojectindex.bs-home-6 [data-bs-card="work"],
html .userprojectindex.bs-home-6 [data-bs-card="doc"],
html .userprojectindex.bs-home-6 [data-bs-card="todo"]{min-height:300px}

/* ---- the project details card, rebuilt ---- */
[data-bs-card="details"] .el-card__body{padding:20px 24px}
[data-bs-card="details"] .textP.el-col-8{display:flex!important;flex-direction:column}
[data-bs-card="details"] .textP.el-col-8>img{
  width:100%!important;flex:1 1 auto;height:auto!important;min-height:230px;object-fit:cover;
  border-radius:12px;border:1px solid #eef1f5;box-sizing:border-box}
/* the two activity panels are wrapped in plain divs - make them fill their slot */
html .userprojectindex.bs-home-6 [data-bs-card="work"],
html .userprojectindex.bs-home-6 [data-bs-card="doc"]{display:flex;flex-direction:column}
html .userprojectindex.bs-home-6 [data-bs-card="work"]>*,
html .userprojectindex.bs-home-6 [data-bs-card="doc"]>*{flex:1 1 auto;min-height:0}
[data-bs-card="details"] .textP.el-col-16>.el-row>.MarginB20>.el-row{
  display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 26px}
[data-bs-card="details"] .textP.el-col-16>.el-row>.MarginB20>.el-row>.el-col{display:contents!important}
[data-bs-card="details"] .textP.el-col-16>.el-row>.MarginB20>.el-row .MarginB20{margin:0!important}
.bs-pd-off{display:none!important}
/* the description reads as a note, not as a form field */
[data-bs-card="details"] .el-textarea__inner{
  border:1px solid transparent!important;background:#f6f8fb!important;border-radius:10px!important;
  padding:12px 14px!important;font-size:13px!important;color:#5b6b80!important;resize:none!important;
  min-height:80px!important;max-height:120px!important;line-height:1.55!important;box-shadow:none!important}
[data-bs-card="details"] .el-textarea__inner:focus{
  background:#fff!important;border-color:#c6d9f0!important}

/* ---- headline + countdown ---- */
.bs-pd{margin:0 0 18px;padding-bottom:16px;border-bottom:1px solid #eef1f5}
.bs-pd-top{display:flex;align-items:flex-start;gap:20px}
.bs-pd-id{flex:1;min-width:0}
.bs-pd-name{font-size:22px;font-weight:600;letter-spacing:-.01em;color:#16202c;line-height:1.2}
.bs-pd-sub{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:7px}
.bs-pd-no{font-size:11.5px;letter-spacing:.04em;color:#5b6b80;background:#eef2f8;border-radius:5px;padding:2px 8px}
.bs-pd-addr{font-size:12.5px;color:#8b95a5}
.bs-pd-cd{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-width:118px;padding:9px 16px;border-radius:12px;background:#f4f8fd;border:1px solid #e2ecf8}
.bs-pd-cd b{font-size:26px;font-weight:600;line-height:1;color:#1d5fb0}
.bs-pd-cd span{margin-top:5px;font-size:11px;color:#7d8ea3;white-space:nowrap}
.bs-pd-cd.bs-soon{background:#fdf7ee;border-color:#f2e0c4}
.bs-pd-cd.bs-soon b{color:#b4741a}
.bs-pd-cd.bs-over{background:#fdf1f0;border-color:#f3d3d0}
.bs-pd-cd.bs-over b{color:#c0392b}
.bs-pd-bar{margin-top:16px;height:6px;border-radius:3px;background:#eef1f5;overflow:hidden}
.bs-pd-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#2f7fe0,#1d5fb0)}
.bs-pd-bar.bs-soon i{background:linear-gradient(90deg,#e8a33d,#c9852a)}
.bs-pd-bar.bs-over i{background:linear-gradient(90deg,#e06a5f,#c0392b)}
.bs-pd-dates{display:flex;align-items:center;justify-content:space-between;margin-top:6px;font-size:11px;color:#9aa3ad}
.bs-pd-dates em{font-style:normal;color:#5b6b80}
