:root,:host{--w-e-textarea-bg-color: #fff;--w-e-textarea-color: #333;--w-e-textarea-border-color: #ccc;--w-e-textarea-slight-border-color: #e8e8e8;--w-e-textarea-slight-color: #d4d4d4;--w-e-textarea-slight-bg-color: #f5f2f0;--w-e-textarea-selected-border-color: #B4D5FF;--w-e-textarea-handler-bg-color: #4290f7;--w-e-toolbar-color: #595959;--w-e-toolbar-bg-color: #fff;--w-e-toolbar-active-color: #333;--w-e-toolbar-active-bg-color: #f1f1f1;--w-e-toolbar-disabled-color: #999;--w-e-toolbar-border-color: #e8e8e8;--w-e-modal-button-bg-color: #fafafa;--w-e-modal-button-border-color: #d9d9d9}.w-e-text-container *,.w-e-toolbar *{box-sizing:border-box;margin:0;outline:none;padding:0}.w-e-text-container blockquote,.w-e-text-container li,.w-e-text-container p,.w-e-text-container td,.w-e-text-container th,.w-e-toolbar *{line-height:1.5}.w-e-text-container{background-color:var(--w-e-textarea-bg-color);color:var(--w-e-textarea-color);height:100%;position:relative}.w-e-text-container .w-e-scroll{-webkit-overflow-scrolling:touch;height:100%}.w-e-text-container [data-slate-editor]{word-wrap:break-word;border-top:1px solid transparent;min-height:100%;outline:0;padding:0 10px;white-space:pre-wrap}.w-e-text-container [data-slate-editor] p{margin:15px 0}.w-e-text-container [data-slate-editor] h1,.w-e-text-container [data-slate-editor] h2,.w-e-text-container [data-slate-editor] h3,.w-e-text-container [data-slate-editor] h4,.w-e-text-container [data-slate-editor] h5{margin:20px 0}.w-e-text-container [data-slate-editor] img{cursor:default;display:inline!important;max-width:100%;min-height:20px;min-width:20px}.w-e-text-container [data-slate-editor] span{text-indent:0}.w-e-text-container [data-slate-editor] [data-selected=true]{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-placeholder{font-style:italic;left:10px;top:17px;width:90%}.w-e-max-length-info,.w-e-text-placeholder{color:var(--w-e-textarea-slight-color);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.w-e-max-length-info{bottom:.5em;right:1em}.w-e-bar{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-color);font-size:14px;padding:0 5px}.w-e-bar svg{fill:var(--w-e-toolbar-color);height:14px;width:14px}.w-e-bar-show{display:flex}.w-e-bar-hidden{display:none}.w-e-hover-bar{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 5px #0000001f;position:absolute}.w-e-toolbar{flex-wrap:wrap;position:relative}.w-e-bar-divider{background-color:var(--w-e-toolbar-border-color);display:inline-flex;height:40px;margin:0 5px;width:1px}.w-e-bar-item{display:flex;height:40px;padding:4px;position:relative;text-align:center}.w-e-bar-item,.w-e-bar-item button{align-items:center;justify-content:center}.w-e-bar-item button{background:transparent;border:none;color:var(--w-e-toolbar-color);cursor:pointer;display:inline-flex;height:32px;overflow:hidden;padding:0 8px;white-space:nowrap}.w-e-bar-item button:hover{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item button .title{margin-left:5px}.w-e-bar-item .active{background-color:var(--w-e-toolbar-active-bg-color);color:var(--w-e-toolbar-active-color)}.w-e-bar-item .disabled{color:var(--w-e-toolbar-disabled-color);cursor:not-allowed}.w-e-bar-item .disabled svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover{background-color:var(--w-e-toolbar-bg-color);color:var(--w-e-toolbar-disabled-color)}.w-e-bar-item .disabled:hover svg{fill:var(--w-e-toolbar-disabled-color)}.w-e-menu-tooltip-v5:before{background-color:var(--w-e-toolbar-active-color);border-radius:5px;color:var(--w-e-toolbar-bg-color);content:attr(data-tooltip);font-size:.75em;opacity:0;padding:5px 10px;position:absolute;text-align:center;top:40px;transition:opacity .6s;visibility:hidden;white-space:pre;z-index:1}.w-e-menu-tooltip-v5:after{border:5px solid transparent;border-bottom:5px solid var(--w-e-toolbar-active-color);content:"";opacity:0;position:absolute;top:30px;transition:opacity .6s;visibility:hidden}.w-e-menu-tooltip-v5:hover:after,.w-e-menu-tooltip-v5:hover:before{opacity:1;visibility:visible}.w-e-menu-tooltip-v5.tooltip-right:before{left:100%;top:10px}.w-e-menu-tooltip-v5.tooltip-right:after{border-bottom-color:transparent;border-left-color:transparent;border-right-color:var(--w-e-toolbar-active-color);border-top-color:transparent;left:100%;margin-left:-10px;top:16px}.w-e-bar-item-group .w-e-bar-item-menus-container{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;display:none;left:0;margin-top:40px;position:absolute;top:0;z-index:1}.w-e-bar-item-group:hover .w-e-bar-item-menus-container{display:block}.w-e-select-list{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;left:0;margin-top:40px;max-height:350px;min-width:100px;overflow-y:auto;position:absolute;top:0;z-index:1}.w-e-select-list ul{line-height:1;list-style:none}.w-e-select-list ul .selected{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li{cursor:pointer;padding:7px 0 7px 25px;position:relative;text-align:left;white-space:nowrap}.w-e-select-list ul li:hover{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-select-list ul li svg{left:0;margin-left:5px;margin-top:-7px;position:absolute;top:50%}.w-e-bar-bottom .w-e-select-list{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-drop-panel{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;margin-top:40px;min-width:200px;padding:10px;position:absolute;top:0;z-index:1}.w-e-bar-bottom .w-e-drop-panel{bottom:0;margin-bottom:40px;margin-top:0;top:inherit}.w-e-modal{background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;box-shadow:0 2px 10px #0000001f;color:var(--w-e-toolbar-color);font-size:14px;min-height:40px;min-width:100px;padding:20px 15px 0;position:absolute;text-align:left;z-index:1}.w-e-modal .btn-close{cursor:pointer;line-height:1;padding:5px;position:absolute;right:8px;top:7px}.w-e-modal .btn-close svg{fill:var(--w-e-toolbar-color);height:10px;width:10px}.w-e-modal .babel-container{display:block;margin-bottom:15px}.w-e-modal .babel-container span{display:block;margin-bottom:10px}.w-e-modal .button-container{margin-bottom:15px}.w-e-modal button{background-color:var(--w-e-modal-button-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);cursor:pointer;font-weight:400;height:32px;padding:4.5px 15px;text-align:center;touch-action:manipulation;transition:all .3s cubic-bezier(.645,.045,.355,1);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.w-e-modal input[type=number],.w-e-modal input[type=text],.w-e-modal textarea{font-feature-settings:"tnum";background-color:var(--w-e-toolbar-bg-color);border:1px solid var(--w-e-modal-button-border-color);border-radius:4px;color:var(--w-e-toolbar-color);font-variant:tabular-nums;padding:4.5px 11px;transition:all .3s;width:100%}.w-e-modal textarea{min-height:60px}body .w-e-modal,body .w-e-modal *{box-sizing:border-box}.w-e-progress-bar{background-color:var(--w-e-textarea-handler-bg-color);height:1px;position:absolute;transition:width .3s;width:0}.w-e-full-screen-container{bottom:0!important;display:flex!important;flex-direction:column!important;height:100%!important;left:0!important;margin:0!important;padding:0!important;position:fixed;right:0!important;top:0!important;width:100%!important}.w-e-full-screen-container [data-w-e-textarea=true]{flex:1!important}.w-e-text-container [data-slate-editor] code{background-color:var(--w-e-textarea-slight-bg-color);border-radius:3px;font-family:monospace;padding:3px}.w-e-panel-content-color{list-style:none;text-align:left;width:230px}.w-e-panel-content-color li{border:1px solid var(--w-e-toolbar-bg-color);border-radius:3px;cursor:pointer;display:inline-block;padding:2px}.w-e-panel-content-color li:hover{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color li .color-block{border:1px solid var(--w-e-toolbar-border-color);border-radius:3px;height:17px;width:17px}.w-e-panel-content-color .active{border-color:var(--w-e-toolbar-color)}.w-e-panel-content-color .clear{line-height:1.5;margin-bottom:5px;width:100%}.w-e-panel-content-color .clear svg{height:16px;margin-bottom:-4px;width:16px}.w-e-text-container [data-slate-editor] blockquote{background-color:var(--w-e-textarea-slight-bg-color);border-left:8px solid var(--w-e-textarea-selected-border-color);display:block;font-size:100%;line-height:1.5;margin:10px 0;padding:10px}.w-e-panel-content-emotion{font-size:20px;list-style:none;text-align:left;width:300px}.w-e-panel-content-emotion li{border-radius:3px;cursor:pointer;display:inline-block;padding:0 5px}.w-e-panel-content-emotion li:hover{background-color:var(--w-e-textarea-slight-bg-color)}.w-e-textarea-divider{border-radius:3px;margin:20px auto;padding:20px}.w-e-textarea-divider hr{background-color:var(--w-e-textarea-border-color);border:0;display:block;height:1px}.w-e-text-container [data-slate-editor] pre>code{background-color:var(--w-e-textarea-slight-bg-color);border:1px solid var(--w-e-textarea-slight-border-color);border-radius:4px;display:block;font-size:14px;padding:10px;text-indent:0}.w-e-text-container [data-slate-editor] .w-e-image-container{display:inline-block;margin:0 3px}.w-e-text-container [data-slate-editor] .w-e-image-container:hover{box-shadow:0 0 0 2px var(--w-e-textarea-selected-border-color)}.w-e-text-container [data-slate-editor] .w-e-selected-image-container{overflow:hidden;position:relative}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .w-e-image-dragger{background-color:var(--w-e-textarea-handler-bg-color);height:7px;position:absolute;width:7px}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-top{cursor:nwse-resize;left:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-top{cursor:nesw-resize;right:0;top:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .left-bottom{bottom:0;cursor:nesw-resize;left:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container .right-bottom{bottom:0;cursor:nwse-resize;right:0}.w-e-text-container [data-slate-editor] .w-e-selected-image-container:hover,.w-e-text-container [contenteditable=false] .w-e-image-container:hover{box-shadow:none}.w-e-text-container [data-slate-editor] .table-container{border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin-top:10px;overflow-x:auto;padding:10px;width:100%}.w-e-text-container [data-slate-editor] table{border-collapse:collapse}.w-e-text-container [data-slate-editor] table td,.w-e-text-container [data-slate-editor] table th{border:1px solid var(--w-e-textarea-border-color);line-height:1.5;min-width:30px;padding:3px 5px;text-align:left}.w-e-text-container [data-slate-editor] table th{background-color:var(--w-e-textarea-slight-bg-color);font-weight:700;text-align:center}.w-e-panel-content-table{background-color:var(--w-e-toolbar-bg-color)}.w-e-panel-content-table table{border-collapse:collapse}.w-e-panel-content-table td{border:1px solid var(--w-e-toolbar-border-color);cursor:pointer;height:15px;padding:3px 5px;width:20px}.w-e-panel-content-table td.active{background-color:var(--w-e-toolbar-active-bg-color)}.w-e-textarea-video-container{background-image:linear-gradient(45deg,#eee 25%,transparent 0,transparent 75%,#eee 0,#eee),linear-gradient(45deg,#eee 25%,#fff 0,#fff 75%,#eee 0,#eee);background-position:0 0,10px 10px;background-size:20px 20px;border:1px dashed var(--w-e-textarea-border-color);border-radius:5px;margin:10px auto 0;padding:10px 0;text-align:center}.w-e-text-container [data-slate-editor] pre>code{word-wrap:normal;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;-webkit-hyphens:none;hyphens:none;line-height:1.5;margin:.5em 0;overflow:auto;padding:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;text-align:left;text-shadow:0 1px #fff;white-space:pre;word-break:normal;word-spacing:normal}.w-e-text-container [data-slate-editor] pre>code .token.cdata,.w-e-text-container [data-slate-editor] pre>code .token.comment,.w-e-text-container [data-slate-editor] pre>code .token.doctype,.w-e-text-container [data-slate-editor] pre>code .token.prolog{color:#708090}.w-e-text-container [data-slate-editor] pre>code .token.punctuation{color:#999}.w-e-text-container [data-slate-editor] pre>code .token.namespace{opacity:.7}.w-e-text-container [data-slate-editor] pre>code .token.boolean,.w-e-text-container [data-slate-editor] pre>code .token.constant,.w-e-text-container [data-slate-editor] pre>code .token.deleted,.w-e-text-container [data-slate-editor] pre>code .token.number,.w-e-text-container [data-slate-editor] pre>code .token.property,.w-e-text-container [data-slate-editor] pre>code .token.symbol,.w-e-text-container [data-slate-editor] pre>code .token.tag{color:#905}.w-e-text-container [data-slate-editor] pre>code .token.attr-name,.w-e-text-container [data-slate-editor] pre>code .token.builtin,.w-e-text-container [data-slate-editor] pre>code .token.char,.w-e-text-container [data-slate-editor] pre>code .token.inserted,.w-e-text-container [data-slate-editor] pre>code .token.selector,.w-e-text-container [data-slate-editor] pre>code .token.string{color:#690}.w-e-text-container [data-slate-editor] pre>code .language-css .token.string,.w-e-text-container [data-slate-editor] pre>code .style .token.string,.w-e-text-container [data-slate-editor] pre>code .token.entity,.w-e-text-container [data-slate-editor] pre>code .token.operator,.w-e-text-container [data-slate-editor] pre>code .token.url{color:#9a6e3a}.w-e-text-container [data-slate-editor] pre>code .token.atrule,.w-e-text-container [data-slate-editor] pre>code .token.attr-value,.w-e-text-container [data-slate-editor] pre>code .token.keyword{color:#07a}.w-e-text-container [data-slate-editor] pre>code .token.class-name,.w-e-text-container [data-slate-editor] pre>code .token.function{color:#dd4a68}.w-e-text-container [data-slate-editor] pre>code .token.important,.w-e-text-container [data-slate-editor] pre>code .token.regex,.w-e-text-container [data-slate-editor] pre>code .token.variable{color:#e90}.w-e-text-container [data-slate-editor] pre>code .token.bold,.w-e-text-container [data-slate-editor] pre>code .token.important{font-weight:700}.w-e-text-container [data-slate-editor] pre>code .token.italic{font-style:italic}.w-e-text-container [data-slate-editor] pre>code .token.entity{cursor:help}.ge-page{display:flex;flex-direction:column;gap:16px}.ge-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 4px}.ge-toolbar-right{justify-content:flex-end}.ge-title{font-size:18px;font-weight:700;color:#1f2d2a;min-width:240px;text-align:center}.ge-legend{font-size:12px;color:#666;display:inline-flex;align-items:center;margin-right:6px}.ge-legend i{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:6px}.ge-container{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;background:#fff}.ge-week+.ge-week{border-top:6px solid #f3f4f6}.ge-header{display:flex;background:#fafafa;border-bottom:1px solid #e5e7eb}.ge-row{display:flex;border-top:1px solid #f0f0f0;min-height:40px}.ge-row:first-child{border-top:none}.ge-row-label{width:160px;flex-shrink:0;display:flex;align-items:center;padding:0 14px;background:#fafafa;border-right:1px solid #e5e7eb;font-weight:600;font-size:13px;color:#1f2d2a}.ge-header-label{font-weight:700;color:#888;font-size:12px}.ge-row-cells{flex:1;display:grid;grid-template-columns:repeat(7,1fr);position:relative;min-height:40px}.ge-date-cell{padding:8px 10px;text-align:left;border-right:1px solid #eee;background:#fafafa}.ge-date-cell:last-child{border-right:none}.ge-week-label{font-size:12px;color:#999}.ge-day-label{font-size:13px;color:#333;font-weight:600}.ge-day-label.out{color:#ccc;font-weight:400}.ge-date-cell.today .ge-day-label{color:#2f5d50}.ge-date-cell.today{background:#f0f8f4}.ge-cell{border-right:1px solid #f3f4f6;height:100%;cursor:pointer}.ge-cell:last-child{border-right:none}.ge-cell:hover{background:#f9fafb}.ge-cell-out{background:#fbfbfb}.ge-bar{position:absolute;top:6px;height:22px;border-radius:6px;display:flex;align-items:center;padding:0 10px;font-size:12px;font-weight:600;color:#1f2d2a;cursor:pointer;box-shadow:0 1px 2px #0000000f;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease}.ge-bar:hover{transform:translateY(-1px);box-shadow:0 4px 10px #0000001f}.ge-bar-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ge-empty{padding:60px;text-align:center;color:#999}.ge-export-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.ge-export-title{font-size:16px;font-weight:700;color:#1f2d2a}.ge-export-title-input{width:420px;max-width:100%;font-weight:700}.ge-export-sub{margin-top:4px;font-size:12px;color:#7a807e}.ge-export-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;max-height:460px;overflow:auto;padding:2px 2px 8px}.ge-export-card{box-sizing:border-box;width:100%;min-height:78px;display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;text-align:left;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.ge-export-card:hover{border-color:#91caff;box-shadow:0 4px 14px #1890ff1a}.ge-export-card.selected{border-color:#2f5d50;background:#f0f8f4;box-shadow:inset 0 0 0 1px #2f5d502e}.ge-export-card-check{flex-shrink:0;padding-top:1px}.ge-export-card-body{min-width:0;display:flex;flex-direction:column;gap:6px}.ge-export-card-name{color:#1f2d2a;font-size:14px;font-weight:700;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ge-export-card-meta{color:#7a807e;font-size:12px;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ge-type-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.ge-type-swatch{display:inline-block;width:24px;height:24px;border-radius:6px;border:1px solid rgba(0,0,0,.12)}.ge-color-input{width:84px;height:40px;padding:4px}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,Arial,sans-serif;background:#f5f6f8}.admin-shell,.admin-sidebar{min-height:100vh}.admin-brand{color:#fff;font-size:18px;font-weight:700;padding:20px}.admin-header{background:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 20px;position:sticky;top:0;z-index:20}.admin-header-main{display:flex;align-items:center;gap:10px;min-width:0}.admin-content{margin:20px;background:#fff;padding:20px;border-radius:8px;min-width:0}.admin-mobile-drawer .ant-drawer-content{background:#001529}.database-backups-page{min-width:0}.database-backups-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}.dashboard-page{min-width:0}.dashboard-page-head,.dashboard-section-head{margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.dashboard-section-head{margin-bottom:12px}.dashboard-controls{justify-content:flex-end}.dashboard-stat-card{height:100%}.dashboard-stat-card .ant-card-body{padding:16px}.dashboard-stat-card .ant-statistic-title{min-height:44px;margin-bottom:6px;line-height:1.35}.dashboard-stat-card .ant-statistic-content{font-size:22px;line-height:1.2;white-space:nowrap}.dashboard-tabs .ant-tabs-nav{margin-bottom:16px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1f2d2a,#3c4a44)}.login-card{width:360px;padding:32px;background:#fffffff2;border-radius:16px;box-shadow:0 30px 60px #0003}.login-title{font-size:22px;font-weight:700;margin-bottom:4px;color:#1f2d2a}.login-subtitle{color:#888;margin-bottom:24px;font-size:13px}.wall-routes-page{min-width:0}.wall-routes-head{margin-bottom:16px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.wall-routes-title{display:flex;align-items:flex-start;gap:12px;min-width:0}.entry-breadcrumb{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:16px;font-size:13px}.entry-breadcrumb .crumb{border:0;background:transparent;padding:2px 4px;cursor:pointer;color:#5a6b64;border-radius:4px;transition:background .15s,color .15s}.entry-breadcrumb .crumb:hover{background:#eef4f1;color:#2f5d50}.entry-breadcrumb .crumb.active{color:#17211d;font-weight:600;cursor:default}.entry-breadcrumb .crumb-sep{color:#c2cbc6}.entry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.gym-entry-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.scene-entry-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start}.entry-grid-empty{grid-column:1 / -1;padding:40px 0}.entry-card{position:relative;display:flex;flex-direction:column;text-align:left;padding:0;border:1px solid #eaedf0;background:#fff;border-radius:12px;overflow:hidden;cursor:pointer;transition:border-color .18s,box-shadow .18s,transform .18s}.entry-card:hover{border-color:#b8c9c3;box-shadow:0 8px 24px #1f2d281f;transform:translateY(-2px)}.entry-cover{height:132px;background-size:cover;background-position:center;background-color:#f0f2f4}.entry-cover-empty{display:flex;align-items:center;justify-content:center;font-size:32px;color:#b9c2bd}.entry-body{padding:12px 14px 14px;display:flex;flex-direction:column;gap:6px}.entry-title{display:flex;align-items:center;gap:6px;color:#17211d;font-size:14px;font-weight:700;line-height:1.35;word-break:break-word}.entry-sub{color:#7a8288;font-size:12px;line-height:1.45}.entry-sub-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-chip{display:inline-flex;align-items:center;gap:4px}.entry-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px;color:#8a9399;font-size:12px}.entry-actions{display:flex;gap:2px;margin-top:4px;opacity:0;transition:opacity .15s}.entry-card:hover .entry-actions{opacity:1}.gym-entry-card{border-radius:8px;overflow:visible}.gym-entry-card .entry-body{min-height:76px;padding:12px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.gym-entry-card.has-routes{border-color:#d9e9e2;box-shadow:inset 3px 0 #2f5d50}.gym-entry-card.empty-routes{background:#fbfcfc}.gym-entry-main{min-width:0;display:flex;flex-direction:column;gap:5px}.gym-entry-main .entry-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gym-entry-stats{display:flex;flex-direction:column;align-items:flex-end;gap:4px;color:#8a9399;font-size:12px;white-space:nowrap}.gym-entry-stats .hot{color:#2f5d50;font-weight:700}.entry-chip.muted{color:#a0a8ad}.entry-card-add{align-items:center;justify-content:center;gap:8px;min-height:200px;border-style:dashed;color:#2f5d50;font-size:14px;font-weight:600}.entry-card-add .anticon{font-size:26px}.entry-card-compact{min-height:auto}.entry-card-compact .entry-body{min-height:88px;padding:12px}.scene-entry-grid .entry-card{border-radius:10px}.scene-card-add{min-height:112px;font-size:13px}.scene-card-add .anticon{font-size:22px}@media (max-width: 1500px){.gym-entry-grid,.scene-entry-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1100px){.gym-entry-grid,.scene-entry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.gym-entry-grid,.scene-entry-grid{grid-template-columns:1fr}}.route-color-dot{width:12px;height:12px;border-radius:50%;flex:none;border:1px solid rgba(0,0,0,.16);box-shadow:inset 0 0 0 1px #ffffff80}.route-color-dot.transparent{background:linear-gradient(45deg,#c9ced6 25%,transparent 25%),linear-gradient(-45deg,#c9ced6 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#c9ced6 75%),linear-gradient(-45deg,transparent 75%,#c9ced6 75%)!important;background-color:#fff!important;background-size:8px 8px!important;background-position:0 0,0 4px,4px -4px,-4px 0!important}.route-color-option{display:inline-flex;align-items:center;gap:8px;line-height:1;vertical-align:middle}.route-color-swatch{width:16px;height:16px;display:inline-flex;flex:none;border-radius:50%;border:1px solid rgba(0,0,0,.18);box-shadow:inset 0 0 0 1px #ffffff59}.route-color-swatch.transparent{background:linear-gradient(45deg,#c9ced6 25%,transparent 25%),linear-gradient(-45deg,#c9ced6 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#c9ced6 75%),linear-gradient(-45deg,transparent 75%,#c9ced6 75%);background-color:#fff;background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0}.scene-images{display:flex;flex-wrap:wrap;gap:12px}.scene-image-item{display:flex;flex-direction:column;gap:4px;width:120px}.scene-image-meta{display:flex;align-items:center;justify-content:space-between;gap:4px;font-size:12px;color:#8a9399;min-height:24px}.scene-image-meta .ant-btn{padding:0;height:auto;font-size:12px}.scene-image-add{justify-content:center}.route-editor{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;background:#0f141c;overflow:hidden}.editor-canvas-wrap{position:absolute;top:0;right:0;bottom:0;left:0;background:#111827}.editor-topbar{position:absolute;top:14px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 14px;border-radius:16px;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000002e;z-index:10}.editor-topbar-left,.editor-topbar-right{display:flex;align-items:center;gap:10px;min-width:0}.editor-topbar-left{flex:1 1 0;overflow:hidden}.editor-topbar-right{flex:1 1 0;justify-content:flex-end}.editor-route-title{display:flex;align-items:center;gap:6px;min-width:0}.editor-route-name{font-weight:700;color:#17211d;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editor-breadcrumb{color:#8a9399;font-size:12px}.editor-left{position:absolute;top:72px;left:14px;bottom:72px;width:300px;display:flex;flex-direction:column;gap:12px;z-index:10}.editor-routes,.editor-layers{display:flex;flex-direction:column;min-height:0;flex:1 1 50%;border-radius:18px;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000002e;overflow:hidden}.editor-routes-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #eef1f3;font-weight:600;color:#17211d;font-size:13px;flex:none}.editor-routes-list,.editor-layers .hold-layer-list{flex:1;min-height:0;max-height:none;overflow-y:auto;padding:8px 8px 12px;scrollbar-width:thin}.editor-route-item{position:relative;display:flex;align-items:center;gap:8px;min-height:44px;padding:6px 8px 6px 10px;border-radius:12px;cursor:pointer;transition:background .15s}.editor-route-item:hover{background:#f1f5f3}.editor-route-item.active{background:#e6f2ec;box-shadow:inset 2px 0 #2f5d50}.editor-route-item .route-color-dot{width:14px;height:14px;margin-top:3px}.editor-route-item-main{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding-right:52px}.editor-route-item-title{font-size:14px;font-weight:700;color:#2f3a35;min-width:52px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.editor-route-item-sub{font-size:11px;color:#8a9399;display:flex;align-items:center;flex-wrap:nowrap;gap:5px;line-height:1.2;min-width:0;overflow:hidden}.route-mini-chip{display:inline-flex;align-items:center;height:22px;padding:0 7px;border-radius:999px;background:#2f5d501a;color:#2f5d50;font-weight:700;white-space:nowrap}.route-mini-chip.muted{background:#f1f4f2;color:#7d8882;font-weight:600}.editor-route-item-actions{position:absolute;right:8px;top:9px;display:flex;opacity:0;transition:opacity .15s}.editor-route-item:hover .editor-route-item-actions,.editor-route-item.active .editor-route-item-actions{opacity:1}.editor-routes-empty{padding:16px 10px;color:#9aa3a8;font-size:12px;line-height:1.6;text-align:center}.editor-tools{display:flex;align-items:center;gap:4px;flex:none}.editor-tools .ant-btn{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center}.editor-tool-divider{width:1px;height:22px;margin:0 5px;background:#e6e9ec}.editor-tool-hover{position:relative;display:flex}.editor-smart-flyout{position:absolute;top:calc(100% + 12px);left:50%;width:240px;padding:12px 14px;border-radius:14px;background:#fffffff7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0003;z-index:12;opacity:0;visibility:hidden;transform:translate(-50%) translateY(-8px) scale(.96);transform-origin:top center;transition:opacity .18s ease,transform .18s cubic-bezier(.22,.61,.36,1),visibility 0s linear .18s}.editor-smart-flyout.open{opacity:1;visibility:visible;transform:translate(-50%) translateY(0) scale(1);transition:opacity .18s ease,transform .2s cubic-bezier(.22,.61,.36,1)}.editor-smart-flyout-title{font-weight:700;color:#17211d;font-size:13px}.editor-smart-flyout-hint{color:#7a8288;font-size:12px;margin:4px 0 10px;line-height:1.5}.editor-smart-flyout-label{color:#5a6b64;font-size:12px;margin-bottom:2px}@keyframes edFade{0%{opacity:0}to{opacity:1}}@keyframes edDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes edLeft{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes edRight{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}@keyframes edToolbar{0%{opacity:0;transform:translateY(-50%) translate(-12px)}to{opacity:1;transform:translateY(-50%) translate(0)}}@keyframes edBottom{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes edImages{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes edHint{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.route-editor{animation:edFade .2s ease both}.editor-topbar{animation:edDown .26s cubic-bezier(.22,.61,.36,1) both}.editor-left{animation:edLeft .26s cubic-bezier(.22,.61,.36,1) both}.editor-panel{animation:edRight .26s cubic-bezier(.22,.61,.36,1) both}.editor-bottombar{animation:edBottom .26s cubic-bezier(.22,.61,.36,1) both}.editor-images{animation:edImages .26s cubic-bezier(.22,.61,.36,1) both}.editor-canvas-hint{animation:edHint .22s ease both}@media (prefers-reduced-motion: reduce){.route-editor,.editor-topbar,.editor-left,.editor-panel,.editor-bottombar,.editor-images,.editor-canvas-hint,.editor-smart-flyout{animation:none!important;transition:none!important}}.editor-panel{position:absolute;top:72px;right:14px;bottom:72px;width:360px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:2px 2px 10px;z-index:10;scrollbar-width:thin}.editor-panel-card{flex:none;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000002e;border-radius:18px;overflow:hidden}.editor-panel-card .ant-card-head{border-radius:18px 18px 0 0}.editor-panel-card .ant-card-body{padding:12px}.editor-panel-card .ant-form-item,.editor-panel-card .route-property-row .ant-form-item{margin-bottom:14px}.editor-panel-card .ant-input,.editor-panel-card .ant-input-number,.editor-panel-card .ant-picker,.editor-panel-card .ant-select-single .ant-select-selector{min-height:38px}.editor-panel-card .ant-select-multiple .ant-select-selector{min-height:38px;align-items:center}.editor-panel-card .ant-select-selection-item{display:inline-flex;align-items:center}.editor-panel-card .ant-input-number-input{height:36px}.editor-bottombar{position:absolute;bottom:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:18px;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000002e;z-index:10}.editor-bottom-group{display:flex;align-items:center;gap:4px}.editor-smart-controls{gap:8px;padding-left:8px;border-left:1px solid #e6e9ec}.editor-smart-label{white-space:nowrap;font-size:12px;color:#5a6b64;font-weight:700}.editor-zoom-value{min-width:42px;text-align:center;font-size:12px;color:#444}.editor-tool-tag{margin:0}.editor-route-switch{display:inline-flex;align-items:center;gap:2px;padding-left:4px;border-left:1px solid #e6e9ec}.editor-route-count{font-size:12px;color:#8a9399;min-width:30px;text-align:center}.editor-canvas-hint{position:absolute;bottom:70px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:#111827c7;color:#ffffffeb;font-size:13px;pointer-events:none;z-index:8}.editor-images{position:absolute;top:72px;left:50%;transform:translate(-50%);display:flex;gap:6px;padding:6px;border-radius:16px;background:#fffffff0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000002e;z-index:10;max-width:calc(100vw - 520px);overflow-x:auto}.editor-image-tab{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 4px;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.editor-image-tab:hover{background:#f1f5f3}.editor-image-tab.active{background:#e6f2ec;border-color:#2f5d50}.editor-image-thumb{width:34px;height:26px;border-radius:4px;background-size:cover;background-position:center;background-color:#e9edf0;flex:none}.editor-image-label{font-size:12px;color:#2f3a35}.editor-image-count{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#2f5d50;color:#fff;font-size:11px;line-height:18px;text-align:center}.editor-image-tab:not(.active) .editor-image-count{background:#b8c2bd}.editor-canvas-hint .kbd{background:#ffffff29;border-color:#ffffff47;color:#fff;min-width:20px;height:20px}.editor-canvas-hint-active{background:#2f5d50eb}.hold-layer-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto}.hold-layer-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:6px;cursor:pointer;transition:background .15s}.hold-layer-item:hover{background:#f1f5f3}.hold-layer-item.active{background:#e6f2ec}.hold-layer-seq{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:#eef1f3;color:#5a6b64;font-size:12px;font-weight:600}.hold-layer-item.type-start .hold-layer-seq{background:#d8f0c4;color:#3f7a1f}.hold-layer-item.type-top .hold-layer-seq{background:#ffe9b0;color:#946b00}.hold-layer-item.active .hold-layer-seq{background:#2f5d50;color:#fff}.hold-layer-name{flex:1;font-size:13px;color:#2f3a35;min-width:0}.annotation-layer-section-title{padding:7px 7px 4px;color:#7d8882;font-size:11px;font-weight:700}.point-layer-item{min-height:34px}.point-layer-item .hold-layer-seq{border-radius:50%;background:#e6f2ec;color:#2f5d50}.point-layer-coord{color:#9aa3a8;font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap}.point-editor-summary{display:flex;align-items:center;gap:8px;color:#6b756f;font-size:12px}.point-editor-summary strong{color:#2f3a35;font-size:14px}.hold-layer-type{flex:1;min-width:0}.hold-layer-type .ant-select{width:100%}.hold-layer-actions{display:flex;gap:0;flex:none;opacity:0;transition:opacity .15s}.hold-layer-item:hover .hold-layer-actions,.hold-layer-item.active .hold-layer-actions{opacity:1}.publish-check{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;font-size:12px}.publish-check-title{color:#5a6b64}.publish-check-item{padding:2px 9px;border-radius:999px;font-weight:600}.publish-check-item.ok{background:#e6f2ec;color:#2f7a4f}.publish-check-item.miss{background:#fdeaea;color:#c0392b}.hold-layer-empty{padding:12px 4px;color:#9aa3a8;font-size:12px;line-height:1.6;text-align:center}.shortcuts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.shortcuts-group-title{font-weight:700;color:#17211d;margin-bottom:8px}.shortcuts-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:4px 0;font-size:13px;color:#5a6b64}.kbd-combo{display:inline-flex;align-items:center;gap:4px}.kbd-plus{color:#aab2ad;font-size:12px}.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border:1px solid #d6dbd8;border-bottom-width:2px;border-radius:6px;background:#f6f8f7;color:#2f3a35;font-size:12px;font-family:inherit}.annotation-canvas{display:block;width:100%;height:100%;touch-action:none}.tool-select .annotation-canvas{cursor:default}.tool-point .annotation-canvas,.tool-polygon .annotation-canvas{cursor:crosshair}.tool-brush .annotation-canvas{cursor:none}.tool-edit .annotation-canvas{cursor:pointer}.tool-pan .annotation-canvas,.space-panning .annotation-canvas{cursor:grab}.tool-pan .annotation-canvas:active,.space-panning .annotation-canvas:active{cursor:grabbing}.tool-delete .annotation-canvas{cursor:not-allowed}.tool-smart .annotation-canvas{cursor:cell}.annotation-empty,.annotation-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#ffffff0a}.route-property-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.property-label{color:#666;font-size:12px;margin-bottom:6px}.hold-info-grid{display:grid;grid-template-columns:88px minmax(0,1fr);gap:8px;padding:10px;background:#f7f8f9;border:1px solid #eef0f2;border-radius:8px;color:#697279}.hold-info-grid strong{color:#17211d;font-weight:700}@media (max-width: 767px){.admin-header{min-height:56px;height:auto;padding:10px 12px}.admin-header .ant-btn{flex:none}.admin-content{margin:10px;padding:12px;border-radius:6px}.dashboard-page-head,.dashboard-section-head{align-items:stretch}.dashboard-page-head>*,.dashboard-section-head>*{width:100%}.dashboard-page-head .ant-btn,.dashboard-controls,.dashboard-controls .ant-space-item,.dashboard-date-picker,.dashboard-range-picker{width:100%}.dashboard-controls{justify-content:stretch}.dashboard-controls .ant-btn{width:100%}.dashboard-stat-grid{margin-left:-6px!important;margin-right:-6px!important}.dashboard-stat-grid>.ant-col{padding-left:6px!important;padding-right:6px!important}.dashboard-stat-card .ant-card-body{padding:12px}.dashboard-stat-card .ant-statistic-title{min-height:38px;font-size:12px}.dashboard-stat-card .ant-statistic-content{font-size:18px}.dashboard-tabs .ant-tabs-nav-wrap{overflow-x:auto}.dashboard-tabs .ant-tabs-tab{padding:10px 0}.ant-card-head{padding:0 12px;min-height:44px}.ant-card-head-title{white-space:normal;line-height:1.35;padding:10px 0}.ant-card-body{padding:12px}.ant-table{font-size:12px}.ant-table-wrapper .ant-table-pagination.ant-pagination{margin:12px 0 0}.login-card{width:calc(100vw - 32px);padding:24px}.route-property-row{grid-template-columns:1fr}.entry-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.editor-panel{width:min(320px,calc(100vw - 28px))}.editor-topbar{flex-wrap:wrap;gap:8px}.editor-route-name{max-width:140px}}
