body{margin:0;background:#F7F8FC}
*{box-sizing:border-box}
a{color:#5E5CA0;text-decoration:none;transition:color 150ms}a:hover{color:#4F4D8F;text-decoration:underline}
:focus-visible{outline:2px solid #7776B5;outline-offset:2px}
.nav{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:8px;color:#475569;font-size:14px;font-weight:500;transition:background-color 150ms,color 150ms;border:0;background:transparent;width:100%;font-family:inherit;cursor:pointer;text-align:left}
.nav:hover{background:#EEF0F6;color:#263047;text-decoration:none}
.navon{background:#E6E8F7;color:#263047}.navon:hover{background:#E6E8F7}
.card{background:#FFFFFF;border:1px solid #E7EAF0;border-radius:12px;box-shadow:0 1px 2px rgba(38,48,71,0.04)}
.lift{transition:box-shadow 180ms,border-color 180ms,transform 180ms}.lift:hover{box-shadow:0 6px 20px rgba(38,48,71,0.08);border-color:#D9DDE7;text-decoration:none}
.btn{height:36px;padding:0 14px;border-radius:8px;font-family:inherit;font-size:14px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:background-color 150ms,border-color 150ms,box-shadow 150ms,color 150ms;white-space:nowrap}
.bp{background:#5E5CA0;color:#FFFFFF;border:1px solid #5E5CA0}.bp:hover{background:#4F4D8F;border-color:#4F4D8F;color:#FFFFFF;text-decoration:none}
.bs{background:#FFFFFF;color:#263047;border:1px solid #E7EAF0;box-shadow:0 1px 2px rgba(38,48,71,0.04)}.bs:hover{background:#F7F8FC;border-color:#D9DDE7;color:#263047;text-decoration:none}
.bg{background:transparent;color:#475569;border:1px solid transparent}.bg:hover{background:#F1F2F8;color:#263047}
.ib{width:32px;height:32px;padding:0;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;background:#FFFFFF;border:1px solid #E7EAF0;color:#475569;cursor:pointer;transition:background-color 150ms,border-color 150ms}.ib:hover{background:#F7F8FC;border-color:#D9DDE7;color:#263047}
.seg{display:inline-flex;padding:3px;gap:2px;background:#F1F2F8;border:1px solid #E7EAF0;border-radius:8px}
.sb{height:28px;padding:0 10px;border-radius:6px;border:0;background:transparent;color:#5B6577;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background-color 150ms,color 150ms}.sb:hover{color:#263047}
.son{background:#FFFFFF;color:#263047;box-shadow:0 1px 2px rgba(38,48,71,0.08)}
.chip{height:30px;padding:0 10px;border-radius:8px;border:1px solid #E7EAF0;background:#FFFFFF;color:#475569;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background-color 150ms,border-color 150ms,color 150ms}.chip:hover{border-color:#D9DDE7;color:#263047}
.chon{background:#E6E8F7;border-color:#C9CBEA;color:#4C4A8C}
.inp{height:36px;border:1px solid #E7EAF0;border-radius:8px;background:#FFFFFF;font-family:inherit;font-size:14px;color:#263047;padding:0 12px;transition:border-color 150ms,box-shadow 150ms;outline:0}
.inp:focus{border-color:#7776B5;box-shadow:0 0 0 3px rgba(119,118,181,0.18)}
.inp::placeholder{color:#687284}
.lbl{font-size:11px;font-weight:600;letter-spacing:0.5px;text-transform:uppercase;color:#5B6577}
.bd{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:500;white-space:nowrap}
.av{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex:none}
.row{transition:background-color 150ms}.row:hover{background:#FAFBFE}
.rowlink{color:#263047;font-weight:500}.rowlink:hover{color:#5E5CA0}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
::selection{background:#E6E8F7;color:#263047}
*{scrollbar-width:thin;scrollbar-color:#D9DDE7 transparent}
.num{font-variant-numeric:tabular-nums}
.stretch::after{content:'';position:absolute;inset:0;border-radius:12px}
.mrow{position:relative;z-index:1;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;background:#F7F8FC;border:1px solid #EEF0F5;color:#263047;text-decoration:none;transition:background-color 150ms,border-color 150ms}
a.mrow:hover{background:#F1F2F8;border-color:#C9CBEA;color:#263047;text-decoration:none}
a.mrow:hover .mext{color:#5E5CA0}
.mext{color:#687284;display:flex;flex:none;transition:color 150ms}
.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cb{width:16px;height:16px;border-radius:4px;border:1.5px solid #C3C9D6;background:#FFFFFF;flex:none;cursor:pointer;padding:0;transition:border-color 150ms}.cb:hover{border-color:#7776B5}

@font-face{font-family:Geist;src:url(/fonts/Geist.woff2) format("woff2");font-weight:100 900;font-display:swap}
html,body{margin:0}
body{font-family:Geist,system-ui,sans-serif;color:#263047;background:#F7F8FC;font-size:14px;-webkit-font-smoothing:antialiased}
button,input{font-family:inherit}
.shell{min-height:100vh;display:flex}
.side{flex:0 0 232px;padding:16px 12px;background:#F7F8FC;border-right:1px solid #E7EAF0;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;box-sizing:border-box}
.main{flex:1;min-width:0;padding:28px 36px 96px}
.wrap{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
h1.t{margin:0;font-size:24px;font-weight:600;letter-spacing:-0.4px}
h2.t{margin:0;font-size:16px;font-weight:600}
.sub{font-size:13px;color:#5B6577}
.muted{color:#5B6577}
.small{font-size:12px;color:#5B6577}
.row-b{border-top:1px solid #F0F2F6}
.empty{padding:24px 16px;text-align:center;color:#5B6577;font-size:13px}
.empty b{display:block;font-weight:500;color:#263047;font-size:14px;margin:6px 0 2px}
.err{background:#FBECEC;color:#A23B3B;border-radius:8px;padding:10px 12px;font-size:13px}
.skel{background:linear-gradient(90deg,#EEF0F5 0%,#F5F6FA 50%,#EEF0F5 100%);background-size:200% 100%;animation:sk 1.2s ease-in-out infinite;border-radius:8px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.kcard{position:relative;display:flex;flex-direction:column;gap:10px;padding:12px 14px}
.stat{flex:1 1 150px;padding:14px 18px;display:flex;flex-direction:column;gap:4px;border-right:1px solid #F0F2F6}
.stat .v{font-size:22px;font-weight:600;letter-spacing:-0.4px}
table.list{width:100%;min-width:1320px;border-collapse:collapse;font-size:13px}
table.list th{font-size:12px;font-weight:500;color:#5B6577;text-align:left;padding:10px 14px;border-bottom:1px solid #E7EAF0;white-space:nowrap;background:#FBFBFD}
table.list td{padding:10px 14px;border-bottom:1px solid #F0F2F6;vertical-align:middle}
.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden}
.cal-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.chatbox{position:fixed;right:24px;bottom:24px;z-index:50;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.chatpanel{width:380px;max-width:calc(100vw - 48px);height:520px;background:#FFFFFF;border:1px solid #E7EAF0;border-radius:12px;box-shadow:0 12px 32px rgba(38,48,71,0.12),0 2px 6px rgba(38,48,71,0.05);display:flex;flex-direction:column;overflow:hidden}
.fab{width:52px;height:52px;border-radius:50%;border:0;background:#5E5CA0;color:#FFFFFF;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(94,92,160,0.35);transition:background-color 150ms}
.fab:hover{background:#4F4D8F}
.bubble-me{align-self:flex-end;max-width:80%;background:#5E5CA0;color:#FFFFFF;padding:8px 12px;border-radius:12px 12px 4px 12px;font-size:13px;line-height:1.5;white-space:pre-wrap}
.bubble-ai{align-self:flex-start;max-width:90%;background:#F7F8FC;border:1px solid #E7EAF0;padding:10px 12px;border-radius:12px 12px 12px 4px;font-size:13px;line-height:1.55;white-space:pre-wrap}
.sr{position:absolute;left:-9999px}
.mapwrap{position:relative;background:#F3F5FB;border-radius:8px;overflow:hidden;cursor:grab;touch-action:none;user-select:none}
.mapwrap:active{cursor:grabbing}
.pin{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;border-radius:12px;background:#FFFFFF;border:1px solid #E7EAF0;box-shadow:0 2px 6px rgba(38,48,71,0.12);font:inherit;font-size:12px;font-weight:600;color:#263047;cursor:pointer;white-space:nowrap}
.pin.on{border:2px solid #5E5CA0}
.topbar{display:none}
@media (max-width:860px){.side{display:none}.main{padding:16px 16px 96px}.topbar{display:flex;gap:4px;overflow-x:auto;padding:8px 12px;background:#FFFFFF;border-bottom:1px solid #E7EAF0;position:sticky;top:0;z-index:20}.shell{flex-direction:column}}
