:root{--blue:#2878e0;--orange:#f26b38;--ink:#25313d;--muted:#7c8995;--line:#e8ecf1;--light:#f7f9fc;--soft:#edf4ff}*{box-sizing:border-box}body{margin:0;font:14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:white}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;border:0;background:none;color:inherit}button:disabled{opacity:.3;cursor:default}a{color:var(--blue);text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:3px}svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round}h1,h2,h3,p{margin:0}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 28px;gap:16px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:17px;font-weight:650;letter-spacing:.3px}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:1.5px;color:var(--muted);margin-top:1px}.brand-mark{width:36px;height:36px;position:relative;display:grid;place-items:center;background:var(--blue);color:white;font-size:21px;border-radius:11px;font-weight:700;letter-spacing:-2px;padding-right:2px}.brand-mark>span{width:7px;height:7px;background:#ffb66f;border-radius:50%;position:absolute;right:5px;bottom:5px;border:2px solid var(--blue)}.header-right{display:flex;align-items:center;gap:16px}.version{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:9px}.version i{width:3px;height:3px;border-radius:50%;background:#bac4cd}.header-button{font-size:13px;padding:7px 12px;border-radius:8px;border:1px solid var(--line);white-space:nowrap}.header-button:hover{background:var(--light)}.audit-button{background:var(--soft);border-color:transparent;color:var(--blue)}.check-icon{margin-right:5px}.workspace{display:grid;grid-template-columns:272px minmax(320px,1fr) 380px;height:calc(100dvh - 76px)}.directory{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line)}.directory-head{padding:27px 22px 13px}.eyebrow{font-size:11px;line-height:18px;letter-spacing:1px;color:var(--muted)}.directory h1{font-size:19px;font-weight:600;line-height:28px;margin-top:5px;display:flex;align-items:center;gap:9px}.directory h1 span{font-size:11px;line-height:18px;letter-spacing:0;font-weight:400;background:#f0f3f7;color:#8493a2;border-radius:6px;padding:1px 6px}.search{height:37px;display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;margin-top:18px;padding:0 9px;color:#98a3ad;background:var(--light)}.search input{min-width:0;width:100%;background:none;border:0;outline:none;color:var(--ink);font-size:12px}.search input::placeholder{color:#98a3ad}.search kbd{font:11px/18px -apple-system,sans-serif;border:1px solid #dde3e9;border-radius:3px;padding:0 4px;color:#9ca6af}.search-status{font-size:11px;color:var(--muted);margin-top:7px;min-height:0}.search-status:empty{display:none}#catalog{overflow-y:auto;flex:1;padding:0 12px 22px;scrollbar-width:thin;scrollbar-color:#dfe5ec transparent}.catalog-group{margin:3px 0 8px}.catalog-group>summary{list-style:none;cursor:pointer;display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:22px;font-weight:600;padding:10px 8px;color:#465563}.catalog-group>summary::-webkit-details-marker{display:none}.catalog-group>summary::before{content:'›';color:#9aa7b3;font-size:16px;display:inline-block;transform:rotate(0);width:9px;transition:transform .15s}.catalog-group[open]>summary::before{transform:rotate(90deg)}.catalog-group>summary small{font-size:10px;color:#9ca8b3;font-weight:400;margin-left:auto}.section-title{font-size:10px;color:#9aa6b1;padding:12px 12px 5px 25px;letter-spacing:.2px}.page-link{display:flex;align-items:center;gap:6px;border-radius:7px;padding:7px 10px 7px 25px;color:#697786;line-height:20px;font-size:12px;position:relative}.page-link:hover{background:var(--light);color:var(--ink)}.page-link.active{background:var(--soft);color:var(--blue);font-weight:550}.page-link.active::before{content:'';position:absolute;width:3px;height:16px;background:var(--blue);left:7px;border-radius:4px}.page-link small{font-size:9px;white-space:nowrap;color:#9aa7b4;margin-left:auto;font-weight:400}.page-link.active small{color:#80a6d7}.directory-foot{font-size:10px;color:#94a0ad;border-top:1px solid var(--line);padding:13px 20px;display:flex;gap:7px;align-items:center}.dot{width:5px;height:5px;background:#96b7df;border-radius:50%}.preview{min-width:0;min-height:0;background:#f3f5f8;display:flex;flex-direction:column}.preview-head{height:94px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #e5eaf0;gap:12px}.preview-head .eyebrow{font-size:10px;letter-spacing:.3px}.preview-head h2{font-size:17px;line-height:25px;font-weight:600;margin-top:5px}.kind{font-size:10px;line-height:20px;white-space:nowrap;padding:0 7px;border:1px solid #dce4ed;color:#8493a3;border-radius:5px}.stage{flex:1;min-height:0;overflow:auto;scrollbar-width:thin;scrollbar-color:#ccd6e0 transparent;background-image:radial-gradient(#dce3eb .6px,transparent .6px);background-size:13px 13px}.image-space{min-width:100%;width:max-content;min-height:100%;padding:22px 36px;display:grid;place-items:center;position:relative}#designImage{display:block;max-width:none;height:auto;box-shadow:0 10px 30px #3041560c;border-radius:4px;user-select:none}#designImage.loading{opacity:.5}.viewer-foot{height:68px;flex:none;background:#f9fafc;border-top:1px solid #e4e9ef;display:flex;align-items:center;justify-content:space-between;padding:0 22px;gap:12px}.zoom-controls{display:flex;align-items:center;gap:5px;font-size:11px;color:#7a8a99}.zoom-controls button{min-width:27px;line-height:28px;border:1px solid transparent;border-radius:6px;padding:0 6px}.zoom-controls button:hover{background:white;border-color:#e0e6ee}.zoom-controls span{font-size:10px;min-width:35px;text-align:center;font-variant-numeric:tabular-nums}.paging{display:flex;align-items:center;gap:9px;font-size:10px;color:#9aa7b3;white-space:nowrap}.paging button{background:white;border:1px solid #e1e7ee;line-height:27px;min-width:30px;border-radius:7px;color:#667b8d}.paging button:hover:not(:disabled){color:var(--blue);border-color:#b6d1f4}.notes{border-left:1px solid var(--line);overflow-y:auto;scrollbar-width:thin;scrollbar-color:#dce4eb transparent}.notes-content{padding:30px 28px 36px}.notes-content>.eyebrow{display:flex;align-items:center;gap:7px;color:var(--blue)}.small-line{width:15px;height:2px;background:var(--blue)}.note-meta{display:flex;align-items:center;gap:9px;font-size:10px;color:#a1acb6;margin-top:28px;letter-spacing:.4px}.note-meta span+span::before{content:'·';padding-right:9px}.notes h2{font-size:23px;line-height:1.5;font-weight:600;margin-top:8px;letter-spacing:.1px}#narrative{margin-top:23px}#narrative p{font-size:14px;line-height:1.95;color:#576575;margin-bottom:19px;text-wrap:pretty;overflow-wrap:break-word}#narrative p:first-child{color:#344455}.pending-banner{margin-top:18px;font-size:12px;line-height:1.8;padding:10px 12px;background:#fff6e9;border-left:2px solid #efb06b;color:#9d6c36}.continuation{font-size:12px;line-height:1.8;background:var(--light);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:16px;color:#7d8a96}.related{border-top:1px solid var(--line);padding-top:22px;margin-top:27px}.related h3{font-size:12px;font-weight:600;color:#4b5c6d}.related-hint{font-size:10px;line-height:1.8;color:#9ba7b3;margin:7px 0 12px}#relatedLinks{display:grid;gap:6px}.related-link{display:flex;align-items:center;gap:8px;padding:9px 10px;background:var(--light);border:1px solid transparent;border-radius:7px;font-size:12px;color:#647b90;line-height:20px}.related-link:hover{border-color:#d2e1f4;color:var(--blue);background:#f4f8ff}.related-link::after{content:'↗';margin-left:auto;color:#acbac6}.context-note{font-size:10px;line-height:1.9;color:#a2adb7;margin-top:29px;padding-top:17px;border-top:1px solid var(--line)}dialog{border:1px solid #e3e8ef;border-radius:18px;padding:0;width:min(1050px,calc(100vw - 40px));height:min(820px,calc(100dvh - 70px));max-height:none;color:var(--ink);box-shadow:0 30px 100px #14263840}dialog::backdrop{background:#17293d70;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;padding:24px 30px;border-bottom:1px solid var(--line);height:104px}.dialog-top h2{font-size:23px;margin-top:4px}.dialog-top button{font-size:29px;color:#92a0ad;line-height:32px;padding:4px 8px}.dialog-body{height:calc(100% - 104px);overflow:auto;padding:25px 30px 40px}.dialog-intro{font-size:14px;line-height:1.95;color:#697d8e;max-width:850px;margin-bottom:25px}.flow-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.flow-card{border:1px solid var(--line);border-radius:12px;padding:21px}.flow-card h3{font-size:16px;font-weight:600;margin-bottom:8px}.flow-card p{font-size:12px;line-height:1.9;color:#7d8c99}.flow-card small{display:block;font-size:10px;color:#a1aab4;margin-top:10px}.node-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.node-link{font-size:11px;line-height:19px;background:var(--soft);color:#527ba6;padding:5px 8px;border-radius:6px}.node-link:hover{background:#dceaff;color:var(--blue)}.audit-summary{padding:20px 23px;background:var(--soft);border-radius:12px;color:#476987;font-size:14px;line-height:1.9;margin-bottom:24px}.audit-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:26px}.audit-stats div{border:1px solid var(--line);padding:16px;border-radius:9px;color:#8d9ca9;font-size:11px}.audit-stats strong{display:block;font-size:26px;line-height:35px;font-weight:550;color:#344c64}.audit-heading{font-size:17px;margin:26px 0 13px}.pending-list{padding:19px 23px;background:#fff8ed;border-radius:12px}.pending-list p{font-size:13px;line-height:1.9;color:#926f45;margin-bottom:12px}.pending-list p:last-child{margin-bottom:0}.task-list{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.task-row{border-bottom:1px solid var(--line);padding:13px 0;font-size:12px}.task-row strong{font-weight:500}.task-row small{color:#98a5b2;margin-right:5px}.task-row em{font-style:normal;font-size:10px;color:#b58b54;float:right}.task-row .node-links{margin-top:7px}.task-row .node-link{font-size:10px;padding:3px 6px}.image-error{color:#7b8d9d;font-size:14px;padding:30px}.image-error button{display:block;color:var(--blue);margin:12px auto}.mobile-tabs{display:none}[hidden]{display:none!important}@media(min-width:1700px){.workspace{grid-template-columns:300px minmax(400px,1fr) 430px}.notes-content{padding:36px}.directory-head{padding-left:27px}}@media(max-width:1200px){.workspace{grid-template-columns:236px minmax(300px,1fr) 325px}.topbar{padding:0 20px}.version{display:none}.notes-content{padding:26px 22px}.notes h2{font-size:21px}.preview-head{padding:0 22px}.directory-head{padding-left:18px;padding-right:18px}.viewer-foot{padding:0 12px}.zoom-controls{gap:0}.paging{gap:5px}.image-space{padding-left:24px;padding-right:24px}}@media(max-width:960px){.workspace{grid-template-columns:215px minmax(260px,1fr) 295px}.header-right{gap:8px}.notes-content{padding:24px 18px}.notes h2{font-size:20px}#narrative p{font-size:13px}.preview-head{padding:0 16px}.preview-head h2{font-size:15px}.kind{display:none}.viewer-foot{height:90px;flex-wrap:wrap;justify-content:center;gap:0;padding:10px}.paging{min-width:100%;justify-content:center}}@media(max-width:800px){.topbar{height:67px;padding:0 15px}.brand{font-size:14px;gap:8px}.brand small{font-size:9px}.brand-mark{width:31px;height:31px;font-size:18px}.header-button{padding:6px 8px;font-size:11px}.header-button .check-icon{display:none}.mobile-tabs{height:43px;display:flex;align-items:stretch;justify-content:center;border-bottom:1px solid var(--line)}.mobile-tabs button{flex:1;font-size:13px;color:#94a1af;position:relative}.mobile-tabs button.selected{color:var(--blue)}.mobile-tabs button.selected::after{content:'';height:2px;width:28px;background:var(--blue);position:absolute;left:calc(50% - 14px);bottom:0}.workspace{display:block;height:calc(100dvh - 110px)}.workspace>aside,.workspace>main{height:100%;display:none}.workspace[data-mobile=directory]>.directory{display:flex}.workspace[data-mobile=preview]>.preview{display:flex}.workspace[data-mobile=notes]>.notes{display:block}.directory-head{padding:20px 24px}.directory #catalog{padding:0 17px 20px}.directory-foot{padding:13px 24px}.notes-content{padding:25px 26px 40px}.notes h2{font-size:24px}#narrative p{font-size:15px;line-height:1.95}.preview-head{height:72px;padding:0 22px}.preview-head h2{font-size:16px}.viewer-foot{height:64px;flex-wrap:nowrap;justify-content:space-between;padding:0 18px}.paging{min-width:0}.kind{display:block}.notes .related-link{font-size:13px}.flow-grid,.task-list{grid-template-columns:1fr}.dialog-top{padding:18px 22px;height:94px}.dialog-top h2{font-size:21px}.dialog-body{padding:20px;height:calc(100% - 94px)}.audit-stats{grid-template-columns:1fr 1fr}.audit-stats div{padding:12px}.dialog-intro{font-size:13px}dialog{width:calc(100vw - 20px);height:calc(100dvh - 30px)}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Full-height viewer and route hierarchy, 2026-11-06 */
.workspace{height:100dvh}.preview{position:relative;display:block}.stage{height:100%;width:100%}.image-space{padding:6px 50px}.project-name{font-size:14px;font-weight:600;line-height:22px;margin-bottom:4px}.directory-head{padding-top:22px}.directory h1{font-size:17px;margin-top:12px}.directory-foot{justify-content:space-between;padding:12px 18px;gap:8px}.directory-foot .header-button{font-size:11px;padding:6px 11px;flex:1}.notes-content{padding-top:26px}.floating-tools{position:absolute;right:12px;top:16px;z-index:5;display:flex;align-items:center;flex-direction:column;width:43px;padding:5px 3px;border-radius:10px;border:1px solid #e0e6ee;background:#fffffff5;box-shadow:0 3px 12px #334b6710}.floating-tools button{height:31px;width:35px;font-size:11px;border-radius:6px}.floating-tools button:hover{background:#edf4ff;color:#2878e0}.floating-tools #zoomIn,.floating-tools #zoomOut{font-size:20px;line-height:28px}.floating-tools #zoomValue{font-size:10px;line-height:20px;color:#8493a2;font-variant-numeric:tabular-nums}.tool-line{height:1px;width:23px;background:#e8ecf1;margin:5px 0}.float-page{position:absolute;top:50%;width:28px;height:37px;border-radius:8px;background:#ffffffd9;border:1px solid #e1e7ee;font-size:24px;line-height:30px;color:#8193a5;z-index:4}.float-page:hover:not(:disabled){color:#2878e0;border-color:#b6d1f4}.prev-page{left:11px}.next-page{right:19px}.float-counter{position:absolute;right:14px;bottom:10px;font-size:10px;color:#93a1b0;z-index:4;pointer-events:none}.tree-row{display:flex;align-items:flex-start;padding-left:calc(5px + var(--level)*13px);border-radius:7px;position:relative;margin:1px 0}.tree-row.current{background:#edf4ff}.tree-toggle,.tree-spacer{flex:none;width:17px;height:32px;line-height:30px;display:block;font-size:15px;color:#99a7b5;text-align:center;z-index:1}.tree-toggle:hover{color:#2878e0}.tree-page{flex:1;min-width:0;padding:6px 6px 6px 3px;border-radius:0;background:transparent!important;line-height:20px;font-size:12px}.tree-page.active:before{display:none}.tree-page small{font-size:9px}.tree-row:hover{background:#f5f8fb}.tree-row.current:hover{background:#edf4ff}.tree-children{position:relative}.tree-children:before{content:'';position:absolute;left:calc(13px + var(--level)*13px);top:0;bottom:2px;width:1px;background:#e8edf3;pointer-events:none}.catalog-group>summary{padding-top:9px;padding-bottom:9px}.group-tree{padding-bottom:8px}.context-note{margin-top:24px}@media(min-width:1700px){.notes-content{padding-top:30px}}@media(max-width:800px){.workspace{height:calc(100dvh - 43px)}.workspace[data-mobile=preview]>.preview{display:block}.floating-tools{top:12px;right:8px;width:38px}.floating-tools button{width:30px}.prev-page{left:7px}.next-page{right:13px}.image-space{padding:6px 50px}.float-counter{right:10px}.notes-content{padding-top:24px}.directory-head{padding-top:20px}.mobile-tabs{height:43px}.tree-page{font-size:13px}.tree-row{padding-left:calc(6px + var(--level)*15px)}.tree-children:before{left:calc(14px + var(--level)*15px)}}

.floating-tools button{padding:0;white-space:nowrap}@media(max-width:800px){.image-space{padding:6px 40px}}
