:root{--color-primary:#97c255;--color-primary-light:#a8d465;--color-primary-dark:#78b832;--color-primary-bg:#97c25514;--color-primary-shadow:#97c25540;--color-accent:#c5a55a;--color-accent-light:#d4ba7a;--color-text:#1b2b1e;--color-text-secondary:#5a6b5e;--color-text-tertiary:#94a397;--color-bg:#fafbfa;--color-bg-elevated:#f3f5f3;--color-bg-card:#fff;--color-sidebar:#1c2a1f;--color-sidebar-hover:#243328;--color-border:#e2e8e3;--color-divider:#eef1ee;--shadow-sm:0 2px 12px #1b2b1e0f;--shadow-md:0 4px 20px #1b2b1e14;--shadow-lg:0 8px 32px #1b2b1e1f;--shadow-xl:0 12px 48px #1b2b1e29;--ease-out:cubic-bezier(.25, .46, .45, .94);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-xl:24px}@keyframes page-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes drawer-item-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.page-content{animation:page-enter .35s var(--ease-out) both}.feed-card{cursor:pointer;background:var(--color-bg-card);border-radius:var(--radius-lg);height:100%;box-shadow:var(--shadow-sm);transition:transform .22s var(--ease-out), box-shadow .22s var(--ease-out);-webkit-tap-highlight-color:transparent;flex-direction:column;display:flex;overflow:hidden}@media (hover:hover){.feed-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}}.feed-card:active{transition-duration:.1s;transform:scale(.98)}.btn-press:active{transition-duration:80ms!important;transform:scale(.97)!important}.glass{-webkit-backdrop-filter:blur(20px)saturate(1.8);background:#ffffffd1}.glass-dark{-webkit-backdrop-filter:blur(20px)saturate(1.8);background:#1c2a1fe0}.drawer-grid-item{animation:drawer-item-in .3s var(--ease-out) both}.drawer-grid-item:first-child{animation-delay:20ms}.drawer-grid-item:nth-child(2){animation-delay:50ms}.drawer-grid-item:nth-child(3){animation-delay:80ms}.drawer-grid-item:nth-child(4){animation-delay:.11s}.drawer-grid-item:nth-child(5){animation-delay:.14s}.drawer-grid-item:nth-child(6){animation-delay:.17s}.drawer-grid-item:nth-child(7){animation-delay:.2s}.drawer-grid-item:nth-child(8){animation-delay:.23s}.drawer-grid-item:nth-child(9){animation-delay:.26s}.tab-bar-item{transition:color .2s var(--ease-out), transform .2s var(--ease-spring);-webkit-tap-highlight-color:transparent}.tab-bar-item--active .tab-bar-icon{transition:transform .25s var(--ease-spring);transform:scale(1.1)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-text-tertiary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}body{background:var(--color-bg)}.markdown-content p:last-child{margin-bottom:0}.site-footer{flex-wrap:wrap;justify-content:center;gap:4px 18px;font-size:13px;display:flex}.site-footer a{color:var(--color-text-tertiary);transition:color .2s var(--ease-out)}.site-footer a:hover{color:var(--color-text-secondary)}.qr-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.qr-card{border:1px solid var(--color-border);break-inside:avoid;background:#fff;border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:12px;display:flex}.qr-card-name{text-align:center;font-size:13px;font-weight:600}@media print{body *{visibility:hidden}.qr-grid,.qr-grid *{visibility:visible}.qr-grid{grid-template-columns:repeat(4,1fr);gap:8px;width:100%;position:absolute;top:0;left:0}.qr-card{border:1px solid #ddd}}.tasks-page{flex-direction:column;gap:16px;display:flex}.tasks-page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.tasks-board{scrollbar-width:none;align-items:flex-start;gap:12px;padding-bottom:12px;display:flex;overflow-x:auto}.tasks-board::-webkit-scrollbar{display:none}.tasks-column{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:14px;flex-direction:column;flex:260px;gap:8px;min-width:240px;max-width:380px;padding:12px;display:flex}.tasks-column-over{border-color:var(--color-primary)}.tasks-column-header{align-items:center;gap:6px;display:flex}.tasks-column-count{margin-left:auto}.tasks-column-body{flex-direction:column;gap:8px;min-height:36px;display:flex}.tasks-column-empty{text-align:center;color:var(--color-text-tertiary);padding:6px 0;font-size:12px}.task-card{background:var(--color-bg-card);border:1px solid var(--color-border);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .15s var(--ease-out), box-shadow .15s var(--ease-out), border-color .15s var(--ease-out);border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.task-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary);transform:translateY(-1px)}.task-card-draggable{cursor:grab;touch-action:none}.task-card-dragging{opacity:.35;box-shadow:none}.task-card-overlay{box-shadow:var(--shadow-xl);border-color:var(--color-primary);cursor:grabbing}.task-drag-layer{z-index:1000;pointer-events:none;position:fixed;top:0;left:0}.task-drag-layer .task-card{box-sizing:border-box;width:100%;height:100%}.task-card-title{font-size:14px}.task-card-content{margin:0;font-size:13px}.task-card-meta{color:var(--color-text-tertiary);flex-wrap:wrap;gap:2px 10px;font-size:12px;display:flex}.task-detail-body{flex-direction:column;gap:16px;display:flex}.task-detail-content{white-space:pre-wrap;margin:0}.task-detail-meta{color:var(--color-text-secondary);flex-direction:column;gap:4px;font-size:13px;display:flex}.task-detail-footer{gap:8px;margin-top:8px;display:flex}.task-card-blocked{color:var(--color-accent);font-weight:600}.task-activity-item{flex-direction:column;gap:2px;padding-bottom:4px;display:flex}.task-activity-text{white-space:pre-wrap;font-size:13px}.task-activity-meta{color:var(--color-text-tertiary);font-size:12px}.task-history-title{margin-top:8px}.task-detail-tags{flex-wrap:wrap;gap:6px;display:flex}.task-meta-panel{color:var(--color-text-secondary);background:var(--color-bg-elevated);border-radius:10px;flex-wrap:wrap;gap:6px 16px;padding:10px 12px;font-size:13px;display:flex}.task-meta-panel .anticon{color:var(--color-text-tertiary);margin-right:5px}.task-history{flex-direction:column;gap:12px;display:flex}.task-history-title{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-size:13px}.task-history-list{flex-direction:column;gap:10px;display:flex}.task-comment{align-items:flex-start;gap:10px;display:flex}.task-bubble{background:var(--color-bg-elevated);border-radius:4px 12px 12px;flex-direction:column;flex:1;gap:2px;min-width:0;padding:8px 12px;display:flex}.task-bubble-head{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.task-bubble-time{font-size:12px}.task-bubble-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.task-system-event{text-align:center;justify-content:center;align-items:baseline;gap:6px;padding:2px 8px;font-size:12.5px;display:flex}.task-comment-form{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.task-comment-form .ant-input{width:100%}.task-drawer-footer{align-items:center;gap:8px;display:flex}.task-drawer-footer>:last-child{margin-left:auto}.map-container{background:var(--color-bg-elevated,#f3f5f3);-webkit-user-select:none;user-select:none;width:100%;height:calc(100vh - 130px);box-shadow:var(--shadow-sm,0 1px 4px #1b2b1e0f);border-radius:16px;position:relative;overflow:hidden}.map-container--mobile{height:calc(100vh - 112px - 20px - env(safe-area-inset-bottom,0px));border-radius:0;width:calc(100% + 32px);margin:0 -16px}.map-svg{touch-action:none;cursor:grab;width:100%;height:100%}.map-svg:active{cursor:grabbing}.map-svg--drawing,.map-svg--drawing:active{cursor:crosshair}.map-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.map-header--mobile{gap:8px;margin-bottom:10px}.map-header__title{color:var(--color-text,#1b2b1e);margin:0;font-size:24px;font-weight:800}.map-header__stats{align-items:center;gap:16px;display:flex}.map-stats-badge{color:var(--color-primary,#97c255);background:#97c2551a;border-radius:20px;align-items:center;gap:6px;padding:4px 14px;font-size:13px;font-weight:700;display:inline-flex}.map-stats-badge--mobile{padding:3px 10px;font-size:12px}.map-legend{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.map-legend__item{color:var(--color-text-secondary,#5a6b5e);background:var(--color-bg-card,#fff);border-radius:12px;align-items:center;gap:5px;padding:3px 10px 3px 8px;font-size:12px;font-weight:500;display:inline-flex;box-shadow:0 1px 3px #1b2b1e0f}.map-legend__item--mobile{padding:2px 8px 2px 6px;font-size:11px}.map-color-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.map-overlay-legend{z-index:10;flex-direction:column;gap:3px;display:flex;position:absolute;bottom:16px;left:10px}.map-legend-chip{color:var(--color-text-secondary,#5a6b5e);white-space:nowrap;-webkit-backdrop-filter:blur(12px);background:#ffffffe0;border-radius:10px;align-items:center;gap:4px;padding:3px 8px;font-size:10px;font-weight:600;display:inline-flex;box-shadow:0 1px 6px #1b2b1e1a}.map-toolbar{z-index:10;flex-direction:column;gap:6px;display:flex;position:absolute;top:12px;left:12px}.map-toolbar-row{flex-wrap:wrap;gap:6px;display:flex}.map-toolbar .ant-btn-default{-webkit-backdrop-filter:blur(12px);border-color:var(--color-border,#e2e8e3);background:#ffffffeb;box-shadow:0 2px 8px #1b2b1e14}.map-toolbar .ant-btn-default:hover{background:#fff}.map-toolbar .ant-btn-default:disabled{border-color:var(--color-border,#e2e8e3);color:#00000040;background:#ffffffbf}.map-toolbar .ant-btn-primary:disabled{color:#ffffffb3;background:#97c25566;border-color:#0000}.map-zoom-controls{z-index:10;flex-direction:column;gap:4px;display:flex;position:absolute;bottom:16px;right:16px}.map-zoom-btn{border:1px solid var(--color-border,#e2e8e3);-webkit-backdrop-filter:blur(12px);cursor:pointer;width:40px;height:40px;color:var(--color-text,#1b2b1e);background:#ffffffeb;border-radius:12px;justify-content:center;align-items:center;font-size:18px;font-weight:500;transition:background .15s,transform .1s;display:flex;box-shadow:0 2px 10px #1b2b1e1a}.map-zoom-btn:hover{background:#fff}.map-zoom-btn:active{background:var(--color-bg-elevated,#f3f5f3);transform:scale(.93)}.map-tooltip{pointer-events:none;z-index:20;-webkit-backdrop-filter:blur(16px);background:#fffffff5;border:1px solid #97c2551a;border-radius:16px;min-width:200px;max-width:280px;margin-top:-12px;padding:14px 16px;position:absolute;transform:translate(-50%,-100%);box-shadow:0 8px 32px #1b2b1e24}.map-tooltip__number{color:var(--color-text,#1b2b1e);align-items:center;gap:6px;margin-bottom:8px;font-size:15px;font-weight:700;display:flex}.map-tooltip__number:before{content:"";background:var(--color-primary,#97c255);border-radius:50%;width:8px;height:8px}.map-tooltip__resident{align-items:center;gap:10px;padding:4px 0;display:flex}.map-tooltip__avatar{object-fit:cover;background:#97c25514;border-radius:50%;flex-shrink:0;width:32px;height:32px}.map-tooltip__avatar--placeholder{color:var(--color-text-tertiary,#94a397);justify-content:center;align-items:center;font-size:14px;display:flex}.map-tooltip__name{color:var(--color-text,#1b2b1e);font-size:13px;font-weight:600}.map-tooltip__phone{color:var(--color-text-tertiary,#94a397);font-size:12px}.map-tooltip__empty{color:var(--color-text-tertiary,#94a397);font-size:13px}.map-empty{color:var(--color-text-tertiary,#94a397);pointer-events:none;z-index:5;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.map-empty__icon{opacity:.35;color:var(--color-primary,#97c255);font-size:52px}.map-empty__text{color:var(--color-text-secondary,#5a6b5e);font-size:16px;font-weight:600}.map-vertex{cursor:pointer}.map-plot{transition:opacity .15s}.map-plot:hover{opacity:.85}.map-plot--selected{stroke-dasharray:6 3;animation:.4s linear infinite dash-march}@keyframes dash-march{to{stroke-dashoffset:-9px}}.map-color-picker{flex-direction:column;gap:6px;display:flex}.map-color-swatch-label{cursor:pointer;border:2px solid var(--color-border,#e2e8e3);color:var(--color-text,#1b2b1e);border-radius:12px;align-items:center;gap:10px;padding:10px 14px;font-size:14px;font-weight:500;transition:border-color .15s,background .15s;display:flex}.map-color-swatch-label:hover{background:var(--color-bg-elevated,#f3f5f3)}.map-color-swatch-label--active{border-color:var(--color-primary,#97c255);background:#97c2550f}
