*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:Inter,system-ui,sans-serif;background:#f1f5f9;color:#0f172a;-webkit-font-smoothing:antialiased}button,input,textarea,select{font-family:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #2563eb;outline-offset:2px}.leaflet-container{width:100%;height:100%;border-radius:12px;z-index:0}.scroll{-webkit-overflow-scrolling:touch}.scroll::-webkit-scrollbar{width:6px}.scroll::-webkit-scrollbar-thumb{background:#e2e8f0;border-radius:4px}.portal-shell{width:100%;margin:0 auto;padding:0 14px 24px}.portal-main-grid{display:flex;flex-direction:column;gap:14px}.portal-header{position:relative}.portal-overflow-menu{position:absolute;top:60px;right:0;min-width:190px;padding:6px;border:1px solid #e2e8f0;border-radius:10px;background:#fff;z-index:20}.portal-overflow-menu a,.portal-overflow-menu button{display:flex;width:100%;min-height:48px;align-items:center;padding:10px 12px;border:0;border-radius:8px;background:transparent;color:#0f172a;font-size:14px;font-weight:600;text-align:left;text-decoration:none}.portal-map-col{order:1}.portal-left-col{order:2}.portal-left-col{display:flex;flex-direction:column;gap:14px;min-width:0}.portal-appointments-section{order:1}.portal-tasks-section{order:2}.portal-today-section{order:3}.portal-metrics-section{order:4}.portal-overdue-preview{display:none}.kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.portal-map-wrap{height:56dvh;min-height:330px;max-height:590px;border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}.portal-map-section{padding-bottom:8px!important}.start-point-row{display:flex;width:100%;min-height:48px;align-items:center;gap:8px;margin-top:6px;padding:8px 4px;border:0;background:transparent;color:#2563eb;font-size:13px;font-weight:600;text-align:left}.start-point-row span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-mobile-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:8px;overflow:hidden;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.portal-mobile-status>*{display:flex;min-width:0;min-height:58px;flex-direction:column;justify-content:center;padding:7px 8px;border:0;border-right:1px solid #e2e8f0;background:#fff;color:#0f172a;text-align:left}.portal-mobile-status>*:last-child{border-right:0}.portal-mobile-status strong{color:#2563eb;font-size:15px}.portal-mobile-status span{overflow:hidden;color:#64748b;font-size:12px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.period-switch{display:flex;gap:2px;padding:3px;border:1px solid #e2e8f0;border-radius:9px;background:#f8fafc}.period-switch button{min-height:36px;padding:6px 9px;border:0;border-radius:7px;background:transparent;color:#64748b;font-size:12px;font-weight:600}.period-switch button.active{background:#2563eb;color:#fff}.portal-desktop-only{display:none}.portal-appointment-row{flex-wrap:wrap}.portal-appointment-row>span{align-self:flex-start;padding-top:10px}.portal-appointment-row>button:nth-of-type(1){min-width:calc(100% - 56px)}.portal-appointment-actions{display:flex;width:calc(100% - 54px);flex-wrap:wrap;gap:6px;margin-left:54px}.portal-appointment-actions button{flex:1}@media(min-width:640px){.portal-shell{padding:0 20px 28px}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:10px}.portal-map-wrap{height:58dvh;min-height:280px;max-height:620px}}@media(min-width:1024px){.portal-shell{padding:0 24px 32px;max-width:1440px}.portal-main-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(400px,1fr);gap:20px;align-items:start}.portal-left-col{order:1;grid-column:1}.portal-map-col{order:2;grid-column:2;grid-row:1;position:sticky;top:72px}.portal-metrics-section{order:1}.portal-appointments-section{order:2}.portal-tasks-section{order:3}.portal-today-section{order:4}.portal-overdue-preview{display:block;order:5}.portal-mobile-status{display:none}.portal-desktop-only{display:block}.portal-appointment-row{flex-wrap:nowrap}.portal-appointment-row>button:nth-of-type(1){min-width:0}.portal-appointment-actions{width:auto;margin-left:0}.portal-map-wrap{height:min(75vh,680px);min-height:460px;max-height:none}}@media(min-width:1400px){.portal-main-grid{grid-template-columns:minmax(0,1.25fr) minmax(480px,1fr);gap:24px}}
