
@font-face{font-family:"Shabnam FD";src:url("../font/Shabnam-FD.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Shabnam FD";src:url("../font/Shabnam-Medium-FD.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:"Shabnam FD";src:url("../font/Shabnam-Bold-FD.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}
:root{--canvas:#f8fafc;--surface:#fff;--surface-soft:#f1f5f9;--line:rgba(15,23,42,.1);--line-strong:rgba(15,23,42,.18);--ink:#0f172a;--muted:#64748b;--accent:#2563eb;--accent-strong:#1d4ed8;--accent-soft:#dbeafe;--danger:#dc2626;--ok:#15803d;--warn:#b45309;--shadow:0 1px 2px rgba(15,23,42,.04),0 8px 24px rgba(15,23,42,.05)}
*{box-sizing:border-box}
html,body{min-height:100%;margin:0;background:var(--canvas);color:var(--ink);font-family:"Shabnam FD",Tahoma,Arial,sans-serif;text-rendering:optimizeLegibility}
body{overflow-x:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
code,pre{direction:ltr;text-align:left;font-family:Consolas,"Courier New",monospace}
code{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}p,li,td,th,dd,dt,h1,h2,h3,h4,a,span,small,strong{overflow-wrap:anywhere;word-break:break-word}.panel,.endpointCard,.modelCard,.moduleCard,.projectCard,.metricCard,.diagramCard,.topbar,.brand,.navItem{min-width:0}
.appShell{display:flex;gap:16px;max-width:1680px;min-height:100vh;margin:0 auto;padding:16px}
.sidebar{position:sticky;top:16px;display:flex;flex:0 0 292px;flex-direction:column;height:calc(100vh - 32px);padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}
.brand{display:flex;align-items:center;gap:12px;padding-bottom:16px}
.brandMark,.iconBox{display:grid;place-items:center;border:1px solid rgba(37,99,235,.12);background:rgba(37,99,235,.06);color:var(--accent)}
.navIcon,.buttonIcon{width:18px;height:18px;display:block}.navIcon *,.buttonIcon *{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.diagramIcon .navIcon{width:20px;height:20px}
.brandMark{width:42px;height:42px;border-radius:10px}.brandBars{display:flex;gap:4px}.brandBars span{width:7px;height:20px;border-radius:999px;background:var(--accent)}.brandBars span:last-child{background:var(--accent-strong)}
.brandTitle,.topbar h2{margin:0;font-size:18px;font-weight:700}.eyebrow{margin:0 0 4px;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}
.searchBox{display:grid;gap:6px;margin-bottom:10px;color:var(--muted);font-size:12px;font-weight:700}.searchBox input{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:10px 12px;color:var(--ink)}
.searchResults{max-height:310px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff;margin-bottom:10px;box-shadow:var(--shadow)}.searchResultItem{display:grid;gap:6px;padding:10px;border-bottom:1px solid var(--line);font-size:12px}.searchResultItem:last-child{border-bottom:0}.searchResultItem:hover{background:var(--surface-soft)}.searchResultTitle{display:flex;align-items:center;justify-content:space-between;gap:8px}.searchResultTitle strong{font-size:12px;color:var(--ink)}.searchResultMeta{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted)}.searchResultMeta span{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:#fff;padding:2px 7px;font-size:10px}.searchResultExcerpt{color:var(--muted);line-height:1.7}.searchResultExcerpt mark{border-radius:4px;background:#fef3c7;color:#78350f;padding:0 2px}.searchEmpty{padding:12px;color:var(--muted);font-size:12px;line-height:1.8}
.navScroll{flex:1;overflow:auto;scrollbar-width:thin}.navSectionTitle{margin:14px 8px 8px;color:var(--muted);font-size:11px;font-weight:700}.navDivider{height:1px;margin:12px 0;background:var(--line)}
.navItem{display:flex;align-items:center;gap:10px;border-radius:8px;padding:8px;color:#334155;font-size:13px}.navItem:hover{background:var(--surface-soft);color:var(--ink)}.iconBox{width:30px;height:30px;flex:0 0 30px;border-radius:8px;font-size:11px;font-weight:800}
.userCard{border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);padding:12px;margin-top:12px}.userName{font-size:12px;font-weight:700}.userRole{margin-top:4px;color:var(--muted);font-size:11px}
.logoutButton{width:100%;margin-top:10px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px 10px;color:#334155;font-size:12px;font-weight:700;cursor:pointer}.logoutButton:hover{border-color:var(--danger);color:var(--danger)}
.workspace{flex:1;min-width:0}.topbar{display:flex;align-items:center;gap:12px;min-height:74px;margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:14px 16px;box-shadow:var(--shadow)}.topbar>div{min-width:0;flex:1}.menuButton{display:none;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px;color:var(--ink)}.topSearchButton{display:inline-flex;align-items:center;gap:9px;max-width:360px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:9px 10px;color:#334155;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}.topSearchButton:hover{border-color:var(--accent);color:var(--accent);background:var(--surface-soft)}.topSearchButton kbd{border:1px solid var(--line);border-radius:6px;background:var(--surface-soft);padding:2px 6px;color:var(--muted);font-size:10px;font-family:Consolas,"Courier New",monospace}.topSearchButton .navIcon{width:16px;height:16px}
.content{display:grid;gap:16px}.panel,.endpointCard,.modelCard,.moduleCard,.projectCard,.metricCard{border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}
.panel,.endpointCard,.modelCard{padding:20px}.panel h2,.endpointCard h2,.modelCard h2{margin:0 0 14px;font-size:22px}.panel h3,.endpointCard h3,.modelCard h3{margin:22px 0 10px;font-size:16px}.panel h4{margin:18px 0 8px}
.panel p,.projectCard p,.moduleCard p{color:#334155;line-height:1.9}.notice{border:1px solid rgba(37,99,235,.18);border-radius:8px;background:var(--accent-soft);padding:12px;color:#1e3a8a;line-height:1.8}
.metricGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metricCard{padding:16px}.metricCard span{display:block;color:var(--muted);font-size:12px}.metricCard strong{display:block;margin:8px 0;font-size:26px}.metricCard small{color:var(--muted)}
.projectGrid,.moduleGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.projectCard,.moduleCard{padding:16px}.projectHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.projectHeader h3,.moduleCard h3{margin:0;font-size:18px}.badge,.tagRow span{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;background:var(--surface-soft);padding:5px 9px;font-size:11px;color:#334155}.tagRow{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.projectDetails{margin:12px 0;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.projectDetails summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;cursor:pointer;color:#1d4ed8;font-size:12px;font-weight:800;list-style:none}.projectDetails summary::-webkit-details-marker{display:none}.projectDetails summary:after{content:"+";display:grid;place-items:center;width:22px;height:22px;border:1px solid rgba(37,99,235,.22);border-radius:6px;background:var(--accent-soft);font-family:Consolas,"Courier New",monospace}.projectDetails[open] summary:after{content:"-"}.projectDetails summary small{margin-right:auto;color:var(--muted);font-size:10px;font-weight:700}.projectDetailsBody{display:grid;gap:12px;border-top:1px solid var(--line);padding:12px;background:linear-gradient(180deg,#fff,#f8fafc)}.languageBlock,.handoffNote,.projectDetailColumns section{border:1px solid var(--line);border-radius:8px;background:#fff;padding:12px}.languageBlock h4,.handoffNote h4,.projectDetailColumns h4{margin:0 0 8px;font-size:13px}.languageBlock p,.handoffNote p{margin:0;color:#334155;line-height:1.9}.enBlock{text-align:left}.projectDetailColumns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.projectDetailColumns ul{margin:0;padding:0 20px 0 0}.projectDetailColumns li{line-height:1.8;color:#334155}.projectMetaList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.projectMetaList div{border:1px dashed var(--line-strong);border-radius:8px;background:#fff;padding:8px}.projectMetaList dt{color:var(--muted);font-size:11px}.projectMetaList dd{margin:4px 0 0;color:#334155;font-size:12px;font-weight:700}
.compactStats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.compactStats div{border:1px solid var(--line);border-radius:8px;padding:8px}.compactStats dt{color:var(--muted);font-size:11px}.compactStats dd{margin:4px 0 0;font-weight:700}.primaryLink{display:inline-flex;border-radius:8px;background:var(--accent);color:white;padding:9px 12px;font-size:13px;font-weight:700}
.tabNav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:0}.tabNav a{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px 10px;color:#334155;font-size:12px}.tabNav a:hover{border-color:var(--accent);color:var(--accent)}.tabNav .navIcon{width:15px;height:15px}
table{width:100%;border-collapse:collapse;margin:10px 0;overflow:hidden;border:1px solid var(--line);border-radius:8px;font-size:13px;table-layout:fixed}th,td{border-bottom:1px solid var(--line);padding:10px 12px;vertical-align:top;min-width:0}th{background:var(--surface-soft);text-align:right;color:#334155;font-weight:700}tr:last-child td,tr:last-child th{border-bottom:0}
.sourceList{display:grid;gap:6px;margin:10px 0;padding:0 20px 0 0}.sourceList li{line-height:1.7}.emptyState{border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface-soft);padding:14px;color:var(--muted)}
.endpointCard header{display:flex;align-items:center;gap:10px;direction:ltr;justify-content:flex-end}.method{display:inline-flex;min-width:54px;justify-content:center;border-radius:999px;padding:4px 8px;background:#e2e8f0;color:#334155;font-size:11px;font-weight:800}.method.get{background:#dcfce7;color:#166534}.method.post{background:#dbeafe;color:#1d4ed8}.method.put,.method.patch{background:#fef3c7;color:#92400e}.method.delete{background:#fee2e2;color:#991b1b}.businessDescription{border-right:3px solid var(--accent);padding-right:10px}
.loginPage{min-height:100vh;background:radial-gradient(circle at top right,rgba(37,99,235,.12),transparent 34%),var(--canvas)}.loginShell{display:grid;place-items:center;min-height:100vh;padding:18px}.loginPanel{width:min(440px,100%);border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:var(--shadow);padding:22px}.loginBrand{padding-bottom:18px;border-bottom:1px solid var(--line)}.loginForm{display:grid;gap:14px;margin-top:18px}.loginForm label{display:grid;gap:7px;color:#334155;font-size:13px;font-weight:700}.loginForm input{width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px 12px;color:var(--ink);direction:ltr;text-align:left}.loginHint{margin:0;color:var(--muted);font-size:12px;line-height:1.8}.loginError{border:1px solid rgba(220,38,38,.18);border-radius:8px;background:#fee2e2;color:#7f1d1d;padding:10px;font-size:12px}.loginSubmit{border:0;justify-content:center;cursor:pointer}
pre{white-space:pre-wrap;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#0f172a;color:#e2e8f0;padding:14px}.diagramGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.diagramCard{border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,#fff,#f8fafc);box-shadow:var(--shadow);overflow:hidden}.diagramHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:14px 16px;background:rgba(248,250,252,.92)}.diagramTitle{display:flex;align-items:center;gap:10px;min-width:0}.diagramIcon{display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border:1px solid rgba(37,99,235,.16);border-radius:8px;background:var(--accent-soft);color:var(--accent)}.diagramHeader h3{margin:0;font-size:15px}.diagramHeader p{margin:3px 0 0;color:var(--muted);font-size:11px}.diagramActions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.diagramCopy,.diagramFullscreen,.diagramModalClose{border:1px solid var(--line);border-radius:8px;background:#fff;padding:7px 10px;color:#334155;font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}.diagramCopy:hover,.diagramFullscreen:hover,.diagramModalClose:hover{border-color:var(--accent);color:var(--accent)}.diagramFullscreen{background:var(--accent);border-color:var(--accent);color:#fff}.diagramFullscreen:hover{background:var(--accent-strong);color:#fff}.diagramCanvas{min-height:220px;padding:16px;overflow:auto;background:radial-gradient(circle at top right,rgba(37,99,235,.07),transparent 34%),#fff}.mermaid{direction:ltr;text-align:left;white-space:pre;overflow:auto;border:0;border-radius:8px;background:transparent!important;padding:0;color:#334155}.mermaid[data-processed="true"]{display:flex;justify-content:center;align-items:center;min-width:max-content}.mermaid svg{max-width:100%;height:auto!important;font-family:"Shabnam FD",Tahoma,Arial,sans-serif}.diagramError{border:1px solid rgba(220,38,38,.18);border-radius:8px;background:#fee2e2;color:#7f1d1d;padding:12px;line-height:1.7}.diagramModal{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;padding:22px;background:rgba(15,23,42,.54);backdrop-filter:blur(6px)}.diagramModal.open{display:flex}.diagramModalPanel{display:flex;flex-direction:column;width:min(1320px,calc(100vw - 44px));height:min(900px,calc(100vh - 44px));border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 20px 60px rgba(15,23,42,.22);overflow:hidden}.diagramModalHeader{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:14px 16px;background:#f8fafc}.diagramModalHeader h2{margin:0;font-size:18px}.diagramModalHeader p{margin:4px 0 0;color:var(--muted);font-size:12px}.diagramModalBody{flex:1;overflow:auto;padding:20px;background:radial-gradient(circle at top right,rgba(37,99,235,.08),transparent 32%),#fff}.diagramModalBody .mermaid{min-height:100%;align-items:flex-start}.diagramModalBody svg{max-width:none!important;min-width:720px}
.searchModal{position:fixed;inset:0;z-index:950;display:none;align-items:flex-start;justify-content:center;padding:72px 18px;background:rgba(15,23,42,.42);backdrop-filter:blur(5px)}.searchModal.open{display:flex}.searchModalPanel{width:min(820px,100%);border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 20px 60px rgba(15,23,42,.2);overflow:hidden}.searchModalHeader{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:14px 16px;background:#f8fafc}.searchModalIcon{display:grid;place-items:center;width:38px;height:38px;border:1px solid rgba(37,99,235,.16);border-radius:8px;background:var(--accent-soft);color:var(--accent);flex:0 0 38px}.searchModalHeader input{width:100%;min-width:0;border:0;background:transparent;color:var(--ink);font-size:18px;font-weight:700;outline:0}.searchModalClose{border:1px solid var(--line);border-radius:8px;background:#fff;padding:7px 10px;color:#334155;font-size:12px;font-weight:700;cursor:pointer}.searchModalTools{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:10px 16px;color:var(--muted);font-size:12px}.searchFilters{display:flex;flex-wrap:wrap;gap:6px}.searchFilter{border:1px solid var(--line);border-radius:999px;background:#fff;padding:5px 9px;color:#334155;font-size:11px;font-weight:700;cursor:pointer}.searchFilter.active{border-color:var(--accent);background:var(--accent-soft);color:#1d4ed8}.searchModalResults{max-height:min(560px,calc(100vh - 230px));overflow:auto;padding:8px}.searchModalResults .searchResultItem{border:1px solid transparent;border-radius:8px}.searchModalResults .searchResultItem:hover,.searchModalResults .searchResultItem.active{border-color:rgba(37,99,235,.18);background:#eff6ff}.searchModalFooter{display:flex;flex-wrap:wrap;gap:10px;border-top:1px solid var(--line);padding:10px 16px;color:var(--muted);font-size:11px}.searchModalFooter kbd{border:1px solid var(--line);border-radius:5px;background:var(--surface-soft);padding:1px 5px;font-family:Consolas,"Courier New",monospace}
@media (max-width:1000px){.appShell{display:block;padding:10px}.sidebar{position:fixed;inset:10px auto 10px 10px;z-index:20;transform:translateX(calc(-100% - 20px));transition:transform .18s ease;width:min(320px,calc(100vw - 20px));height:auto}.sidebar.open{transform:none}.menuButton{display:inline-flex}.topSearchButton span,.topSearchButton kbd{display:none}.topSearchButton{padding:9px}.metricGrid,.projectGrid,.moduleGrid,.diagramGrid{grid-template-columns:1fr}.compactStats{grid-template-columns:repeat(2,1fr)}.projectDetailColumns,.projectMetaList{grid-template-columns:1fr}.projectDetails summary{align-items:flex-start}.topbar{position:sticky;top:10px;z-index:10}.panel,.endpointCard,.modelCard{padding:14px}.diagramHeader{align-items:flex-start}.diagramActions{flex-direction:column;align-items:stretch}.diagramCopy,.diagramFullscreen{padding:6px 8px}.diagramModal{padding:8px}.diagramModalPanel{width:calc(100vw - 16px);height:calc(100vh - 16px);border-radius:10px}.diagramModalBody{padding:12px}.diagramModalBody svg{min-width:640px}.searchModal{padding:38px 8px}.searchModalHeader input{font-size:15px}.searchModalTools{align-items:flex-start;flex-direction:column}.searchModalResults{max-height:calc(100vh - 190px)}table{display:block;overflow:auto}}
