:root{--navy-900: #081729;--navy-800: #0b1f3a;--navy-700: #102a4d;--navy-600: #16355f;--blue-600: #1d5bd6;--blue-500: #2f6ff0;--blue-100: #dce8fb;--blue-050: #eef4fd;--teal-600: #0e9488;--amber-500: #e8a33d;--red-500: #d64550;--ink-900: #17273c;--ink-700: #33475f;--ink-500: #5b6b80;--ink-300: #93a1b3;--line: #dfe6ef;--bg: #f2f5f9;--card: #ffffff;--radius: 12px;--shadow: 0 1px 2px rgba(15, 32, 60, .05), 0 4px 16px rgba(15, 32, 60, .06);--font-body: "IBM Plex Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-display: "IBM Plex Serif", "Songti SC", "SimSun", serif;--font-mono: "IBM Plex Mono", "SF Mono", Consolas, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);background:var(--bg);color:var(--ink-900);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:13px;color:var(--ink-900)}.app-shell{display:flex;height:100vh;overflow:hidden}.sidebar{width:236px;flex:0 0 236px;background:linear-gradient(178deg,var(--navy-900) 0%,var(--navy-800) 42%,#0d2645 100%);color:#c8d6e8;display:flex;flex-direction:column;overflow-y:auto}.brand{padding:22px 20px 18px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-title{font-family:var(--font-display);font-size:19px;color:#fff;letter-spacing:.5px;line-height:1.35}.brand-sub{font-size:11px;color:#7f93ad;letter-spacing:2.5px;text-transform:uppercase;margin-top:4px}.nav-group{padding:14px 12px 4px}.nav-group-label{font-size:11px;letter-spacing:2px;color:#677d9a;padding:6px 10px 8px;text-transform:uppercase}.nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:0;background:transparent;color:#b9c8dc;font-size:13.5px;text-align:left;border-radius:8px;cursor:pointer;position:relative;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff0f;color:#fff}.nav-item.active{background:linear-gradient(90deg,#2f6ff047,#2f6ff01a);color:#fff;font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--blue-500)}.nav-item .nav-ico{font-size:15px;width:20px;text-align:center;flex:0 0 20px}.sidebar-foot{margin-top:auto;padding:16px 20px;font-size:11px;color:#5d7290;border-top:1px solid rgba(255,255,255,.08)}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.topbar{height:58px;flex:0 0 58px;background:var(--card);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;gap:16px}.topbar-title{font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--ink-900)}.topbar-desc{font-size:12.5px;color:var(--ink-500);margin-left:4px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}.date-chip{font-family:var(--font-mono);font-size:12px;color:var(--ink-500);background:var(--bg);border:1px solid var(--line);padding:4px 10px;border-radius:6px}.content{flex:1;overflow-y:auto;padding:24px 26px 60px}.page-enter{animation:pageIn .28s ease both}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-enter{animation-fill-mode:backwards}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px}.card+.card{margin-top:16px}.card-title{font-size:15px;font-weight:700;color:var(--ink-900);margin:0 0 4px;display:flex;align-items:center;gap:8px}.card-title .title-bar{width:4px;height:16px;border-radius:2px;background:linear-gradient(180deg,var(--blue-500),var(--blue-600));flex:0 0 4px}.card-sub{font-size:12.5px;color:var(--ink-500);margin:0 0 14px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1180px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:860px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px #0f203c0d,0 6px 20px #0f203c14;padding:16px 18px;position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--blue-500),transparent 80%)}.stat-label{font-size:12px;color:var(--ink-500)}.stat-value{font-family:var(--font-mono);font-size:26px;font-weight:600;color:var(--ink-900);margin-top:2px;letter-spacing:-.5px}.stat-value small{font-size:13px;font-weight:400;color:var(--ink-500);margin-left:2px}.stat-foot{font-size:11.5px;color:var(--ink-300);margin-top:6px}.trend-up{color:var(--teal-600)}.trend-down{color:var(--red-500)}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;font-weight:600;color:var(--ink-500);font-size:12px;padding:9px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--blue-050)}table.data td{padding:9px 10px;border-bottom:1px solid #edf1f6;vertical-align:middle}table.data tr:hover td{background:#f8fafd}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}table.data td.num,table.data th.num{white-space:nowrap}table.data td.num{text-align:right}.stat-value{font-variant-numeric:tabular-nums}.input.cell-input{background:#f4f8ff;border-color:#c9dcf7;transition:background .15s,border-color .15s}.input.cell-input:hover{background:#e8f1ff;border-color:var(--blue-500)}.input.cell-input:focus{background:#fff}.input.cell-input::placeholder{color:#a8bcd8}.td-editable{position:relative}.td-editable:after{content:"✎";position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:10px;color:#93a1b3;pointer-events:none}.input.cell-input,.select.cell-input{padding:4px 6px;font-size:12.5px;font-family:var(--font-mono);text-align:right;border-radius:6px}.input.cell-input:focus{text-align:left}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:2px 9px;border-radius:20px;border:1px solid transparent;white-space:nowrap}.badge-blue{background:var(--blue-050);color:var(--blue-600);border-color:var(--blue-100)}.badge-teal{background:#e6f6f3;color:var(--teal-600);border-color:#bfe8e2}.badge-amber{background:#fdf3e3;color:#a8691a;border-color:#f3ddba}.badge-red{background:#fdecee;color:var(--red-500);border-color:#f6ccd0}.badge-gray{background:#eef2f7;color:var(--ink-500);border-color:var(--line)}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink-700);padding:7px 14px;border-radius:8px;font-size:13px;cursor:pointer;transition:all .15s;white-space:nowrap}.btn:hover{border-color:var(--blue-500);color:var(--blue-600)}.btn-primary{background:linear-gradient(180deg,var(--blue-500),var(--blue-600));border-color:var(--blue-600);color:#fff;font-weight:500;box-shadow:0 2px 8px #1d5bd647}.btn-primary:hover{filter:brightness(1.06);color:#fff}.btn-danger-ghost{color:var(--red-500)}.btn-danger-ghost:hover{border-color:var(--red-500);color:var(--red-500);background:#fff5f6}.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:12px;color:var(--ink-500);font-weight:500}.input,.select,.textarea{border:1px solid var(--line);border-radius:8px;padding:8px 11px;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s;appearance:none}.select{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235b6b80' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;cursor:pointer}.input:focus,.select:focus,.textarea:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px #2f6ff01f}.textarea{resize:vertical;min-height:90px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .span-2{grid-column:span 2}@media(max-width:860px){.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;flex-wrap:wrap}.tab{border:0;background:transparent;padding:9px 16px;font-size:13.5px;color:var(--ink-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s}.tab:hover{color:var(--ink-900)}.tab.active{color:var(--blue-600);font-weight:600;border-bottom-color:var(--blue-600)}.modal-mask{position:fixed;inset:0;background:#08172999;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:28px;overflow-y:auto;animation:pageIn .18s ease}.modal{background:var(--card);border-radius:14px;width:min(760px,100%);max-height:min(86vh,820px);display:flex;flex-direction:column;box-shadow:0 24px 80px #08172959;animation:modalPop .2s ease;margin:auto;position:relative}@keyframes modalPop{0%{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}.modal-head{padding:18px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-head h3{margin:0;font-family:var(--font-display);font-size:16px}.modal-body{padding:20px 24px;overflow-y:auto;flex:1;min-height:0;overscroll-behavior:contain}.modal-foot{padding:14px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.close-x{border:0;background:transparent;font-size:17px;color:var(--ink-300);cursor:pointer;padding:4px 8px;border-radius:6px}.close-x:hover{color:var(--ink-900);background:var(--bg)}.empty{text-align:center;color:var(--ink-300);padding:42px 0;font-size:13px}.empty .empty-ico{font-size:30px;display:block;margin-bottom:8px}.chart-box{width:100%;height:300px}.chart-box.tall{height:380px}.chart-box.short{height:240px}.muted{color:var(--ink-500)}.small{font-size:12px}.mono{font-family:var(--font-mono)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.spacer-8{height:8px}.spacer-4{height:4px}.spacer-16{height:16px}.divider{height:1px;background:var(--line);margin:14px 0}.tag-list{display:flex;gap:6px;flex-wrap:wrap}.progress-track{height:7px;border-radius:4px;background:#e8edf4;overflow:hidden}.progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--blue-500),var(--teal-600));transition:width .4s ease}.callout{border-left:3px solid var(--blue-500);background:var(--blue-050);padding:12px 16px;border-radius:0 8px 8px 0;font-size:13px;color:var(--ink-700)}.callout.warn{border-left-color:var(--amber-500);background:#fdf6ea}.callout.danger{border-left-color:var(--red-500);background:#fdf0f1}.nine-grid{display:grid;grid-template-columns:26px repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(96px,auto)) 24px;gap:6px}.nine-grid .axis-y{grid-row:1 / span 3;grid-column:1;writing-mode:vertical-rl;transform:rotate(180deg);font-size:12px;color:var(--ink-500);display:flex;align-items:center;justify-content:center;letter-spacing:3px;padding:4px 0}.nine-grid .corner{grid-row:4;grid-column:1}.nine-cell{border-radius:10px;padding:8px;border:1px solid var(--line);background:#fbfcfe;display:flex;flex-wrap:wrap;align-content:flex-start;gap:4px;min-width:0;overflow:hidden}.nine-cell.zone-1{background:#fdecee;border-color:#f6ccd0}.nine-cell.zone-2{background:#fdf6ea;border-color:#f3ddba}.nine-cell.zone-3{background:#eef4fd;border-color:var(--blue-100)}.nine-cell.zone-4{background:#e6f6f3;border-color:#bfe8e2}.nine-axis{grid-row:4;font-size:11px;color:var(--ink-500);display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden}.nine-person{font-size:11.5px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px 7px;cursor:pointer;display:inline-flex;gap:5px;align-items:center;white-space:nowrap}.nine-person:hover{border-color:var(--blue-500);color:var(--blue-600)}.quiz-option{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:11px 14px;cursor:pointer;transition:all .15s}.quiz-option:hover{border-color:var(--blue-500);background:var(--blue-050)}.quiz-option.picked{border-color:var(--blue-600);background:var(--blue-050);font-weight:600}.quiz-option.correct{border-color:var(--teal-600);background:#e6f6f3}.quiz-option.wrong{border-color:var(--red-500);background:#fdecee}.path-rail{position:relative;padding-left:26px}.path-rail:before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:linear-gradient(180deg,var(--blue-500),var(--teal-600),var(--line))}.path-node{position:relative;padding-bottom:22px}.path-node:before{content:"";position:absolute;left:-24px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--card);border:3px solid var(--blue-500)}.path-node.done:before{background:var(--teal-600);border-color:var(--teal-600)}.path-node.active:before{box-shadow:0 0 0 5px #2f6ff02e}.model-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}.model-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:15px 16px;cursor:pointer;transition:all .18s;position:relative}.model-card:hover{border-color:var(--blue-500);box-shadow:0 8px 24px #1d5bd61f;transform:translateY(-2px)}.model-name{font-weight:700;font-size:14px;margin-bottom:2px}.model-meta{font-size:11.5px;color:var(--ink-300);margin-bottom:8px}.model-desc{font-size:12.5px;color:var(--ink-500);line-height:1.55}.kbd{font-family:var(--font-mono);font-size:11px;background:var(--bg);border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#c6d0dd;border-radius:6px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}.attach-list{display:flex;flex-direction:column;gap:6px}.attach-item{display:flex;align-items:center;gap:10px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:#fbfcfe}.attach-item:hover{border-color:var(--blue-500)}.attach-name{flex:1;color:var(--blue-600);text-decoration:none;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attach-name:hover{text-decoration:underline}.reader-shell{display:flex;flex-direction:column;gap:10px}.reader-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.reader-progress-row{display:flex;align-items:center;gap:10px}.reader-columns{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);gap:14px;align-items:start}@media(max-width:900px){.reader-columns{grid-template-columns:1fr}}.reader-content{border:1px solid var(--line);border-radius:10px;background:#fdfdfb;padding:22px 26px;max-height:58vh;overflow-y:auto;line-height:1.95}.reader-content h3{font-family:var(--font-display);color:var(--navy-800);margin:18px 0 8px;font-size:16px;cursor:pointer}.reader-content h3:hover{color:var(--blue-600)}.reader-content h3:first-child{margin-top:0}.reader-p{font-size:14px;color:var(--ink-700);text-align:justify;padding:6px 8px;margin:0 0 12px -8px;border-radius:6px;transition:background .15s}.reader-p:hover{background:#f2f7ff}.reader-quote{margin:0 0 12px;padding:8px 14px;border-left:3px solid var(--amber-500);background:#fdf6ea;color:var(--ink-700);font-size:13.5px;border-radius:0 8px 8px 0}.reader-extract-btn{position:absolute;margin-top:-30px;margin-left:8px;z-index:5}.reader-notes-panel{border:1px solid var(--line);border-radius:10px;background:#fbfcfe;padding:14px 16px;max-height:58vh;overflow-y:auto}.notes-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--line)}.notes-filter{display:flex;gap:4px;margin-bottom:10px}.notes-filter button{border:1px solid var(--line);background:#fff;border-radius:14px;font-size:11.5px;padding:2px 10px;cursor:pointer;color:var(--ink-500)}.notes-filter button.active{border-color:var(--blue-500);color:var(--blue-600);font-weight:600}.reader-iframe{width:100%;height:56vh;border:1px solid var(--line);border-radius:10px;background:#525659}.note-item{border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:8px;background:#fff}.note-item .note-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}.note-quote{font-size:12px;color:var(--ink-500);border-left:2.5px solid var(--amber-500);padding:3px 8px;margin:4px 0;background:#fdf6ea;border-radius:0 6px 6px 0;line-height:1.6}.stat-card.kpi-drill{cursor:pointer;transition:transform .15s,box-shadow .15s}.stat-card.kpi-drill:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0f203c24}.alert-chip{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:20px;font-size:12.5px;font-weight:600;padding:5px 14px;cursor:pointer;transition:filter .15s}.alert-chip.alert-red{background:#fdecee;color:#d64550;box-shadow:0 2px 8px #d645502e}.alert-chip.alert-yellow{background:#fdf3e3;color:#a8691a;box-shadow:0 2px 8px #e8a33d2e}.alert-chip:hover{filter:brightness(.96)}.funnel-visual{display:flex;flex-direction:column;gap:8px}.funnel-step{display:flex;align-items:center;gap:14px}.funnel-bar-wrap{flex:1}.funnel-bar{height:44px;border-radius:8px;min-width:48px;position:relative;transition:width .5s ease;box-shadow:inset 0 1px #ffffff47}.funnel-info{display:flex;align-items:baseline;gap:6px;min-width:250px}.funnel-name{font-weight:600;font-size:13px;white-space:nowrap}.funnel-info strong{font-size:17px}.funnel-rate{font-size:11.5px;color:var(--ink-500);white-space:nowrap;margin-left:auto}.bench-line{display:flex;align-items:center;gap:8px;margin-top:6px}.bench-track{position:relative;flex:1;height:8px;border-radius:4px;overflow:visible}.bench-zones{display:flex;height:100%;border-radius:4px;overflow:hidden;opacity:.85}.bench-zones span{flex:1}.bench-zones span:first-child{flex:.8}.bench-cursor{position:absolute;top:-3px;width:3px;height:14px;border-radius:2px;background:var(--ink-900);box-shadow:0 0 0 2px #fff;transform:translate(-50%)}.bench-zone-label{font-size:10.5px;color:var(--ink-500);white-space:nowrap}.metric-group-title{font-size:13px;font-weight:700;color:var(--navy-700);margin-bottom:10px;padding-left:10px;border-left:3px solid var(--blue-500);letter-spacing:1px}.stage-track{display:flex;gap:4px;align-items:flex-start;overflow-x:auto;padding:4px 0 6px}.stage-node{flex:1;min-width:86px;display:flex;flex-direction:column;align-items:center;gap:4px;position:relative}.stage-node:not(:last-child):after{content:"";position:absolute;top:11px;left:calc(50% + 14px);width:calc(100% - 28px);height:2px;background:var(--line)}.stage-node.done:not(:last-child):after{background:var(--teal-600)}.stage-dot{width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid var(--line);color:var(--ink-300);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;z-index:1}.stage-node.done .stage-dot{background:var(--teal-600);border-color:var(--teal-600);color:#fff}.stage-node.current .stage-dot{border-color:var(--blue-500);color:var(--blue-600);box-shadow:0 0 0 4px #2f6ff026}.stage-name{font-size:10.5px;color:var(--ink-500);white-space:nowrap}.stage-node.current .stage-name{color:var(--blue-600);font-weight:600}.stage-node.done .stage-name{color:var(--teal-600)}.band-chart{position:relative;height:380px;border:1px solid var(--line);border-radius:10px;background:#fbfcfe;overflow:hidden}.band-row{position:absolute;left:90px;right:16px;height:46px}.band-bar{position:absolute;top:4px;height:38px;border-radius:8px;background:linear-gradient(180deg,#2f6ff038,#1d5bd61f);border:1px solid var(--blue-100);cursor:ew-resize}.band-bar .band-handle{position:absolute;top:6px;width:8px;height:26px;border-radius:4px;background:#fff;border:1.5px solid var(--blue-500);cursor:ew-resize;opacity:0;transition:opacity .15s}.band-bar:hover .band-handle{opacity:1}.band-bar .band-handle.left{left:-4px}.band-bar .band-handle.right{right:-4px}.band-grade-label{position:absolute;left:0;top:50%;transform:translateY(-50%);width:80px;text-align:right;font-weight:700;font-size:13px;color:var(--navy-700);padding-right:10px}.band-dot{position:absolute;top:50%;transform:translate(-50%,-50%);width:13px;height:13px;border-radius:50%;background:var(--blue-600);border:2px solid #fff;box-shadow:0 1px 4px #0f203c4d;cursor:pointer;z-index:3}.band-dot.out{background:var(--red-500)}.band-axis{display:flex;justify-content:space-between;margin-left:90px;margin-right:16px;padding:4px 0;font-size:11px;color:var(--ink-300);font-family:var(--font-mono)}.level-slider{display:flex;flex-direction:column;gap:6px;padding:4px 0 2px}.ls-label{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--ink-500);font-weight:500}.ls-value{font-weight:700;font-size:13px}.ls-track-wrap{position:relative;height:18px;display:flex;align-items:center}.ls-track{position:relative;flex:1;height:8px;border-radius:5px;background:#e8edf4}.ls-fill{position:absolute;left:0;top:0;bottom:0;border-radius:5px;transition:width .15s ease,background .15s ease}.ls-tick{position:absolute;top:-2px;width:1.5px;height:12px;background:#ffffffe6;box-shadow:0 0 0 .5px #17273c1f;transform:translate(-50%);pointer-events:none}.ls-thumb{position:absolute;top:50%;width:20px;height:20px;border-radius:50%;border:2.5px solid #fff;color:#fff;font-size:10.5px;font-weight:700;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);box-shadow:0 2px 8px #0f203c4d;transition:left .15s ease,background .15s ease;pointer-events:none}.ls-levels{display:flex;gap:6px;margin-top:2px}.ls-step{flex:1;border:1px solid var(--line);background:#fbfcfe;border-radius:6px;font-size:11.5px;padding:2.5px 0;color:var(--ink-500);cursor:pointer;transition:all .13s ease}.ls-step:hover{border-color:var(--blue-500);color:var(--blue-600)}.ls-step.active{font-weight:700;background:#fff}.print-doc{padding:8px 4px}.pd-title{font-family:var(--font-display);font-size:24px;text-align:center;margin:8px 0 4px;color:var(--navy-800)}.pd-sub{text-align:center;color:var(--ink-500);margin:0 0 6px}.pd-meta{text-align:center;color:var(--ink-300);font-size:12px;margin:0 0 4px}.pd-divider{border-bottom:2px solid var(--navy-800);margin:10px 0 18px}.pd-h2{font-size:16px;color:var(--blue-600);border-left:4px solid var(--blue-500);padding-left:10px;margin:22px 0 10px}.pd-p{font-size:14px;line-height:1.9;color:var(--ink-700);margin:0 0 10px;text-align:justify}.pd-list{padding-left:22px;margin:0 0 10px}.pd-list li{font-size:14px;line-height:1.85;color:var(--ink-700);margin-bottom:6px}@media print{body{background:#fff}.app-shell,.modal-head,.modal-foot{display:none!important}.modal-mask{position:static;background:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0;display:block;animation:none}.modal{box-shadow:none;width:100%;max-height:none;animation:none}.modal-body{overflow:visible;padding:24px 40px}.print-doc{max-width:720px;margin:0 auto}.pd-p,.pd-list li{font-size:12.5pt}}.tg-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.tg-grid-wrap{position:relative}.tg-grid{display:grid;gap:6px}.tg-axis-y{writing-mode:vertical-rl;transform:rotate(180deg);display:flex;flex-direction:column;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--ink-500);padding:2px 0;gap:8px}.tg-axis-y span{white-space:nowrap}.tg-axis-x{display:flex;justify-content:space-between;align-items:center;font-size:11.5px;color:var(--ink-500);padding:2px 8px;gap:8px}.tg-axis-x span{white-space:nowrap}.tg-cell{border-radius:10px;border:1px solid var(--line);background:#fbfcfe;padding:7px;min-width:0;min-height:96px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:4px;position:relative;transition:box-shadow .15s,border-color .15s}.tg-cell.drop-hover{border-color:var(--blue-500);box-shadow:0 0 0 3px #2f6ff026 inset}.tg-zone-name{width:100%;font-size:10.5px;font-weight:600;color:var(--ink-500);letter-spacing:.5px;border:0;background:transparent;padding:0;cursor:text;text-align:left;font-family:inherit}.tg-zone-name:focus{outline:none;color:var(--blue-600)}.tg-chip{font-size:11.5px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px 8px;cursor:grab;display:inline-flex;gap:5px;align-items:center;white-space:nowrap;-webkit-user-select:none;user-select:none;transition:transform .12s,box-shadow .12s}.tg-chip:hover{border-color:var(--blue-500);color:var(--blue-600);box-shadow:0 2px 8px #1d5bd626}.tg-chip:active{cursor:grabbing;transform:scale(.95)}.tg-chip.dragging{opacity:.35}.tg-chip.ghost{border-style:dashed;border-color:var(--ink-300);color:var(--ink-300);background:transparent;cursor:default}.tg-chip.moved{border-color:var(--blue-500)}.tg-svg{position:absolute;inset:0;pointer-events:none;z-index:2}.tg-move-list{margin-top:12px}.tg-move-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--blue-050);border:1px dashed var(--blue-100);border-radius:6px;padding:3px 10px;margin:0 6px 6px 0;color:var(--ink-700)}
